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/client/models/m_news.php
<?php

/*
	
	This class handles all tasks regarding news-items

*/

require_once DOCUMENT_ROOT.'app/models/m_page.php';


class Newspage extends Page
{
	/** 
	*
	*	@var array news data
	*/
	private $_data = array('id'=>'', 'x2'=>'', 'title'=>'', 'description'=>'', 'timest'=>'', 'pdflabel'=>'');
	
	/**
	*
	*	@var int Since this is an extension we need a hardcoded pageId
	*/
	private $_pageId = 1;
	
	/**
	*
	* Constructor
	*/
	public function __construct()
	{
		// Storage Session
		$this->dataSession = new DataSession('data_to_store',$this->_data);	
		
		// Name of the databasetable
		$this->tableName = 'page_nieuws_items';
	
		// database handler
		$this->dbh = new DatabaseHandler();
		$this->dbh->setTableName($this->tableName);

        // lang
        global $template;
        $this->lang = $template->lang;
	}
	
	/**
	* This functions graps data from the database ands returns this in an array
	* If an array of ids is passed trough only those rows from that list of ids will be returned, otherwise all rows wil be returned
	*
	* @access public
	* @param array(optional)
	* @return array
	*/
	public function get($ids = NULL)
	{
		// tell the database handler what data to get switch timest with timestamp
		$getData = array('id'=>'','x2'=>'','title'=>'', 'description'=>'', 'timest'=>'', 'pdflabel'=>'' );
		$this->dbh->setData($getData);

		$data = array();
		if( ! empty($ids))
		{
			// grap categories from specified ids
			$data = array();
			foreach($ids as $id)
			{
				$this->dbh->addRule('id',$id);
				$data[] = $this->dbh->select();
			}
		}
        else if((defined('URL_SUB') && URL_SUB == 'x2') || (defined('URL_SUB2') && URL_SUB2 == 'x2'))
        {
            $this->dbh->addRule('x2',1);
            $this->dbh->setActiveOnly(TRUE, $this->_pageId);
            $this->dbh->setScope(0,$this->maxItems);
            $data = $this->dbh->select();
        }
		else
		{

			// grab all categories
            $this->dbh->addRule('x2',1,'AND NOT');
            $this->dbh->setActiveOnly(TRUE, $this->_pageId);
			$this->dbh->setScope(0,$this->maxItems);
			$data = $this->dbh->select();
		}
		
		return $data;
	}
	
	/**
	* Puts data into the session data_to_store
	*
	* @access public
	* @param int
	* @return null
	*/
	public function setStorageData($id)
	{
		if( ! empty($id) && is_numeric($id))
		{
			$tempdata = $this->get(array($id));
			$data = $tempdata[0];
			
			foreach(array_keys($_SESSION['data_to_store']) as $key)
			{
				if($key == 'timest')
				{
					$timest = $data[$key] = $this->_data['timest'] = date('m/d/Y',$data['timest']);
					$_SESSION['data_to_store'][$key] = $timest;
				}
				if(isset($data[$key]))
				{
					$_SESSION['data_to_store'][$key] = $data[$key];
				}
			}
		}
	}
	
	/**
	* Save data in the datasession
	* Valitimest and store a item in the database
	* Id an id is set, the storage needs to be uptimestd, else a new row is inserted
	*
	* @access public
	* @param array
	* @return boolean
	*/
	public function store($id = NULL)
	{
		// data obtained by post
		$this->_data = $this->dataSession->savePost();

		if( ! empty($this->_data))
		{
			if($this->validate($id))
			{
                // timest becomes timest - check if ! empty data, else get timest by time().
				if( ! empty($this->_data['timest']))
				{
                    $temp = explode('/',$this->_data['timest']);
                    $month = $temp[0];
                    $day = $temp[1];
					$year = $temp[2];
					if( ! empty($day) && ! empty($month) && ! empty($year))
					{
						$this->_data['timest'] = mktime(12,0,0, $month, $day, $year);
					}
				}
				else
				{
                    $this->_data['timest'] = time();
				}
				//unset($this->_data['timest']);
				
				if($id == NULL)
				{
					// No id is set => Insert
					
					// order - get highest order from the table and add 1
					$orderData = array('itemOrder'=>'');
					$orderDbh = new DatabaseHandler();
					$orderDbh->setTableName($this->tableName);
					$orderDbh->setData($orderData);
					$orderDbh->setActiveOnly(TRUE, $this->_pageId);
					$orderDbh->setOrder('itemOrder','DESC');
					$orderDbh->setScope(0,1);
					if($result = $orderDbh->select())
					{	
						$highestOrder = $result['itemOrder'];
						
						$this->_data['itemOrder'] = $highestOrder + 1;
					}
					else
					{
						$this->_data['itemOrder'] = 1;
					}
					
					// insert data
					$this->dbh->setData($this->_data);
					
					if($insertId = $this->dbh->insert())
					{	
						$activeDb = new DatabaseHandler();
						$activeDb->setTableName('kms_active');
						$activeDb->setData(array('itemId'=>$insertId,'pageId'=>$this->_pageId,'active'=>1,'lastUpDate'=>time()));
						if($activeDb->insert())
						{
							$this->dataSession->clear();
							return $insertId;
						}
					}
					else
					{
                        $this->errors[] = $this->lang['general_something_went_wrong'];
					}
				}
				else
				{
					// Id is set => Uptimest
					$this->dbh->setData($this->_data);
					$this->dbh->addRule('id',$id);
					if($this->dbh->update())
					{
						$this->dataSession->clear();
						return TRUE;
					}
				}
			}
		}
		return FALSE;
	}
	
	/**
	* Validates item
	* Save errors if these appear
	* 
	* @access private
	* @param
	* @return boolean
	*/
	private function validate($id=NULL)
	{
		$required = array();
		$title = $required[] = $this->_data['title'];
		$description = $required[] = $this->_data['description'];

        $checkboxes = array('x2');
        foreach($checkboxes as $key)
        {
            if( isset($_POST[$key]))
            {
                $this->_data[$key] = 1;
            }
            else
            {
                $this->_data[$key] = 0;
            }
        }

		// check for empty fields
		foreach($required as $value)
		{
			if(empty($value))
			{
                $errors[] = $this->lang['form_complete_all_fields'];
			}	
		}

		// check unique values (only insert)
		$titleDbh = new DatabaseHandler();
		$titleDbh->setTableName($this->tableName);
		$titleDbh->setData(array('title'=>''));	
		$titleDbh->addRule('title', $title);	
		if( $id != NULL)
		{
			$titleDbh->addRule('id', $id, ' AND NOT ');	
		}
		if($titleDbh->select())
		{
            $errors[] = $this->lang['form_choose_unique_title'];
		}
	
		// check if valid
		
		if(isset($errors))
		{	
			$this->errors = $errors;
			return FALSE;
		}
		else
		{

			return TRUE;
		}
	}
}