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;
}
}
}