| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- /**
- * Classe pwa
- *
- * Cette classe gère les fonctionnalités liées aux Progressive Web Apps (PWA), telles que le service worker et le manifeste.
- */
- class pwa
- {
- /**
- * @var string Nom du fichier du service worker.
- */
- private static $serviceWorker = "serviceWorker.js";
- /**
- * Récupère le fichier manifeste approprié en fonction du domaine.
- *
- * @return string Nom du fichier manifeste.
- */
- private static function getManifeste()
- {
- if (!empty($_SERVER['HTTP_HOST'])) {
- switch ($_SERVER['HTTP_HOST']) {
- case DOMAIN_CONTROL:
- return "manifest-control.json";
- break;
- case DOMAIN_EVENTS:
- return "manifest-events.json";
- break;
- case DOMAIN_CMS:
- return "manifest-cms.json";
- break;
- }
- } else {
- return "manifest-cms.json";
- }
- }
- /**
- * Affiche le script pour enregistrer ou désenregistrer le service worker.
- */
- public static function printServiceWorker()
- {
- // Récupérer le nonce CSP si disponible
- $nonce = '';
- if (class_exists('securityHeaders') && method_exists('securityHeaders', 'getNonce')) {
- $nonce = ' nonce="' . securityHeaders::getNonce() . '"';
- }
- echo '<script' . $nonce . '>';
- if (PWA == 1) {
- echo ' if("serviceWorker" in navigator){
- navigator.serviceWorker.register("/' . self::$serviceWorker . '");
- }';
- } else {
- echo ' navigator.serviceWorker.getRegistrations().then(function(registrations) {
- for(let registration of registrations) {
- registration.unregister();
- }
- });';
- }
- echo '</script>';
- }
- /**
- * Affiche le lien vers le fichier manifeste dans le HTML.
- */
- public static function printManifeste()
- {
- if (PWA == 1) {
- echo '<link rel="manifest" href="' . self::getManifeste() . '">';
- }
- }
- }
|