HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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 &amp; with "_"
        $output = str_replace('&amp;', '_', $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;
    }
}