printPaper.class.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. /**
  3. * Classe printPaper
  4. *
  5. * Cette classe gère l'affichage et l'impression de documents, notamment les QR codes pour les événements.
  6. */
  7. class printPaper
  8. {
  9. /**
  10. * Gère l'affichage en fonction de la page et de l'identifiant donnés.
  11. *
  12. * @param string $_page La page à afficher.
  13. * @param int $_id L'identifiant associé à la page.
  14. */
  15. public static function switch(string $_page, int $_id){
  16. switch ($_page) {
  17. case 'qrcode-event':
  18. self::qrcodeEmargement($_id);
  19. break;
  20. default:
  21. echo NULL;
  22. break;
  23. }
  24. }
  25. /**
  26. * Recherche un élément spécifique dans une page.
  27. *
  28. * @param string $_element L'élément à rechercher.
  29. * @return string Le modèle de l'élément recherché.
  30. */
  31. private static function searchElementPage(string $_element){
  32. return "{{" . $_element . "}}";
  33. }
  34. /**
  35. * Affiche une page avec des éléments remplacés par des valeurs données.
  36. *
  37. * @param string $_page Le nom de la page à afficher.
  38. * @param array $_search Les éléments à rechercher dans la page.
  39. * @param array $_replace Les valeurs de remplacement pour les éléments.
  40. */
  41. private static function show(string $_page, array $_search, array $_replace){
  42. $template = DIR_PRINT . "cms." . $_page . ".html";
  43. if(file_exists($template)){
  44. $pageEmpty = file_get_contents($template);
  45. $pageCompleted = $pageEmpty;
  46. echo str_replace($_search, $_replace, $pageCompleted);
  47. } else {
  48. return NULL;
  49. }
  50. }
  51. /**
  52. * Affiche un QR code pour l'émargement d'un événement donné.
  53. *
  54. * @param int $_idEvent L'identifiant de l'événement.
  55. */
  56. private static function qrcodeEmargement(int $_idEvent){
  57. $event = event::getFiche($_idEvent);
  58. if($event["actif"] == 0){
  59. $alert = '<div class="alert alert-danger" role="alert">Cet évènement est désactivé et non visible des salariés.</div>';
  60. } else {
  61. $alert = "";
  62. }
  63. if($event["type_inscription"] == 0){
  64. $note = '<div class="alert alert-success" role="alert">Evènement sans inscription.</div>';
  65. } else {
  66. $note = '<div class="alert alert-warning" role="alert">Préinscription obligatoire</div>';
  67. }
  68. $explication = "Pour vous émarger, il vous faut scanner ce QRCode ou vous rendre sur <span style='font-weight : bold;'>https://" . DOMAIN_EVENTS . "</span> dans le navigateur de votre mobile.<br />";
  69. $explication .= "Une fois sur l'app mobile, il vous faut renseigner votre <span style='font-weight : bold;'>matricule Capgemini</span> <span style='font-style: italic;'>(composé de chiffres et présent sur votre fiche paie)</span> ou votre <span style='font-weight : bold;'>identifiant Capgemini</span> <span style='font-style: italic;'>(qui est généralement la première lettre de votre prénom suivi de votre nom)</span> et votre <span style='font-weight : bold;'>date de naissance</span> <span style='font-style: italic;'>(celle renseignée sur le site du CSE)</span>.<br />";
  70. $explication .= "Une fois connecté, il vous suffira de cliquer sur la tuile correspondante à l'évènement <span style='font-style: italic;'>(la première fois, il vous faudra accepter les droits d'accès à votre caméra)</span> et de scanner ce QRcode.<br />";
  71. if($event["type_inscription"] == 0) { $explication .= "Cet évènement est accessible à tous les salariés."; }
  72. else { $explication .= "Important, cet évènement est seulement accessible aux salariés qui se sont préinscrits."; }
  73. $search = array(
  74. self::searchElementPage("TITRE"),
  75. self::searchElementPage("PERIODE"),
  76. self::searchElementPage("QRCODE"),
  77. self::searchElementPage("EXPLICATION"),
  78. self::searchElementPage("NOTE"),
  79. self::searchElementPage("ALERTE")
  80. );
  81. $replace = array(
  82. $event["titre"], // TITRE
  83. "du " . core::convertDate($event["startDate"]) . " au " . core::convertDate($event["endDate"]), // PERIODE
  84. event::getQRCode($event["id"], "300"), // QRCODE
  85. $explication, // EXPLICATION
  86. $note, // NOTE
  87. $alert // ALERTE
  88. );
  89. self::show("qrcode-event", $search, $replace);
  90. }
  91. }