diff options
author | Yuchen Pei <hi@ypei.me> | 2021-10-14 15:16:42 +1100 |
---|---|---|
committer | Yuchen Pei <hi@ypei.me> | 2021-10-14 15:16:42 +1100 |
commit | 07f5140771388c9e0c8a99b0dd2e5d950bdb173b (patch) | |
tree | 323c00faef1edc7dea2e88ff581cc2258b2b6432 /h-source/Application/Controllers/BaseController.php | |
parent | e119be145500700f3c465e12664403a07530a421 (diff) |
moving h-source subdir out.
Diffstat (limited to 'h-source/Application/Controllers/BaseController.php')
-rw-r--r-- | h-source/Application/Controllers/BaseController.php | 303 |
1 files changed, 0 insertions, 303 deletions
diff --git a/h-source/Application/Controllers/BaseController.php b/h-source/Application/Controllers/BaseController.php deleted file mode 100644 index ac2be1f..0000000 --- a/h-source/Application/Controllers/BaseController.php +++ /dev/null @@ -1,303 +0,0 @@ -<?php - -// h-source, a web software to build a community of people that want to share their hardware information. -// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt) -// -// This file is part of h-source -// -// h-source is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// h-source is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with h-source. If not, see <http://www.gnu.org/licenses/>. - -if (!defined('EG')) die('Direct access not allowed!'); - -class BaseController extends Controller -{ - - protected $lang; - protected $islogged = 'no'; - protected $ismoderator = false; - protected $isadmin = false; - protected $querySanitized = true; - protected $token = 'token'; - protected $_updating = 'no'; - - protected $_configXml = null; - - protected $_topMenuClasses = array( - "home" => null, - "hardware" => null, - "credits" => null, - "issues" => null, - "contact" => null, - "search" => null, - "news" => null, - "download" => null, - "help" => null, - "wiki" => null, - "faq" => null, - "project" => null, - ); - - public function __construct($model, $controller, $queryString) { - parent::__construct($model, $controller, $queryString); - - header("Cache-Control: no-cache"); - - $this->model('BoxesModel'); - $this->model('HistoryModel'); - $this->model('ParamsModel'); - $this->model('UsersModel'); - - $this->load('header'); - $this->load('footer','last'); - - $this->session('registered'); - $this->s['registered']->checkStatus(); - - $data['username'] = null; - $data['user_groups'] = null; - $data['islogged'] = 'no'; - $data['token'] = 'token'; - $data['ismoderator'] = false; - $data['isadmin'] = false; - - if ($this->s['registered']->status['status'] === 'logged') - { - $data['username'] = $this->s['registered']->status['user']; - $groups = $this->s['registered']->status['groups']; - $groups[] = 'registered'; - $data['user_groups'] = implode(',',$groups); - - $data['islogged'] = 'yes'; - $this->islogged = $data['islogged']; - - $data['token'] = $this->s['registered']->status['token']; - $this->token = $data['token']; - - $data['ismoderator'] = in_array('moderator',$this->s['registered']->status['groups']) ? true : false; - $this->ismoderator = $data['ismoderator']; - - $data['isadmin'] = in_array('admin',$this->s['registered']->status['groups']) ? true : false; - $this->isadmin = $data['isadmin']; - } - - $data['lang'] = 'en'; - $this->lang = 'en'; - - if (isset($this->_queryString[0])) - { - $lang = (strcmp($this->_queryString[0],'') !== 0) ? $this->_queryString[0] : 'en'; - $data['lang'] = Lang::sanitize($lang); - $this->lang = $data['lang']; - Lang::$current = $data['lang']; - } - - $data['langIcon'] = Lang::getIcon(Lang::$current); - $data['langLabel'] = Lang::getLabel(Lang::$current); - - //set desktop or mobile version - Version::set(); - //subfolder of the Views folder where to look for view files - Params::$viewSubfolder = Version::getViewSubfolder(); - - $data['tm'] = $this->_topMenuClasses; - - $this->_queryString = $this->sanitizeQueryString($this->_queryString); - - $data['querySanitized'] = $this->querySanitized; - $data['queryString'] = Url::createUrl($this->_queryString); - - //check ft they are updating the website - $updating = $this->m['ParamsModel']->select('updating')->where(array('id_par'=>1))->toList('updating')->send(); - - $data['updating_flag'] = 'no'; - if (count($updating)>0) - { - $data['updating_flag'] = $updating[0]; - $this->_updating = $data['updating_flag']; - } - - //get the configuration xml - $xmlRes = $this->m['ParamsModel']->select('boxes_xml')->where(array('id_par'=>1))->toList('boxes_xml')->send(); - if (count($xmlRes)>0) - { - $configXml = htmlspecialchars_decode($xmlRes[0],ENT_QUOTES); - - if (Website::$useXmlConfigFile) - { - $xmlConfigFile = rtrim(Website::$xmlConfigFileFolder,'/') . '/config.xml'; - if (@simplexml_load_file($xmlConfigFile)) - { - $this->_configXml = simplexml_load_file($xmlConfigFile); - } - } - else - { - if (@simplexml_load_string($configXml)) - { - $this->_configXml = simplexml_load_string($configXml); - } - } - } - - //elements of the top menu from the config.xml file - //help link - $mod = new BoxParser($this->getBox(array("top_menu","help_page_link"))); - $data["topMenuHelpLink"] = $mod->modules[0]->render($this->_topMenuClasses["help"]); - //faq link - $mod = new BoxParser($this->getBox(array("top_menu","faq_link"))); - $data["topMenuFaqLink"] = $mod->modules[0]->render($this->_topMenuClasses["faq"]); - - //link to the "discover your hardware" wiki page - $data['discoverYourHardwareLink'] = $this->getModule(array('right_column','discover_your_hardware')); - - Distributions::setAllowedList(); - - $this->append($data); - } - - //get the right box from the configuration xml - protected function getBox($xmlPath,$xmlString = null) - { - if (!isset($xmlString)) - { - $xmlString = $this->_configXml; - } - - if (is_array($xmlPath)) - { - if (isset($xmlString)) - { - $tempXml = $xmlString->{$xmlPath[0]}; - if (count($xmlPath) === 1) - { - if (isset($tempXml->{$this->lang})) - { - return $tempXml->{$this->lang}->asXml(); - } - else if (isset($tempXml->{"en"})) - { - return $tempXml->{"en"}->asXml(); - } - else - { - return null; - } - } - else - { - array_shift($xmlPath); - return $this->getBox($xmlPath,$tempXml); - } - } - } - return null; - } - -// get the HTML of a module from the xml configuration string -// $xmlPath: array conitaining the path - protected function getModule($xmlPath) - { - $tracksHelpLabel = null; - $xml = $this->getBox($xmlPath); - if ($xml) - { - $box_news = new BoxParser($xml); - $tracksHelpLabel = $box_news->render(); - } - return $tracksHelpLabel; - } - - protected function right($lang = 'en') - { - $hard = new HardwareModel(); - - $data['stat'] = $hard->clear()->select('type,count(*) AS numb')->where(array('-deleted'=>'no','cleared'=>'no'))->groupBy('type')->toList('type','aggregate.numb')->send(); - - $logged = $this->s['registered']->getUsersLogged(); - - $data['numbLogged'] = count($logged); - - //render the boxes inside the right column - $data['htmlRightBox'] = $this->getModule(array('right_column')); - - $data['language_links'] = $this->buildLanguageLinks($this->lang); - - $data['lastModif'] = $this->m['HistoryModel'] - ->clear()->select() - ->inner('hardware') - ->on('hardware.id_hard=history.id') - ->where(array('type'=>'hardware','gr'=>'registered','deleted'=>'no','cleared'=>'no',)) - ->orderBy('id_history desc') - ->limit(5) - ->send(); - - $this->append($data); - $this->load('right'); - } - - protected function sanitizeQueryString($queryArray) - { - $resArray = array(); - foreach ($queryArray as $item) - { - if (preg_match('/^[a-zA-Z0-9\-\_\.\+\s]+$/',$item)) - { - $resArray[] = sanitizeAll($item); - } - else - { - $this->querySanitized = false; - return array('en'); - } - } - return $resArray; - } - - protected function buildLanguageLinks($lang) - { - $status = $this->_queryString; - $cPage = $this->querySanitized ? $this->currPage : $this->baseUrl."/home/index"; - - $mobileDataRole = Version::get() === "mobile" ? "data-role='listview'" : null; - - $link = "<ul $mobileDataRole class='languages_link_box'>\n"; - foreach (Lang::$complete as $abbr => $fullName) - { - $linkClass = (strcmp($abbr,$lang) === 0) ? "class='current_lang'" : null; - $status[0] = $abbr; - $href = Url::createUrl($status); - $fullNameArray = explode(',',$fullName); - $text = "<img class='ui-li-icon' src='".$this->baseUrl."/Public/Img/Famfamfam/".$fullNameArray[0]."'><span>".$fullNameArray[1]."</span>"; - - $mobileRel = Version::get() === "mobile" ? "rel='external'" : null; - $link .= "\t<li><a $mobileRel $linkClass href='".$cPage.$href."'>$text</a></li>\n"; - } - $link .= "</ul>\n"; - return $link; - } - - protected function cleverLoad($file) - { - $fileInt = $file."_".$this->lang; - if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . Params::$viewSubfolder . DS . ucwords($this->controller) . DS . $fileInt . '.php')) - { - $this->load($fileInt); - } - else - { - $this->load($file); - } - } - -} |