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