2
0

get.class.php 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. <?php
  2. /**
  3. * Classe get
  4. *
  5. * Cette classe gère les opérations liées à la récupération de données,
  6. * y compris les pages, les soumissions, les fichiers JSON, et les données Excel.
  7. */
  8. class get
  9. {
  10. /**
  11. * Détermine l'environnement actuel (CMS ou événements).
  12. *
  13. * @return string Retourne le préfixe de l'environnement ("cms." ou "events.").
  14. */
  15. public static function environnement()
  16. {
  17. if(!isset($_SERVER['HTTP_HOST'])){
  18. return "cms.";
  19. } elseif ($_SERVER['HTTP_HOST'] == DOMAIN_CMS) {
  20. return "cms.";
  21. } elseif ($_SERVER['HTTP_HOST'] == DOMAIN_EVENTS OR $_SERVER['HTTP_HOST'] == DOMAIN_CONTROL) {
  22. return "events.";
  23. }
  24. }
  25. /**
  26. * Récupère la page par défaut en fonction du type d'utilisateur.
  27. *
  28. * @return string Retourne le nom de la page par défaut.
  29. */
  30. public static function getDefautPage(){
  31. return HOME_TYPE_USER[session::getType()]["home"];
  32. }
  33. /**
  34. * Vérifie si un menu est défini comme menu par défaut.
  35. *
  36. * @param array $_menu Tableau des menus disponibles.
  37. * @return bool Retourne TRUE si le menu est par défaut, FALSE sinon.
  38. */
  39. public static function isDefautMenu(array $_menu){
  40. return (core::ifGet("p") == FALSE AND in_array(self::getDefautPage(), $_menu)) ? TRUE : FALSE;
  41. }
  42. /**
  43. * Charge une page spécifique avec des variables optionnelles.
  44. *
  45. * @param string|null $_page Nom de la page à charger (facultatif).
  46. * @param array $vars Variables à extraire pour la page.
  47. * @return void
  48. */
  49. public static function page(?string $_page = NULL, array $vars = [])
  50. {
  51. if (isset($_page)) {
  52. $page = $_page;
  53. } elseif (core::ifGet("p")) {
  54. $page = core::getGet("p");
  55. } else {
  56. $page = self::getDefautPage();
  57. }
  58. if (access::check($page, "page") || in_array($page, WHITE_ACCESS)) {
  59. $file = DIR_PHP_VIEWS_PAGE . self::environnement() . $page . '.php';
  60. if (file_exists($file)) {
  61. extract($vars); // rend les variables disponibles dans la page
  62. include $file;
  63. } else {
  64. alert::recError("Page introuvable : " . $page);
  65. }
  66. } else {
  67. alert::recError("La page que vous tentez de charger ne vous est pas disponible.");
  68. }
  69. }
  70. /**
  71. * Traite une soumission de formulaire ou de requête.
  72. *
  73. * @return void
  74. */
  75. public static function submit()
  76. {
  77. if (core::ifPost("from")) {
  78. $submit = core::getPost("from");
  79. } elseif (core::ifGet("from")) {
  80. $submit = core::getGet("from");
  81. } else {
  82. alert::recError("Submit introuvable #1");
  83. header("Location: /");
  84. exit();
  85. }
  86. if (access::ifAccesss($submit)) {
  87. if (file_exists(DIR_PHP_SUBMIT . self::environnement() . $submit . '.php')) {
  88. require_once DIR_PHP_SUBMIT . self::environnement() . $submit . '.php';
  89. } else {
  90. alert::recError("Submit introuvable #2");
  91. header("Location: /");
  92. exit();
  93. }
  94. }
  95. }
  96. /**
  97. * Inclut un fichier JavaScript spécifique à l'environnement.
  98. *
  99. * @param string $_string Nom du fichier JavaScript.
  100. * @return void
  101. */
  102. public static function javascript(string $_string){
  103. if (file_exists(DIR_PHP_JAVASCRIPT . self::environnement() . $_string . '.php')) {
  104. include DIR_PHP_JAVASCRIPT . self::environnement() . $_string . '.php';
  105. }
  106. }
  107. /**
  108. * Charge un fichier JSON spécifique.
  109. *
  110. * @return void
  111. */
  112. public static function json()
  113. {
  114. if (core::ifGet("file")) {
  115. if (access::check(core::getGet("file"), "json")) {
  116. // Exception
  117. if(core::getGet("file") == "documents" AND access::ifLimitAccessException("salaire")){
  118. $file = "documents-limited";
  119. } else {
  120. $file = core::getGet("file");
  121. }
  122. // Exception
  123. if (file_exists(DIR_DATAS_JSON . $file . '.json')) {
  124. require_once DIR_DATAS_JSON . $file . '.json';
  125. exit();
  126. } else {
  127. echo json_encode("['No found']");
  128. exit();
  129. }
  130. } else {
  131. header('HTTP/1.0 401 Unauthorized');
  132. exit();
  133. }
  134. }
  135. }
  136. /**
  137. * Charge un fichier JSONData spécifique.
  138. *
  139. * @return void
  140. */
  141. public static function jsonData()
  142. {
  143. if (core::ifGet("jsonData")) {
  144. if (access::check(core::getGet("jsonData"), "json") == TRUE) {
  145. if (file_exists(DIR_DATAS_JSONDATA . self::environnement() . core::getGet("jsonData") . '.php')) {
  146. require_once DIR_DATAS_JSONDATA . self::environnement() . core::getGet("jsonData") . '.php';
  147. exit();
  148. } else {
  149. exit();
  150. }
  151. } else {
  152. header('HTTP/1.0 401 Unauthorized');
  153. exit();
  154. }
  155. }
  156. }
  157. /**
  158. * Récupère la dernière date des données Excel.
  159. *
  160. * @return string|null Retourne la date des données ou NULL si aucune donnée n'est trouvée.
  161. */
  162. public static function jsonDateDataExcel()
  163. {
  164. db::query("SELECT dateData FROM " . DB_T_EXCEL . " ORDER BY id DESC LIMIT 0, 1");
  165. $data = db::single();
  166. return (isset($data["dateData"])) ? $data["dateData"] : NULL;
  167. }
  168. /**
  169. * Récupère la dernière date des données Excel Proweb.
  170. *
  171. * @return string|null Retourne la date des données ou NULL si aucune donnée n'est trouvée.
  172. */
  173. public static function jsonDateDataExcelProweb()
  174. {
  175. db::query("SELECT dateData FROM " . DB_T_EXCEL_PROWEB . " ORDER BY id DESC LIMIT 0, 1");
  176. $data = db::single();
  177. return (isset($data["dateData"])) ? $data["dateData"] : NULL;
  178. }
  179. /**
  180. * Récupère la dernière date des données Excel Proweb Dossiers.
  181. *
  182. * @return string|null Retourne la date des données ou NULL si aucune donnée n'est trouvée.
  183. */
  184. public static function jsonDateDataExcelProwebDossiers()
  185. {
  186. db::query("SELECT dateData FROM " . DB_T_EXCEL_PROWEB_DOSSIERS . " ORDER BY id DESC LIMIT 0, 1");
  187. $data = db::single();
  188. return (isset($data["dateData"])) ? $data["dateData"] : NULL;
  189. }
  190. /**
  191. * Sépare une chaîne de caractères en identifiant de page et identifiant numérique.
  192. *
  193. * @param string|null $_page Chaîne à analyser.
  194. * @return array Retourne un tableau contenant la page et l'identifiant.
  195. */
  196. public static function splitIdPage($_page = NULL)
  197. {
  198. $return = array(
  199. "page" => NULL,
  200. "id" => NULL,
  201. );
  202. $split = explode("-", $_page);
  203. foreach ($split as $val) {
  204. if (is_numeric($val)) {
  205. $return["id"] = $val;
  206. } else {
  207. $return["page"] .= $val . "-";
  208. }
  209. }
  210. $return["page"] = substr($return["page"], 0, -1);
  211. return $return;
  212. }
  213. /**
  214. * Vérifie si une page est la page active.
  215. *
  216. * @param string|null $_page Nom de la page à vérifier.
  217. * @return string Retourne " active" si la page est active, sinon une chaîne vide.
  218. */
  219. public static function currentPage($_page = NULL)
  220. {
  221. if($_page != NULL){
  222. $page = self::splitIdPage($_page);
  223. } else {
  224. $page = NULL;
  225. }
  226. if (core::getGet("id") == $page["id"] AND core::getGet("p") == $page["page"]) {
  227. return " active";
  228. } elseif (core::getGet("p") == $_page) {
  229. return " active";
  230. } elseif (core::getGet("p") == $_page) {
  231. return " active";
  232. } elseif (self::getDefautPage() == $_page AND core::getGet("p") == $_page) {
  233. return " active";
  234. } elseif (self::getDefautPage() == $_page AND core::getGet("p") == "") {
  235. return " active";
  236. }
  237. }
  238. }