Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- *
- * Hlavní kontroler komponenty "presentation"
- *
- * @author Michal Šmahel (ceskyDJ) <admin@ceskydj.cz>
- * @copyright (C) 2017-Současnost, Michal ŠMAHEL, Vladislav Domin
- *
- */
- class PresentationComponentController extends PresentationController
- {
- /**
- * @var PresentationController Instance kontroleru
- */
- public $contentController;
- /**
- * @var array Povolené jazyky
- */
- private $languages = [];
- /**
- * Výchozí jazyk
- */
- const DEFAULT_LANG = "sk";
- /**
- * Hlavní metoda pro zpracování parametrů a řízení dění
- *
- * @param array $params Parametry
- */
- public function process($params) {
- // Aktuálna hodnota jazyka
- $language = "";
- $this->languages = $this->getLanguages();
- // Pokud je jazyk validní
- if((!empty($params[0])) && ($this->isLang($params[0]))) {
- $language = mb_strtolower(array_shift($params));
- }
- else {
- if($this->isLang($_SESSION['lang']))
- $language = $_SESSION['lang'];
- else {
- if($this->isLang($_COOKIE['lang']))
- $language = $_COOKIE['lang'];
- else
- $language = self::DEFAULT_LANG;
- }
- }
- // Ak nie je nastavený SESSION alebo sa nezhoduje s aktuálnym jazykom
- if((!isset($_SESSION['lang']) || ($_SESSION['lang'] != $language)))
- $_SESSION['lang'] = $language;
- // Ak nie je nastavené COOKIES alebo sa nezhoduje s aktuálnym jazykom
- if((!isset($_COOKIE['lang']) || ($_COOKIE['lang'] != $language)))
- $_COOKIE['lang'] = $language;
- // Není určen žádný parametr
- if(empty($params[0]))
- // Přejít na domovskou stránku
- $this->route("home");
- // Název třídy pro obsahový kontroler
- $controllerClassName = $this->dashesToCamelCase(array_shift($params));
- $controllerClassName = $controllerClassName . "Controller";
- // Obsahový kontroler existuje
- if(file_exists($this->getDirectory() . "/controllers/" . $controllerClassName . ".php"))
- // Inicializovat ho
- $this->contentController = new $controllerClassName();
- else
- // Přesměrovat na chybovou stránku 404
- $this->route("error/404"); //
- // Zavolání metody pro zpracování u obsahového kontroleru
- $this->contentController->process($params);
- // Předání obecných dat a dat hlavičky
- $this->data = $this->contentController->data;
- $this->data['faq'] = DB::queryAll('SELECT * FROM `faq` WHERE `lang` = ?', $_SESSION['lang']);
- $num_users = DB::queryOne('SELECT COUNT(*) FROM `users`');
- $this->data['num_users'] = $num_users['COUNT(*)'];
- $num_gameservers = DB::queryOne('SELECT COUNT(*) FROM `servers` WHERE `game_id` != 1');
- $this->data['num_gameservers'] = $num_gameservers['COUNT(*)'];
- $num_voiceservers = DB::queryOne('SELECT COUNT(*) FROM `servers` WHERE `game_id` = 1');
- $this->data['num_voiceservers'] = $num_voiceservers['COUNT(*)'];
- $this->data['top_games'] = DB::queryAll('SELECT * FROM `games` WHERE `popular` = 1 LIMIT 4');
- $l = new LanguageChanger();
- $this->data['allowed_languages'] = $l->getAllowedLanguages();
- $this->data['intro'] = DB::queryOne('SELECT * FROM `intro` WHERE `show` = ? AND `lang` = ? LIMIT 1', 1, $_SESSION['lang']);
- $this->head = $this->contentController->head;
- // Nastavení pohledů
- $this->mainView = "layout";
- $this->contentView = $this->contentController->contentView;
- }
- /**
- * Převede řetězec se slovy oddělenými pomlčkami na řetezec s velbloudí notací
- *
- * @param $text string Vstupní řetězec (s pomlčkami)
- * @return string Výstupní řětězec (velbloudí notace)
- */
- protected function dashesToCamelCase($text) {
- // Pomlčky na mezery
- $sentence = str_replace('-', ' ', $text);
- // Každé slovo na začátku velké písmeno
- $sentence = ucwords($sentence);
- // Odstranění mezer
- $sentence = str_replace(' ', '', $sentence);
- return $sentence;
- }
- /**
- * Ověří, zda je jazyk validní
- *
- * @param $lang string Jazyk
- * @return bool Je jazyk validní?
- */
- private function isLang($lang) {
- // Nachádza sa jazyk medzi povolenými jazykmi?
- return in_array(mb_strtolower($lang), $this->languages);
- }
- private function getLanguages() {
- $l = new LanguageChanger();
- return $l->getAllowedLanguages();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement