File: D:/HostingSpaces/SBogers10/spire.komma-mediadesign.nl/wwwroot/kms/client/models/m_tools.php
<?php
/*
This class handles all tasks regarding marketing-tools-items
*/
require_once DOCUMENT_ROOT.'app/models/m_page.php';
class Toolspage extends Page
{
/**
*
* @var array news data
*/
private $_data = array('id'=>'', 'x2'=>'', 'title'=>'', 'catId'=>'', 'description'=>'', 'timest'=>'');
/**
*
* @var int Since this is an extention we need to hardcode the pageId
*/
private $_pageId = 5;
/**
*
* Constructor
*/
public function __construct()
{
// Storage Session
$this->dataSession = new DataSession('data_to_store',$this->_data);
// Name of the databasetable
$this->tableName = 'page_tools_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)
{
$this->dbh->setData($this->_data);
$data = array();
if( ! empty($ids))
{
// grab data 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
*
* @param int
* @return $array
*/
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(isset($data[$key]))
{
$_SESSION['data_to_store'][$key] = $data[$key];
}
}
return $data;
}
}
/**
* Validates item
* Save errors if these appear
*
* @return boolean
*/
private function validate($id=NULL)
{
$required = array();
$title = $required[] = $this->_data['title'];
$description = $this->_data['description'];
$catId = $required[] = $this->_data['catId'];
$checkboxes = array('x2');
foreach($checkboxes as $key)
{
if( isset($_POST[$key]))
{
$this->_data[$key] = $_SESSION['data_to_store'][$key] = 1;
}
else
{
$this->_data[$key] = $_SESSION['data_to_store'][$key] = 0;
}
}
isset($_SESSION['docs_to_store']) ? $docs = $_SESSION['docs_to_store']->get() : $docs = array();
if( empty( $docs) )
{
$errors[] = $this->lang['add_linked_file'];
}
// 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;
}
}
/**
* Save data in the datasession
* Validate and store a item in the database
* Id an id is set, the storage needs to be updated, 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))
{
// date becomes timest - check if ! empty data, else get timest by time().
$this->_data['timest'] = time();
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 => Update
$this->dbh->setData($this->_data);
$this->dbh->addRule('id',$id);
if($this->dbh->update())
{
$this->dataSession->clear();
return TRUE;
}
}
}
}
return FALSE;
}
/**
* Gets the categories from the database
*
* @return array
*/
public function getCategories()
{
$catDb = new DatabaseHandler();
$catDb->setTableName('page_tools_categories');
$catDb->setOrder('title', 'ASC');
$catDb->setData(array('id'=>'','title'=>''));
if($data = $catDb->select())
{
return $data;
}
}
}