File: D:/HostingSpaces/SBogers13/rie-jeanne.nl/wwwroot/kms/app/models/m_trash.class.php
<?php
/**
* m_trash.class.php
* Created by Komma Mediadesign.
* Author: mike
* Date: 4/11/13
*/
class Trash_Model
{
private $_pageId;
public function __construct(){}
/*
* Get all items in the trashcan
*/
public function getItems($ids = null, $itemResult = TRUE)
{
// Get item & page ids
$IdGetter = new DatabaseHandler();
$IdGetter->setTableName(TABLE_PREFIX . 'kms_active');
if($ids != null)
{
$result = array();
if( ! is_array($ids)) $ids = array($ids);
// Only return asked ids
foreach($ids as $id)
{
$IdGetter->clearRule();
$IdGetter->addRule('id',$id);
$result[] = $IdGetter->select();
}
}
else
{
// Return all ids
$IdGetter->addRule('active',0);
if($result = $IdGetter->select())
{
$result = $IdGetter->twoDimensional($result);
}
}
if($itemResult)
{
if( ! empty($result))
{
$items = array();
foreach($result as $trashed)
{
// Get tableName from
$pageInfoGetter = new DatabaseHandler();
$pageInfoGetter->setTableName('kms_basic_pages');
$pageInfoGetter->addRule('id',$trashed['pageId']);
$info = $pageInfoGetter->select();
$pageName = $info['name'];
// Get data from ids
$tableName = TABLE_PREFIX . $pageName . '_items';
$itemGetter = new DatabaseHandler();
$itemGetter->setTableName($tableName);
$itemGetter->addRule('id',$trashed['itemId']);
$items[] = $itemGetter->select();
}
return $items;
}
}
else
{
return $result;
}
return false;
}
/*
* Set a property
*/
public function set($prop,$val)
{
if( ! empty($prop))
{
$this->{$prop} = $val;
}
}
/*
* Insert an item into the trashcan
* @param mixed $ids
*/
public function insert($pageId, $ids)
{
// Make sure you always get an array
if( ! is_array($ids)) $ids = array($ids);
// Update data
$update = array('active'=>0);
// Get item & page ids
$Dbh = new DatabaseHandler();
$Dbh->setTableName(TABLE_PREFIX . 'kms_active');
$Dbh->setData($update);
foreach($ids as $id)
{
$Dbh->clearRule();
$Dbh->addRule('itemId',$id);
$Dbh->addRule('pageId',$pageId);
$Dbh->update();
}
}
/*
* Recover an item
* @param int $id
*/
public function recover($id)
{
// Update data
$update = array('active'=>1);
// Get item & page ids
$Dbh = new DatabaseHandler();
$Dbh->setTableName(TABLE_PREFIX . 'kms_active');
$Dbh->setData($update);
$Dbh->addRule('id',$id);
$Dbh->update();
}
/*
* Empty the trashcan
*/
public function emptyTrash()
{
// Todo: write a JOIN function for the Database_Handler
// Get all pageIds in the trashcan
$data = array('pageId'=>'');
$PageGetter = new DatabaseHandler();
$PageGetter->setTableName(TABLE_PREFIX . 'kms_active');
$PageGetter->setData($data);
$PageGetter->addRule('active',0);
$pageIds = $PageGetter->select();
// Get page name
$PageInfoGetter = new DatabaseHandler();
$PageInfoGetter->setTableName('kms_basic_pages');
$PageInfoGetter->setData(array('name'=>''));
// Handle every page
foreach($pageIds as $pageId)
{
$pageId = $pageId['pageId'];
$PageInfoGetter->clearRule();
$PageInfoGetter->addRule('id',$pageId);
$info = $PageInfoGetter->select();
$pageName = $info['name'];
// Get item ids from active
$ItemGetter = new DatabaseHandler();
$ItemGetter->setTableName(TABLE_PREFIX . 'kms_active');
$ItemGetter->addRule('pageId',$pageId);
$ItemGetter->addRule('active',0);
$nonActiveItems = $ItemGetter->select();
$nonActiveItems = $ItemGetter->twoDimensional($nonActiveItems);
foreach($nonActiveItems as $item)
{
// Remove itemId from trashcan.
$tableName = TABLE_PREFIX . $pageName . '_items';
$Remover = new DatabaseHandler();
$Remover->setTableName($tableName);
$Remover->addRule('id',$item['itemId']);
$Remover->delete();
// Remove row from active.
$tableName = TABLE_PREFIX . 'kms_active';
$Remover = new DatabaseHandler();
$Remover->setTableName($tableName);
$Remover->addRule('itemId',$item['itemId']);
$Remover->addRule('pageId',$pageId);
$Remover->delete();
// Remove images.
$tableName = TABLE_PREFIX . $pageName . '_images';
$ImageGetter = new DatabaseHandler();
$ImageGetter->setTableName($tableName);
$ImageGetter->resetData();
$ImageGetter->addRule('itemId',$item['itemId']);
$images = $ImageGetter->select();
if( ! empty($images))
{
$images = $ItemGetter->twoDimensional($images);
foreach($images as $image)
{
$FileHandler = new File_Handler();
$FileHandler->unlink(DOCUMENT_UPLOADS_ROOT . $image['filename']);
$FileHandler->unlink(DOCUMENT_UPLOADS_ROOT . $image['thumb']);
$FileHandler->unlink(DOCUMENT_UPLOADS_ROOT . $image['kms_thumb']);
$Remover = new DatabaseHandler();
$Remover->setTableName($tableName);
$Remover->addRule('id',$image['id']);
$Remover->delete();
}
}
}
}
}
}