File: D:/HostingSpaces/SBogers10/spire.komma-mediadesign.nl/wwwroot/kms/app/models/m_template.php
<?php
/*
Template.php // Controler
Handles all global tasks such as load, redirect setData, getData, setAlerts, getAlerts
*/
include DOCUMENT_ROOT.'app/models/m_languageHandler.php';
class Template
{
private $_data;
private $_alertTypes;
/*
* @property array lang
* Language property, set in Template, accessible from every file.
*/
public $lang = array();
public function __construct()
{
// constructer
$this->_data = array();
$this->_alertTypes = array('succes','warning','error');
// set up Language
$Lang = new LanguageHandler();
$Lang->set(URL_LANG);
$this->lang = $Lang->get();
// display menu
$flags = $Lang->displayMenu();
$this->setData('lang_menu',$flags,TRUE);
}
/*
SETER / GETTER
*/
/**
* Sets data for later use by the view
*
* @access public
* @param string, string, boolean
* @return null
*/
public function setData($name,$value,$clean = FALSE)
{
if(!$clean)
{
$this->_data[$name] = htmlentities($value, ENT_QUOTES);
}
else
{
$this->_data[$name] = $value;
}
}
/**
* Retrieves data based on provided name for acces by view
*
* @access public
* @param
* @return string, null
*/
public function getData($name, $echo=TRUE)
{
if(isset($this->_data[$name]))
{
if($echo)
{
echo $this->_data[$name];
}
else{
return $this->_data[$name];
}
}
return FALSE;
}
/*
LOAD / REDIRECT
*/
/**
* Loads specified url
*
* @param string
* @return null
*/
public function load($url, $title)
{
if( ! empty($title))
{
$this->_data['page_title'] = $title;
}
if(strpos($url, $_SERVER['DOCUMENT_ROOT']) === false) $url = $_SERVER['DOCUMENT_ROOT'].'/kms/'.$url;
$url = str_replace('//','/', $url);
include $url;
}
/**
* Redirects to specified url
*
* @params string
* @return null
*/
public function redirect($url)
{
header('location:'.$url);
exit;
}
/**
* Returns to url in Session
*
* @params string
* @return null
*/
public function returnToSessionUrl()
{
defined('URL_PAGE') ? $linkname = URL_PAGE : $linkname = '';
if(isset($_SESSION['return_to']['url']) && $linkname != '')
{
$url = $_SESSION['return_to']['url'].'/';
if(isset($_SESSION['return_to']['id']))
{
$url .= $_SESSION['return_to']['id'].'/';
}
if(isset($_SESSION['return_to']['sub3']))
{
$url .= $_SESSION['return_to']['sub3'].'/';
}
$this->redirect(LANG_ROOT.$linkname.'/'.$url);
}
else{
$this->redirect(LANG_ROOT);
}
}
/**
* Redirects tot 404 page
*
* @params string
* @return null
*/
public function notFound()
{
header("HTTP/1.0 404 Not Found");
header('location:'.LANG_ROOT.'404');
exit;
}
/*
Get / Set Alerts
*/
/**
* Sets an alert message, stored in a session variable
* @acces public
* @params string, string(optional)
* @return null
*/
public function setAlert($value, $type='succes')
{
$_SESSION[$type][] = $value;
}
/**
* Returns string containing a div block with multiple list items of alerts
*
* @acces public
* @params
* @return string
*/
public function getAlerts($echo = TRUE)
{
$output = '';
foreach($this->_alertTypes as $alert)
{
if(isset($_SESSION[$alert]))
{
$output .= '<div class="alert js-disappear '.$alert.'">';
$output .= '<h1>'.strtoupper($alert).'</h1>';
$output .= '<ul>';
foreach($_SESSION[$alert] as $value)
{
$output .= '<li>'.$value.'</li>';
}
$output .= '</ul>';
unset($_SESSION[$alert]);
$output .= '</div>';
}
}
if($echo)
{
echo $output;
}
else
{
return $output;
}
}
/*
Convert Data
*/
/**
* Converts string into url string.
*
* @access public
* @param string
* @return string
*/
public function encodeUrl($input)
{
$output = trim($input);
$output = str_replace(' ','-',$output);
//remove these characters
$forbidden = array("'", '"', '\\', '/', ';', ';', '|', '>', '<', '[', ']', '!','?', '@', '#', '$', '%', '^', '&', '*', '(', ')','+','=','{','}','`', '~', '.', ',');
foreach($forbidden as $key => $value){
$output = str_replace($value, '', $output);
}
$output = strtolower($output);
$output = str_replace('--','',$output);
$output = str_replace('---','',$output);
return $output;
}
/**
* Encodes string into a valid Database name
*
* @access public
* @param string
* @return string
*/
public function encodeDbName($input)
{
$input = $this->encodeUrl($input);
$words = explode('-',$input);
$dbName = '';
foreach($words as $key => $word)
{
if($key > 0)
{
$word = ucfirst($word);
}
$dbName .= $word;
}
return $dbName;
}
// Converts an string so it can be used in the url
public static function encodeFilename($input)
{
// Remove whitespace
$output = trim($input);
$output = htmlentities($output, ENT_NOQUOTES, 'utf-8');
// Lowercase
$output = strtolower($output);
// Replace & with "_"
$output = str_replace('&', '_', $output);
// Replace special letters with normal letters
$output = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i","\\1", $output );
$output = str_replace(':','_',$output);
// Remove html entities
$pattern = '#(&)([a-z]*)([;$])#';
$output = preg_replace($pattern,'',$output);
// Remove all special characters
$output = preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $output);
// Remove ( )
$output = str_replace('(','',$output);
$output = str_replace(')','',$output);
$output = str_replace('.','',$output);
// Replace spaces with a underscore
$output = str_replace(' ','_',$output);
// Replace multiple underscores with one underscore
$output = preg_replace('/_{2,}/','_',$output);
return $output;
}
}