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
Property | Type | Description | Defined 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
Method | Description | Defined 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
Method | Description | Defined 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($sDirTmp, 0777, true);
}
$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;
}