/** * Konsolidering av sidfunktioner, för "gui-templates" * * @package Layout */ namespace System; /** * Detta är en klass för att samla ihop de gemensamma delarna som qnuts gui-sidor har. * Bland annat fungerar den som wrapper för login och accessrättigheter. */ class Page { /** @var object Access */ private $access; /** @var object Menu */ private $menu; /** @var object User */ private $user; private $_config; private $_document_root; private $_logged_in_userid = 0; private $_menuid; private $_language; private $_country; private $_page_title; /** * Skapa ett nytt Page-objekt. * * @param int $menuid */ public function __construct($menuid, $language, $country){ $this->_language = $language; $this->_country = $country; $this->logger = \Logger::getLogger(__CLASS__); $this->logger->debug("incoming l&c: ".$this->_language." - ".$this->_country); $this->logger->debug($_SESSION); //Verifierar användarens session och hänvisar till inloggningssidan om användaren inte är inloggad $this->session = new \System\Session(); if(!$this->user = $this->session->verifySession()){ //print_r($_SESSION); $page = "/".$this->_language."-".$this->_country."/login".\System\Toolbox::stripLocaleFromUrl($_SERVER['REQUEST_URI']); $this->logger->debug("page: $page"); header("Location: ".$page); exit; } //Hämtar menyn $this->_menuid = $menuid; $this->menu = new \System\Menu($this->_language, $this->_country); //Har användaren rätt att se sidan? $this->access = new \System\Access(); $system_access_objectid = $this->menu->getObjectIdFromMenuItemId($menuid); $this->checkUserHasAccessRights($system_access_objectid); //Sätter default värdet för titeln på sidan $this->_page_title = $this->menu->getMenuTitle($menuid); } public function getBackUrl($special_back_url=null){ $back_url = $this->menu->getDefaultBackUrl($this->_menuid); if($this->menu->allowDynamicBackUrl($this->_menuid)){ if(isset($special_back_url)){ return $special_back_url; }elseif(preg_match("/eco\/([a-z\-]{5,6})([a-z0-9\/\-]{1,})/", $_SERVER['HTTP_REFERER'], $match)){ return $match[2]; } } /* Minns inte om detta används, får vänta lite och se om det dyker upp så får jag se om jag kan lösa det då //Populerar variabler i en URL if(is_array($url_params)){ foreach($url_params as $var => $value){ $back_url = str_replace('{'.$var.'}', $value, $back_url); } }*/ return $back_url; } /** * Returnerar den inloggade användaren * * @return int användarens uid */ function getUser(){ return array( "userid" => $this->user->userid, "first_name" => $this->user->first_name, "last_name" => $this->user->last_name, "email" => $this->user->email, "countryid" => $this->user->countryid, "co2" => $this->user->co2, "points" => $this->user->points, "email_accepted" => $this->user->email_accepted, "email_weekly_report" => $this->user->email_weekly_report ); } /** * Garanterar att användaren har tillåtelse att ladda sidan. * * Om användaren inte har rättigheter att se sidan så skickas hen vidare till login. */ private function checkUserHasAccessRights($objectid){ $has_access = $this->access->requireAccessById($objectid, $this->user->userid); if($has_access == false){ header("Location: /".$this->_language."-".$this->_country."/login"); exit(); } } /** * Hämtar ett Access-objekt, använd på sidor för att undvika dubbelinstansiering. * * @return Access ett Access-objekt */ public function getAccessReference(){ return $this->access; } /** * Hämta ett Menu-objekt, att användas på sidor för att undvika dubbelinstansiering. * * @return Menu ett Menu-objekt */ public function getMenuReference(){ return $this->menu; } /** * Hämta sidans titel. * * @return string */ public function getTitle(){ return $this->_page_title; } /** * Sätt en titel på sidan. * * @param string $page_title */ public function setTitle($page_title){ $this->_page_title = $page_title; } /** * Checks for a required variable * * @param string $variabel_name * @throws Exception */ public function requiredVariable($variable_name){ if(isset($_REQUEST[$variable_name])){ return $_REQUEST[$variable_name]; }else{ throw new \Exception("Variablen ".$variable_name." (".$_REQUEST[$variable_name].") saknas, denna sida fungerar inte utan denna variabel."); } } /** * Kontrollerar om vi har fått en variabel skickad till sidan * * @param string $variabel_name * @return mixed $variable_value */ public function checkVariable($variable_name){ if(isset($_REQUEST[$variable_name])){ return $_REQUEST[$variable_name]; }else{ return false; } } /* Will be deprecated */ public function generateTemplateData($url_params=null){ //Header $return['header'] = array( 'avatar' => \Habits\Cloudinary::presetTransformation($this->user->cloudinaryid, 'avatar-left-nav'), 'avatar_md' => \Habits\Cloudinary::presetTransformation($this->user->cloudinaryid, 'avatar-md'), 'avatar_xs' => \Habits\Cloudinary::presetTransformation($this->user->cloudinaryid, 'avatar-xs'), 'co2_rounded' => \System\Toolbox::numberFormat('footprint_co2', $this->user->co2), 'back_url' => $this->getBackUrl() ); //Menu $return['menu']['primary'] = $this->menu->generateMenuSection('primary-navigation',$this->_menuid, $this->user->userid, $this->_language, $this->_country, $url_params); $return['menu']['secondary'] = $this->menu->generateMenuSection('header-navigation',$this->_menuid, $this->user->userid, $this->_language, $this->_country, $url_params); $return['menu']['parent_menuid'] = $this->menu->getParentId($this->_menuid); //User $return['user'] = $this->getUser(); //Engagement $return['user']['group'] = \Habits\UserGroup::getAll($return['user']['userid']); $return['user']['campaign'] = \Habits\UserEngagement::getAll($return['user']['userid']);; return $return; } /** * Set which engagement we are primarily showing * * @param string $entity habits|group|company|campaign * @param int $id */ public function setEngagement($entity, $id){ $_SESSION['engagement'] = [ "entity" => $entity, "id" => $id ]; } public function getEngagement(){ return $_SESSION['engagement']; } public function removeEngagement(){ unset($_SESSION['engagement']); } /* public function generateCampaignSectionData($campaignid){ $url_params['campaignid'] = $campaignid; //Header $return['header'] = array( 'avatar_xs' => \Habits\Cloudinary::presetTransformation($this->user->cloudinaryid, 'avatar-xs'), 'avatar_md' => \Habits\Cloudinary::presetTransformation($this->user->cloudinaryid, 'avatar-md'), 'avatar' => \Habits\Cloudinary::presetTransformation($this->user->cloudinaryid, 'avatar-left-nav'), 'co2_rounded' => \System\Toolbox::numberFormat('footprint_co2', $this->user->co2), 'back_url' => $this->getBackUrl() ); //Menu $return['menu']['main'] = $this->menu->generateMenuSection('campaign-main', $this->_menuid, $this->user->userid, $this->_language, $this->_country, $url_params); $return['menu']['dropdown'] = $this->menu->generateMenuSection('campaign-dropdown', $this->_menuid, $this->user->userid, $this->_language, $this->_country, $url_params); $return['menu']['parent_menu_itemid'] = $this->menu->getParentId($this->_menuid); //User $return['user'] = $this->getUser(); return $return; } public function generateCompanySectionData($companyid, $url_params=null){ $url_params['companyid'] = $companyid; //Header $return['header'] = array( 'avatar_xs' => \Habits\Cloudinary::presetTransformation($this->user->cloudinaryid, 'avatar-xs'), 'avatar_md' => \Habits\Cloudinary::presetTransformation($this->user->cloudinaryid, 'avatar-md'), 'avatar' => \Habits\Cloudinary::presetTransformation($this->user->cloudinaryid, 'avatar-left-nav'), 'co2_rounded' => \System\Toolbox::numberFormat('footprint_co2', $this->user->co2), 'back_url' => $this->getBackUrl() ); //Menu $return['menu']['main'] = $this->menu->generateMenuSection('company-main', $this->_menuid, $this->user->userid, $this->_language, $this->_country, $url_params); $return['menu']['dropdown'] = $this->menu->generateMenuSection('company-dropdown', $this->_menuid, $this->user->userid, $this->_language, $this->_country, $url_params); $return['menu']['parent_menu_itemid'] = $this->menu->getParentId($this->_menuid); //User $return['user'] = $this->getUser(); return $return; } /* Generate template data for a user section public function generateUserSectionData(){ //Header $return['header'] = array( 'avatar_xs' => \Habits\Cloudinary::presetTransformation($this->user->cloudinaryid, 'avatar-xs'), 'avatar_md' => \Habits\Cloudinary::presetTransformation($this->user->cloudinaryid, 'avatar-md'), 'avatar' => \Habits\Cloudinary::presetTransformation($this->user->cloudinaryid, 'avatar-left-nav'), 'co2_rounded' => \System\Toolbox::numberFormat('footprint_co2', $this->user->co2), 'back_url' => $this->getBackUrl() ); //Menu $return['menu']['main'] = $this->menu->generateMenuSection('user-main', $this->_menuid, $this->user->userid, $this->_language, $this->_country, $url_params); $return['menu']['dropdown'] = $this->menu->generateMenuSection('user-dropdown', $this->_menuid, $this->user->userid, $this->_language, $this->_country, $url_params); $return['menu']['parent_menu_itemid'] = $this->menu->getParentId($this->_menuid); //User $return['user'] = $this->getUser(); return $return; } */ }
An unknown error occurred while loading the page. The system stated the following:
Class "System\Page" not found
Please try one of the solutions below: