ModuleProperty_EntityValueTypeImage

Package application.modules.property
Inheritance class ModuleProperty_EntityValueTypeImage » ModuleProperty_EntityValueTypeFile » ModuleProperty_EntityValueType » Entity » LsObject
Since 2.0
Source Code /application/classes/modules/property/entity/ValueTypeImage.entity.class.php
Объект управления типом image

Protected Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
_aBehaviors Список поведений в виде готовых объектов, формируется автоматически LsObject
_aData array Данные сущности, на этот массив мапятся методы set* и get* Entity
aBehaviors array Список поведений LsObject
aValidateErrors array Список ошибок валидации в разрезе полей, например Entity
aValidateRules array Список правил валидации полей Entity
oValue ModuleProperty_EntityValueType
sPrimaryKey null|string Имя поля с первичным ключом в БД Entity
sValidateScenario string Сценарий валиадции полей Entity

Public Methods

Hide inherited methods

MethodDescriptionDefined By
AddBehaviorHook() Добавляет хук поведения LsObject
AttachBehavior() Присоединяет поведение к объекту LsObject
DetachBehavior() Отсоединяет поведение от объекта LsObject
DownloadFile() ModuleProperty_EntityValueTypeFile
GetBehavior() Возвращает объект поведения по его имени LsObject
GetBehaviors() Возвращает все объекты поведения LsObject
Init() Метод инициализации сущности, вызывается при её создании Entity
RemoveBehaviorHook() Удаляет хук поведения LsObject
RunBehaviorHook() Запускает хук поведения на выполнение LsObject
_Validate() Выполняет валидацию данных сущности Entity
__call() Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля Entity
__clone() При клонировании сбрасываем поведения LsObject
__construct() Если передать в конструктор ассоциативный массив свойств и их значений, то они автоматом загрузятся в сущность Entity
__get() Обработка доступа к объекты поведения LsObject
_addValidateError() Добавляет для поля ошибку в список ошибок Entity
_clearValidateErrors() Очищает список всех ошибок или для конкретного поля Entity
_createValidators() Создает и возвращает список валидаторов для сущности Entity
_getData() Получает массив данных сущности Entity
_getDataArray() Рекурсивное преобразование объекта и вложенных объектов в массив Entity
_getDataOne() Возвращает данные по конкретному полю Entity
_getPrimaryKey() Получение первичного ключа сущности (ключ, а не значение!) Entity
_getPrimaryKeyValue() Возвращает значение первичного ключа/поля Entity
_getValidateError() Возвращает первую ошибку для поля или среди всех полей Entity
_getValidateErrors() Возвращает список ошибок для всех полей или одного поля Entity
_getValidateRules() Возвращает список правил для валидации Entity
_getValidateScenario() Возвращает текущий сценарий валидации Entity
_getValidators() Возвращает список валидаторов с учетом текущего сценария Entity
_hasValidateErrors() Проверяет есть ли ошибки валидации Entity
_setData() Устанавливает данные сущности Entity
_setDataSafe() Устанавливает данные, но только те, которые есть в $this->aValidateRules Entity
_setValidateScenario() Устанавливает сценарий валидации Entity
beforeSaveValue() ModuleProperty_EntityValueTypeImage
getFileFullName() ModuleProperty_EntityValueTypeFile
getImageSizeFirst() ModuleProperty_EntityValueTypeImage
getImageSizes() ModuleProperty_EntityValueTypeImage
getImageWebPath() ModuleProperty_EntityValueTypeImage
getParamsDefault() ModuleProperty_EntityValueTypeImage
getValidateRulesDefault() ModuleProperty_EntityValueType
getValueForDisplay() ModuleProperty_EntityValueTypeImage
getValueForForm() ModuleProperty_EntityValueType
getValueObject() ModuleProperty_EntityValueType
prepareParamsRaw() ModuleProperty_EntityValueTypeImage
prepareValidateRulesRaw() ModuleProperty_EntityValueTypeImage
removeValue() ModuleProperty_EntityValueTypeFile
resetAllValue() ModuleProperty_EntityValueType
setValue() Устанавливает значение после валидации конкретного поля, а не всех полей ModuleProperty_EntityValueTypeFile
setValueObject() ModuleProperty_EntityValueType
validate() ModuleProperty_EntityValueTypeImage

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
PrepareBehaviors() Инициализация поведений LsObject
RemoveFile() Удаляет файл ModuleProperty_EntityValueTypeFile
SaveFile() Сохраняет(копирует) файл на сервер ModuleProperty_EntityValueTypeFile
_getValueFromFiles() ModuleProperty_EntityValueTypeFile
validateStandart() ModuleProperty_EntityValueType

Method Details

beforeSaveValue() method
public void beforeSaveValue()
Source Code: /application/classes/modules/property/entity/ValueTypeImage.entity.class.php#101 (show)
public function beforeSaveValue()
{
    
$oProperty $this->oValue->getProperty();
    if (!
$aFile $this->oValue->getDataOne('file_raw')) {
        return 
true;
    }
    
$this->oValue->setDataOne('file_raw'null);
    
/**
     * Удаляем предыдущий файл
     */
    
if (isset($aFile['remove']) or isset($aFile['name'])) {
        if (
$aFilePrev $this->oValue->getDataOne('file')) {
            
$this->Media_RemoveImageBySizes($aFilePrev['path'], $this->oValue->getDataOne('image_sizes'), true);

            
$this->oValue->setDataOne('file', array());
            
$this->oValue->setDataOne('image_sizes', array());
            
$this->oValue->setValueVarchar(null);
        }
    }

    if (isset(
$aFile['name'])) {
        
/**
         * Выполняем загрузку файла
         */
        
$aPathInfo pathinfo($aFile['name']);
        
$sFileName func_generator(20);
        
/**
         * Копируем загруженный файл
         */
        
$sDirTmp Config::Get('path.tmp.server') . '/property/';
        if (!
is_dir($sDirTmp)) {
            @
mkdir($sDirTmp0777true);
        }
        
$sFileTmp $sDirTmp $sFileName;

        if (
move_uploaded_file($aFile['tmp_name'], $sFileTmp)) {
            
$aParams $this->Image_BuildParams('property.' $oProperty->getTargetType() . '.' $oProperty->getType() . '.' $oProperty->getCode());
            
/**
             * Если объект изображения не создан, возвращаем ошибку
             */
            
if ($oImage $this->Image_Open($sFileTmp$aParams)) {
                
$sPath $oProperty->getSaveFileDir();
                
/**
                 * Сохраняем оригинальную копию
                 */
                
if ($sFileResult $oImage->saveSmart($sPath$sFileName)) {
                    
/**
                     * Сохраняем данные о файле
                     */
                    
$this->oValue->setDataOne('file', array(
                        
'path'      => $sFileResult,
                        
'size'      => filesize($sFileTmp),
                        
'name'      => htmlspecialchars($aPathInfo['filename']),
                        
'extension' => htmlspecialchars($oImage->getFormat()),
                    ));
                    
$aSizes $oProperty->getParam('sizes');
                    
/**
                     * Сохраняем размеры
                     */
                    
$this->oValue->setDataOne('image_sizes'$aSizes);
                    
/**
                     * Сохраняем уникальный ключ для доступа к файлу
                     */
                    
$this->oValue->setValueVarchar(func_generator(32));
                    unset(
$oImage);
                    
/**
                     * Генерируем ресайзы
                     */
                    
$this->Media_GenerateImageBySizes($sFileTmp$sPath$sFileName$aSizes$aParams);

                    
$this->Fs_RemoveFileLocal($sFileTmp);
                    return 
true;
                }
            }
            
$this->Fs_RemoveFileLocal($sFileTmp);
        }
    }
}

getImageSizeFirst() method
public void getImageSizeFirst()
Source Code: /application/classes/modules/property/entity/ValueTypeImage.entity.class.php#61 (show)
public function getImageSizeFirst()
{
    if (
$aSizes $this->getImageSizes()) {
        return 
array_shift($aSizes);
    }
    return 
null;
}

getImageSizes() method
public void getImageSizes()
Source Code: /application/classes/modules/property/entity/ValueTypeImage.entity.class.php#56 (show)
public function getImageSizes()
{
    return 
$this->oValue->getDataOne('image_sizes');
}

getImageWebPath() method
public void getImageWebPath($sSize=NULL)
$sSize
Source Code: /application/classes/modules/property/entity/ValueTypeImage.entity.class.php#48 (show)
public function getImageWebPath($sSize null)
{
    if (
$aFile $this->oValue->getDataOne('file') and isset($aFile['path'])) {
        return 
$this->Media_GetImageWebPath($aFile['path'], $sSize);
    }
    return 
null;
}

