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/SBogers68/resortouddorpduin.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();
                    }
                }
            }
        }
    }
}