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/lib/files/file_storage.class.php
<?php
/**
 * file_storage.class.php
 * Created by Komma Mediadesign.
 * Author: mike
 * Date: 4/16/13
 */

class File_Storage
{
    /*
     * Name of the table we're working in
     */
    private $_tableName;

    /*
     * Session name of files to store
     */
    private $_fileSessionName;

    /*
     * Name of the form we are working in
     */
    private $_formName;

    /*
     * Database_Handler object
     */
    private $_Dbh;

    public function __construct()
    {
        $this->_Dbh = new DatabaseHandler();
    }

    /*
     * Set
     */
    public function set($prop,$val)
    {
        if( ! empty($prop))
        {
            $this->{$prop} = $val;
        }
    }

    /*
     * Get
     */
    public function get($key=null,$value=null)
    {
        // Set table name we will be working in
        $this->_Dbh->setTableName($this->_tableName);
        $this->_Dbh->resetData();
        $this->_Dbh->clearRule();
        $this->_Dbh->setOrder('session_key','ASC');
        if($key != null && $value != null )
        {
            $this->_Dbh->addRule($key,$value);
        }
        if($data = $this->_Dbh->select())
        {
            if($key == null || $key == 'itemId')
            {
                if( ! is_array($data[key($data)])) $data = array($data);
            }
            return $data;
        }
        return false;
    }

    public function store($itemId)
    {
        // Set table name we will be working in
        $this->_Dbh->setTableName($this->_tableName);

        // get images in the session
        $images = Session::get($this->_fileSessionName);
        if(is_array($images))
        {
            if( ! is_array($images[key($images)])) $images = array($images);

            foreach($images as $key => $image)
            {
                // check if image isset in db
                if( ! $this->get('short_code',$image['short_code']))
                {
                    $image['timestamp'] = time();
                    $image['itemId'] = $itemId;
                    $image['session_key'] = $key;

                    $this->_Dbh->setData($image);
                    $imageId = $this->_Dbh->insert();
                }
                else
                {
                    if( ! empty($image['short_code']))
                    {
                        // else get image id from database
                        /*$this->_Dbh->setData(array('id'=>''));
                        $this->_Dbh->addRule('short_code',$image['short_code']);
                        $result = $this->_Dbh->select();
                        $imageId = $result['id'];*/

                        $image['session_key'] = $key;
                        $this->_Dbh->setData(array('caption'=>$image['caption'],'session_key'=>$image['session_key']));
                        $this->_Dbh->addRule('short_code',$image['short_code']);
                        $this->_Dbh->update();

                        $this->_Dbh->clearRule();
                    }
                }

                // update the thumb from key to id

                if(isset($_POST['thumb']))
                {
                    $thumbSession = array($this->_formName . '_data','thumb');
                    if($key == Session::get($thumbSession))
                    {
                        if(isset($_POST['thumb']))
                        {
                            $Db = new DatabaseHandler();
                            $tn = str_replace('_images','_items',$this->_tableName);
                            $Db->setTableName($tn);
                            $Db->addRule('id',$itemId);
                            $Db->setData(array('thumb'=>$key));
                            $Db->update();
                        }
                    }
                }
            }
        }
    }

    public function cleanDatabase($itemId)
    {
        // Get all shortCodes from session
        $sessionShortCodes = array();
        $sessionImages = Session::get($this->_fileSessionName);
        if( ! is_array($sessionImages[key($sessionImages)]) ) $sessionImages = array($sessionImages);
        foreach($sessionImages as $sessionImage)
        {
            $sessionShortCodes[] = $sessionImage['short_code'];
        }

        // Get all images from database
        if( ! empty($itemId) && $dbImages = $this->get('itemId',$itemId))
        {
            if(is_array($dbImages))
            {
                foreach($dbImages as $dbImage)
                {
                    // If shortCode not in session anymore, remove from database
                    if( ! in_array($dbImage['short_code'],$sessionShortCodes))
                    {
                        $DbRemover = new DatabaseHandler();
                        $DbRemover->setTableName($this->_tableName);
                        $DbRemover->clearRule();
                        $DbRemover->addRule('id', $dbImage['id']);
                        $DbRemover->delete();

                        //todo unset images
                        $FileHandler = new File_Handler();
                        $name = str_replace('_data','',$this->_fileSessionName);
                        $FileHandler->set('_name', $name);

                        $FileHandler->unlink(DOCUMENT_UPLOADS_ROOT . $dbImage['filename']);
                        $FileHandler->unlink(DOCUMENT_UPLOADS_ROOT . $dbImage['thumb']);
                        $FileHandler->unlink(DOCUMENT_UPLOADS_ROOT . $dbImage['kms_thumb']);
                    }
                }
            }
        }
    }
}