Chris
e343bb8f48
All checks were successful
Build and push / Pulling repo on server (push) Successful in 2s
149 lines
3.9 KiB
PHP
149 lines
3.9 KiB
PHP
<?php
|
|
|
|
|
|
/**
|
|
* Page is the Controller Class
|
|
* which should be extended by any page
|
|
*
|
|
* @author Christian Haschek
|
|
*/
|
|
class Page
|
|
{
|
|
protected $_controller;
|
|
protected $_action;
|
|
protected $_template;
|
|
public $variables;
|
|
public $params;
|
|
public $render;
|
|
public $menu_text;
|
|
public $menu_image;
|
|
public $menu_priority;
|
|
public $menu_classes;
|
|
public $submenu;
|
|
|
|
private $r;
|
|
|
|
function __construct($controller, $action, $r = 1, $params = [])
|
|
{
|
|
$this->_controller = $controller;
|
|
$this->_action = $action;
|
|
$this->render = $r;
|
|
$this->submenu = array();
|
|
$this->setMenu();
|
|
$this->params = $params;
|
|
if(is_array($GLOBALS['vars']) && is_array($this->params))
|
|
$this->params = array_merge($this->params, $GLOBALS['vars']);
|
|
$this->menu_image = '/css/imgs/empty.png';
|
|
|
|
if($GLOBALS['redis'] !== false)
|
|
$this->r = $GLOBALS['redis'];
|
|
else
|
|
$this->r = false;
|
|
}
|
|
|
|
function setMenu()
|
|
{
|
|
$this->menu_text = '';
|
|
$this->menu_priority = 1;
|
|
}
|
|
|
|
function addSubmenuItem($text, $action, $icon = '', $classes = '')
|
|
{
|
|
$active = $GLOBALS['url'][0];
|
|
if (!$active) $active = 'index';
|
|
|
|
|
|
if ($active == $action)
|
|
$act = 1;
|
|
else $act = 0;
|
|
|
|
$this->submenu[] = array('text' => $text, 'action' => $action, 'active' => $act, 'icon' => $icon, 'classes' => $classes);
|
|
}
|
|
|
|
function setSubmenu()
|
|
{
|
|
//run addsubmenuitem here
|
|
}
|
|
|
|
function getSubmenu($active = 0)
|
|
{
|
|
$prepare = array();
|
|
if (is_array($this->submenu))
|
|
foreach ($this->submenu as $key => $var)
|
|
$prepare[] = array('text' => $var['text'], 'base' => strtolower($this->_controller), 'action' => $var['action'], 'active' => $var['active']);
|
|
return $prepare;
|
|
}
|
|
|
|
function redirect($url)
|
|
{
|
|
//header("Location: $url");
|
|
header("HX-Redirect: ". $url);
|
|
exit();
|
|
}
|
|
|
|
/**
|
|
* override this function to check if a user can use this object
|
|
* @return true -> user will be able to access
|
|
* @return false -> user will not be able to access and this page won't
|
|
* be shown in the menu
|
|
*
|
|
*/
|
|
public function maySeeThisPage()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
function set($name, $value)
|
|
{
|
|
$this->variables[$name] = $value;
|
|
}
|
|
|
|
function get($name)
|
|
{
|
|
return $this->variables[$name];
|
|
}
|
|
|
|
function __destruct()
|
|
{
|
|
// if($this->render)
|
|
// $this->_template->render();
|
|
}
|
|
|
|
function addHelpers($m)
|
|
{
|
|
$m->addHelper('case', [
|
|
'lower' => function($value) { return strtolower((string) $value); },
|
|
'upper' => function($value) { return strtoupper((string) $value); }
|
|
]);
|
|
$m->addHelper('!!', function($value) { return $value . '!!'; });
|
|
|
|
return $m;
|
|
}
|
|
|
|
function renderPagecontent()
|
|
{
|
|
$controller_dir = ROOT . DS . 'pages' . DS . $this->_controller . DS;
|
|
|
|
//when the template path starts with a / it is relative to the root of the project
|
|
if($this->variables['template'][0]=='/')
|
|
$this->variables['template'] = '../../'.$this->variables['template'];
|
|
if($this->variables['template'] && file_exists(ROOT . DS . 'pages' . DS . $this->_controller . DS . $this->variables['template']))
|
|
$templatefile = ROOT . DS . 'pages' . DS . $this->_controller . DS . $this->variables['template'];
|
|
|
|
|
|
//render template by running include
|
|
ob_start();
|
|
if(is_array($this->variables))
|
|
extract($this->variables);
|
|
if($templatefile!= '')
|
|
include($templatefile);
|
|
$pagecontent = ob_get_contents();
|
|
ob_end_clean();
|
|
|
|
|
|
//$pagecontent = $m->render($template, $this->variables);
|
|
|
|
return $pagecontent;
|
|
}
|
|
}
|