Advertisement
SUNSPINX

Untitled

Aug 16th, 2017
470
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.75 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4. *
  5. * Hlavní kontroler komponenty "presentation"
  6. *
  7. * @author Michal Šmahel (ceskyDJ) <admin@ceskydj.cz>
  8. * @copyright (C) 2017-Současnost, Michal ŠMAHEL, Vladislav Domin
  9. *
  10. */
  11. class PresentationComponentController extends PresentationController
  12. {
  13. /**
  14. * @var PresentationController Instance kontroleru
  15. */
  16. public $contentController;
  17.  
  18. /**
  19. * @var array Povolené jazyky
  20. */
  21. private $languages = [];
  22.  
  23. /**
  24. * Výchozí jazyk
  25. */
  26. const DEFAULT_LANG = "sk";
  27.  
  28.  
  29. /**
  30. * Hlavní metoda pro zpracování parametrů a řízení dění
  31. *
  32. * @param array $params Parametry
  33. */
  34. public function process($params) {
  35. // Aktuálna hodnota jazyka
  36. $language = "";
  37.  
  38. $this->languages = $this->getLanguages();
  39.  
  40. // Pokud je jazyk validní
  41. if((!empty($params[0])) && ($this->isLang($params[0]))) {
  42. $language = mb_strtolower(array_shift($params));
  43. }
  44. else {
  45. if($this->isLang($_SESSION['lang']))
  46. $language = $_SESSION['lang'];
  47. else {
  48. if($this->isLang($_COOKIE['lang']))
  49. $language = $_COOKIE['lang'];
  50. else
  51. $language = self::DEFAULT_LANG;
  52. }
  53. }
  54.  
  55. // Ak nie je nastavený SESSION alebo sa nezhoduje s aktuálnym jazykom
  56. if((!isset($_SESSION['lang']) || ($_SESSION['lang'] != $language)))
  57. $_SESSION['lang'] = $language;
  58.  
  59. // Ak nie je nastavené COOKIES alebo sa nezhoduje s aktuálnym jazykom
  60. if((!isset($_COOKIE['lang']) || ($_COOKIE['lang'] != $language)))
  61. $_COOKIE['lang'] = $language;
  62.  
  63. // Není určen žádný parametr
  64. if(empty($params[0]))
  65. // Přejít na domovskou stránku
  66. $this->route("home");
  67.  
  68. // Název třídy pro obsahový kontroler
  69. $controllerClassName = $this->dashesToCamelCase(array_shift($params));
  70. $controllerClassName = $controllerClassName . "Controller";
  71.  
  72. // Obsahový kontroler existuje
  73. if(file_exists($this->getDirectory() . "/controllers/" . $controllerClassName . ".php"))
  74. // Inicializovat ho
  75. $this->contentController = new $controllerClassName();
  76. else
  77. // Přesměrovat na chybovou stránku 404
  78. $this->route("error/404"); //
  79.  
  80. // Zavolání metody pro zpracování u obsahového kontroleru
  81. $this->contentController->process($params);
  82.  
  83. // Předání obecných dat a dat hlavičky
  84. $this->data = $this->contentController->data;
  85. $this->data['faq'] = DB::queryAll('SELECT * FROM `faq` WHERE `lang` = ?', $_SESSION['lang']);
  86. $num_users = DB::queryOne('SELECT COUNT(*) FROM `users`');
  87. $this->data['num_users'] = $num_users['COUNT(*)'];
  88. $num_gameservers = DB::queryOne('SELECT COUNT(*) FROM `servers` WHERE `game_id` != 1');
  89. $this->data['num_gameservers'] = $num_gameservers['COUNT(*)'];
  90. $num_voiceservers = DB::queryOne('SELECT COUNT(*) FROM `servers` WHERE `game_id` = 1');
  91. $this->data['num_voiceservers'] = $num_voiceservers['COUNT(*)'];
  92. $this->data['top_games'] = DB::queryAll('SELECT * FROM `games` WHERE `popular` = 1 LIMIT 4');
  93. $l = new LanguageChanger();
  94. $this->data['allowed_languages'] = $l->getAllowedLanguages();
  95. $this->data['intro'] = DB::queryOne('SELECT * FROM `intro` WHERE `show` = ? AND `lang` = ? LIMIT 1', 1, $_SESSION['lang']);
  96. $this->head = $this->contentController->head;
  97.  
  98. // Nastavení pohledů
  99. $this->mainView = "layout";
  100. $this->contentView = $this->contentController->contentView;
  101. }
  102.  
  103. /**
  104. * Převede řetězec se slovy oddělenými pomlčkami na řetezec s velbloudí notací
  105. *
  106. * @param $text string Vstupní řetězec (s pomlčkami)
  107. * @return string Výstupní řětězec (velbloudí notace)
  108. */
  109. protected function dashesToCamelCase($text) {
  110. // Pomlčky na mezery
  111. $sentence = str_replace('-', ' ', $text);
  112. // Každé slovo na začátku velké písmeno
  113. $sentence = ucwords($sentence);
  114. // Odstranění mezer
  115. $sentence = str_replace(' ', '', $sentence);
  116.  
  117. return $sentence;
  118. }
  119.  
  120. /**
  121. * Ověří, zda je jazyk validní
  122. *
  123. * @param $lang string Jazyk
  124. * @return bool Je jazyk validní?
  125. */
  126. private function isLang($lang) {
  127. // Nachádza sa jazyk medzi povolenými jazykmi?
  128. return in_array(mb_strtolower($lang), $this->languages);
  129. }
  130.  
  131. private function getLanguages() {
  132. $l = new LanguageChanger();
  133. return $l->getAllowedLanguages();
  134. }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement