Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/FileManager/src/Model/Table/AssetsTable.php
<?php

namespace Croogo\FileManager\Model\Table;

use
ArrayObject;
use
Cake\Datasource\EntityInterface;
use
Cake\Event\Event;
use
Cake\Validation\Validator;
use
Croogo\Core\Croogo;
use
Croogo\Core\Model\Table\CroogoTable;

class
AssetsTable extends CroogoTable
{

    public
$validate = [
       
'file' => 'checkFileUpload'
   
];

    public function
initialize(array $config)
    {
       
$this->setTable('assets');

       
$this->hasMany('AssetUsages', [
           
'className' => 'Croogo/FileManager.AssetUsages',
           
'dependent' => true,
        ]);

       
$this->belongsTo('Attachments', [
           
'className' => 'Croogo/FileManager.Attachments',
           
'foreignKey' => 'foreign_key',
           
'conditions' => [
               
$this->aliasField('model') => 'Attachments',
            ],
        ]);

       
$this->addBehavior('CounterCache', [
           
'Attachments' => [
               
'asset_count' => [
                   
$this->aliasField('model') => 'Attachments',
                ],
            ],
        ]);
       
$this->addBehavior('Timestamp');
       
$this->addBehavior('Search.Search');
       
$this->addBehavior('Croogo/Core.Trackable');
    }

    public function
validationDefault(Validator $validator)
    {
       
$validator
           
->requirePresence('adapter', 'create');

        return
$validator;
    }

    public function
beforeSave(Event $event, EntityInterface $entity, ArrayObject $options = null)
    {
       
$adapter = $entity->get('adapter');
        if (!
$entity->filename) {
           
$entity->filename = '';
        }
        if (!
$entity->path) {
           
$entity->path = '';
        }
       
$Event = Croogo::dispatchEvent('FileStorage.beforeSave', $this, [
           
'record' => $entity,
           
'adapter' => $adapter,
        ]);
        if (
$Event->isStopped()) {
            return
false;
        }

        return
true;
    }

    public function
beforeDelete(Event $event, EntityInterface $entity, ArrayObject $options = null)
    {
       
$Event = Croogo::dispatchEvent('FileStorage.beforeDelete', $this, [
           
'record' => $entity,
        ]);
        if (
$Event->isStopped()) {
            return
false;
        }

        return
true;
    }

    public function
checkFileUpload($check)
    {
        switch (
$check['file']['error']) {
            case
UPLOAD_ERR_INI_SIZE:
                return
'The uploaded file exceeds the upload_max_filesize directive in php.ini';
            case
UPLOAD_ERR_FORM_SIZE:
                return
'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
            case
UPLOAD_ERR_PARTIAL:
                return
'The uploaded file was only partially uploaded.';
            case
UPLOAD_ERR_NO_FILE:
                return
'No file was uploaded.';
            case
UPLOAD_ERR_NO_TMP_DIR:
                return
'Missing a temporary folder.';
            case
UPLOAD_ERR_CANT_WRITE:
                return
'Failed to write file to disk.';
            case
UPLOAD_ERR_EXTENSION:
                return
'A PHP extension stopped the file upload.';
            case
UPLOAD_ERR_OK:
                return
true;
        }
    }
}