pwa.class.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. /**
  3. * Classe pwa
  4. *
  5. * Cette classe gère les fonctionnalités liées aux Progressive Web Apps (PWA), telles que le service worker et le manifeste.
  6. */
  7. class pwa
  8. {
  9. /**
  10. * @var string Nom du fichier du service worker.
  11. */
  12. private static $serviceWorker = "serviceWorker.js";
  13. /**
  14. * Récupère le fichier manifeste approprié en fonction du domaine.
  15. *
  16. * @return string Nom du fichier manifeste.
  17. */
  18. private static function getManifeste()
  19. {
  20. if(!empty($_SERVER['HTTP_HOST'])){
  21. switch ($_SERVER['HTTP_HOST']) {
  22. case DOMAIN_CONTROL:
  23. return "manifest-control.json";
  24. break;
  25. case DOMAIN_EVENTS:
  26. return "manifest-events.json";
  27. break;
  28. case DOMAIN_CMS:
  29. return "manifest-cms.json";
  30. break;
  31. }
  32. } else {
  33. return "manifest-cms.json";
  34. }
  35. }
  36. /**
  37. * Affiche le script pour enregistrer ou désenregistrer le service worker.
  38. */
  39. public static function printServiceWorker()
  40. {
  41. echo '<script>';
  42. if (PWA == 1) {
  43. echo ' if("serviceWorker" in navigator){
  44. navigator.serviceWorker.register("/' . self::$serviceWorker . '");
  45. }';
  46. } else {
  47. echo ' navigator.serviceWorker.getRegistrations().then(function(registrations) {
  48. for(let registration of registrations) {
  49. registration.unregister();
  50. }
  51. });';
  52. }
  53. echo '</script>';
  54. }
  55. /**
  56. * Affiche le lien vers le fichier manifeste dans le HTML.
  57. */
  58. public static function printManifeste()
  59. {
  60. if (PWA == 1) {
  61. echo '<link rel="manifest" href="' . self::getManifeste() . '">';
  62. }
  63. }
  64. }