getParamsDefault() method
public void getParamsDefault()
Source Code: /application/classes/modules/property/entity/ValueTypeImage.entity.class.php#222 (show)
public function getParamsDefault()
{
    return array(
        
'sizes' => array(
            
'150x150crop'
        
),
        
'types' => array(
            
'jpg',
            
'jpeg',
            
'gif',
            
'png'
        
)
    );
}

getValueForDisplay() method
public void getValueForDisplay()
Source Code: /application/classes/modules/property/entity/ValueTypeImage.entity.class.php#31 (show)
public function getValueForDisplay()
{
    
/**
     * Показываем превью, в качестве изображения берем первый ресайз из списка размеров
     */
    
if ($aFile $this->oValue->getDataOne('file') and isset($aFile['path'])) {
        
$sSize null;
        if (
$aSizes $this->oValue->getDataOne('image_sizes')) {
            
$sSize array_shift($aSizes);
        }
        
$sWebPath $this->Media_GetImageWebPath($aFile['path'], $sSize);
        return 
'<a href=""><img src="' $sWebPath '" class="js-lbx" /></a>';
    }
    return 
$this->getFileFullName();
}

prepareParamsRaw() method
public void prepareParamsRaw($aParamsRaw)
$aParamsRaw
Source Code: /application/classes/modules/property/entity/ValueTypeImage.entity.class.php#198 (show)
public function prepareParamsRaw($aParamsRaw)
{
    
$aParams = array();

    
$aParams['sizes'] = array();
    if (isset(
$aParamsRaw['sizes']) and is_array($aParamsRaw['sizes'])) {
        foreach (
$aParamsRaw['sizes'] as $sSize) {
            if (
$sSize and preg_match('#^(\d+)?(x)?(\d+)?([a-z]{2,10})?$#Ui'$sSize)) {
                
$aParams['sizes'][] = htmlspecialchars($sSize);
            }
        }
    }
    
$aParams['types'] = array();
    if (isset(
$aParamsRaw['types']) and is_array($aParamsRaw['types'])) {
        foreach (
$aParamsRaw['types'] as $sType) {
            if (
$sType) {
                
$aParams['types'][] = htmlspecialchars($sType);
            }
        }
    }

    return 
$aParams;
}

prepareValidateRulesRaw() method
public void prepareValidateRulesRaw($aRulesRaw)
$aRulesRaw
Source Code: /application/classes/modules/property/entity/ValueTypeImage.entity.class.php#181 (show)
public function prepareValidateRulesRaw($aRulesRaw)
{
    
$aRules = array();
    
$aRules['allowEmpty'] = isset($aRulesRaw['allowEmpty']) ? false true;

    if (isset(
$aRulesRaw['size_max']) and is_numeric($aRulesRaw['size_max'])) {
        
$aRules['size_max'] = (int)$aRulesRaw['size_max'];
    }
    if (isset(
$aRulesRaw['width_max']) and is_numeric($aRulesRaw['width_max'])) {
        
$aRules['width_max'] = (int)$aRulesRaw['width_max'];
    }
    if (isset(
$aRulesRaw['height_max']) and is_numeric($aRulesRaw['height_max'])) {
        
$aRules['height_max'] = (int)$aRulesRaw['height_max'];
    }
    return 
$aRules;
}

validate() method
public void validate()
Source Code: /application/classes/modules/property/entity/ValueTypeImage.entity.class.php#69 (show)
public function validate()
{
    
/**
     * Выполняем стандартные проверки для типа "Файл"
     */
    
$bRes parent::validate();

    
$oProperty $this->oValue->getProperty();

    
$aValue $this->getValueForValidate();
    if (isset(
$aValue['tmp_name'])) {
        if (!
$aImageInfo = (@getimagesize($aValue['tmp_name']))) {
            return 
'Файл не является изображением';
        }
        
/**
         * Проверяем на максимальную ширину
         */
        
if ($iWMax $oProperty->getValidateRuleOne('width_max') and $iWMax $aImageInfo[0]) {
            return 
'Максимальная допустимая ширина изображения ' $iWMax 'px';
        }
        
/**
         * Проверяем на максимальную высоту
         */
        
if ($iHMax $oProperty->getValidateRuleOne('height_max') and $iHMax $aImageInfo[1]) {
            return 
'Максимальная допустимая высота изображения ' $iHMax 'px';
        }
    }

    return 
$bRes;
}