Controller.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. require_once(__DIR__ . "/config/config.php");
  3. require_once($path["util"] . "db.php");
  4. require_once($path["util"] . "text.php");
  5. require_once($path["util"] . "net.php");
  6. /**
  7. * Application controller.
  8. *
  9. * Handles every request, creating the required models and selecting the
  10. * view.
  11. */
  12. class Controller {
  13. /**
  14. * Constructor.
  15. *
  16. * Handles every request, creating the required models and selecting the
  17. * view.
  18. */
  19. public function __construct($params){
  20. global $path;
  21. global $base_url;
  22. global $url_l10n;
  23. global $static;
  24. global $static_url;
  25. global $base_dir;
  26. global $data;
  27. $page;
  28. $db = start_db();
  29. // Parse parameters, get lang and build the route.
  30. $pars = [];
  31. foreach($params as $p){
  32. if (strlen($p) > 0){
  33. array_push($pars, $p);
  34. }
  35. }
  36. $route = [];
  37. if (sizeof($pars) > 0 && preg_match("/^[a-zA-Z]{2}$/", $pars[0])){
  38. $lang = $pars[0];
  39. array_splice($pars, 0, 1);
  40. // Override global to include language in URL
  41. $base_url = get_protocol() . $_SERVER["HTTP_HOST"] . "/" . $lang;
  42. }
  43. else{
  44. $lang = select_language($db);
  45. }
  46. if (isset($url_l10n[$lang])){
  47. $url = $url_l10n[$lang];
  48. }
  49. else{
  50. $url = $url_l10n["es"];
  51. }
  52. foreach($pars as $p){
  53. array_push($route, $p);
  54. }
  55. // Select the model to load.
  56. if (sizeof($route) == 0){
  57. require_once($path["page"] . "Home_Page.php");
  58. $page = new Home_Page($db, $lang);
  59. }
  60. else{
  61. if (strtolower($route[0]) == $url["help"]){
  62. require_once($path["page"] . "Help_Page.php");
  63. $page = new Help_Page($db, $lang);
  64. }
  65. if (strtolower($route[0]) == $url["activities"]){
  66. if (sizeof($route) > 1){
  67. require_once($path["page"] . "Activity_Page.php");
  68. $page = new Activity_Page($db, $lang, $route[1]);
  69. }
  70. else{
  71. require_once($path["page"] . "Activities_Page.php");
  72. $page = new Activities_Page($db, $lang);
  73. }
  74. }
  75. if (strtolower($route[0]) == $url["blog"]){//$url->blog){
  76. if (sizeof($route) > 1){
  77. require_once($path["page"] . "Post_Page.php");
  78. $page = new Post_Page($db, $lang, $route[1]);
  79. }
  80. else{
  81. require_once($path["page"] . "Blog_Page.php");
  82. $page = new Blog_Page($db, $lang);
  83. }
  84. }
  85. if (strtolower($route[0]) == $url["us"]){
  86. require_once($path["page"] . "Us_Page.php");
  87. $page = new Us_Page($db, $lang);
  88. }
  89. if (strtolower($route[0]) == $url["gallery"]){
  90. if (sizeof($route) > 1){
  91. require_once($path["page"] . "Album_Page.php");
  92. $page = new Album_Page($db, $lang, $route[1]);
  93. }
  94. else{
  95. require_once($path["page"] . "Gallery_Page.php");
  96. $page = new Gallery_Page($db, $lang);
  97. }
  98. }
  99. if (strtolower($route[0]) == $url["festivals"]){
  100. // TODO: Manage year and subsections
  101. require_once($path["page"] . "Festivals_Page.php");
  102. $page = new Festivals_Page($db, $lang);
  103. }
  104. if (strtolower($route[0]) == $url["photo"] && sizeof($route) > 1){
  105. require_once($path["page"] . "Photo_Page.php");
  106. $page = new Photo_Page($db, $lang, $route[1]);
  107. }
  108. }
  109. // Load the view, or set an error code.
  110. if (!isset($page)){
  111. http_response_code(404);
  112. require_once($path["page"] . "Error_Page.php");
  113. $page = new Error_Page($db, $lang, 404);
  114. }
  115. require_once($page->template);
  116. }
  117. }
  118. ?>