File: D:/HostingSpaces/SBogers64/klimroosbudel.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 = [];
if (! is_array($ids)) {
$ids = [$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 = [];
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 = [$ids];
}
// Update data
$update = ['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 = ['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 = ['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(['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();
}
}
}
}
}
}