ModuleImage
Package | framework.modules |
---|---|
Inheritance | class ModuleImage » Module » LsObject |
Since | 2.0 |
Source Code | /framework/classes/modules/image/Image.class.php |
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
_aBehaviors | Список поведений в виде готовых объектов, формируется автоматически | LsObject | |
aBehaviors | array | Список поведений | LsObject |
aDriversSupport | array | Список поддерживаемых драйверов обработки изображений | ModuleImage |
aParamsDefault | array | Дефолтные параметры | ModuleImage |
bIsInit | bool | Указывает на то, была ли проведенна инициализация модуля | Module |
sDriverCurrent | string | Текущий драйвер обработки изображений | ModuleImage |
sLastErrorText | string | Тескт последней ошибки | ModuleImage |
Public Methods
Method | Description | Defined By |
---|---|---|
AddBehaviorHook() | Добавляет хук поведения | LsObject |
AttachBehavior() | Присоединяет поведение к объекту | LsObject |
BuildParams() | Возврашает параметры для группы, если каких то параметров в группе нет, то используются дефолтные | ModuleImage |
ClearLastError() | Очищает текст последней ошибки | ModuleImage |
Create() | Создает пустой объект изображения | ModuleImage |
DetachBehavior() | Отсоединяет поведение от объекта | LsObject |
GetBehavior() | Возвращает объект поведения по его имени | LsObject |
GetBehaviors() | Возвращает все объекты поведения | LsObject |
GetDriverCurrent() | Возвращает текущий драйвер | ModuleImage |
GetIdDir() | Получает директорию для загрузки изображений | ModuleImage |
GetLastError() | Получает текст последней ошибки | ModuleImage |
Init() | ModuleImage | |
IsExistsFile() | Проверяет изображение на существование | ModuleImage |
Open() | Открывает файл изображения и возвращает объект | ModuleImage |
OpenFrom() | Открывает файл изображения, в качестве источника изображения может использоваться полный путь до файла с типом, например, [relative]/image.jpg | ModuleImage |
RemoveBehaviorHook() | Удаляет хук поведения | LsObject |
RemoveFile() | Удаляет файл изображения | ModuleImage |
RunBehaviorHook() | Запускает хук поведения на выполнение | LsObject |
SaveFile() | Сохраняет(копирует) файл изображения на сервер | ModuleImage |
SaveFileSmart() | Сохраняет(копирует) файл изображения на сервер | ModuleImage |
SetDriverCurrent() | Устанавливает текущий драйвер обработки изображений | ModuleImage |
SetInit() | Помечает модуль как инициализированный | Module |
SetLastError() | Устанавливает текст последней ошибки | ModuleImage |
Shutdown() | Метод срабатывает при завершении работы ядра | Module |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | LsObject |
__clone() | Блокируем копирование/клонирование объекта | Module |
__construct() | Конструктор, запускается автоматически при создании объекта | LsObject |
__get() | Обработка доступа к объекты поведения | LsObject |
isInit() | Возвращает значение флага инициализации модуля | Module |
Protected Methods
Method | Description | Defined By |
---|---|---|
GetClassDriverCurrent() | Возвращает класс текущего драйвера | ModuleImage |
PrepareBehaviors() | Инициализация поведений | LsObject |
Property Details
Список поддерживаемых драйверов обработки изображений
Дефолтные параметры Основная задача в определении списка доступных ключей массива с параметрами
Текущий драйвер обработки изображений
Тескт последней ошибки
Method Details
public array BuildParams(string $sName=NULL)
| ||
$sName | string | Имя группы |
{return} | array |
public function BuildParams($sName = null)
{
$aDefault = func_array_merge_assoc($this->aParamsDefault, (array)Config::Get('module.image.params.default'));
if (is_null($sName)) {
return $aDefault;
}
$aNamed = (array)Config::Get('module.image.params.' . strtolower($sName));
return func_array_merge_assoc($aDefault, $aNamed);
}
Возврашает параметры для группы, если каких то параметров в группе нет, то используются дефолтные
public void ClearLastError()
|
public function ClearLastError()
{
$this->SetLastError(null);
}
Очищает текст последней ошибки
public ModuleImage_EntityImage|bool Create(int $iWidth, int $iHeight, array|null $aParams=NULL)
| ||
$iWidth | int | |
$iHeight | int | |
$aParams | array|null | |
{return} | ModuleImage_EntityImage|bool |
public function Create($iWidth, $iHeight, $aParams = null)
{
if (!is_array($aParams)) {
$aParams = $this->BuildParams();
} else {
$aParams = func_array_merge_assoc($this->aParamsDefault, $aParams);
}
$sClassDriver = $this->GetClassDriverCurrent();
try {
/**
* Создаем объект изображения библиотеки Imagine
*/
$oImagine = new $sClassDriver();
$oImageObject = $oImagine->create(new Imagine\Image\Box($iWidth, $iHeight));
/**
* Создаем объект для работы с изображением
*/
$oImage = Engine::GetEntity('ModuleImage_EntityImage');
$oImage->setImage($oImageObject);
$oImage->setParams($aParams);
return $oImage;
} catch (Imagine\Exception\Exception $e) {
$this->SetLastError($e->getMessage());
return false;
}
}
Создает пустой объект изображения
protected string GetClassDriverCurrent()
| ||
{return} | string |
protected function GetClassDriverCurrent()
{
$sDrive = ucfirst($this->sDriverCurrent);
return "Imagine\\{$sDrive}\\Imagine";
}
Возвращает класс текущего драйвера
public string GetDriverCurrent()
| ||
{return} | string |
public function GetDriverCurrent()
{
return $this->sDriverCurrent;
}
Возвращает текущий драйвер
public string GetIdDir(int $sId, string $sSubDir=NULL)
| ||
$sId | int | Целое число, обычно это ID объекта |
$sSubDir | string | Подкаталог |
{return} | string |
public function GetIdDir($sId, $sSubDir = null)
{
return Config::Get('path.uploads.images') . '/' . ($sSubDir ? $sSubDir . '/' : '') . preg_replace('~(.{3})~U',
"\\1/", str_pad($sId, 9, "0", STR_PAD_LEFT)) . date('Y/m/d');
}
Получает директорию для загрузки изображений Используется фомат хранения данных (/images/subdir/obj/ect/id/yyyy/mm/dd/file.jpg) Например, для хранения изображений пользователя (аватары и т.п.) c ID=1 можно так: /images/users/000/000/001/2014/02/15/avatar.jpg
public string GetLastError()
| ||
{return} | string |
public function GetLastError()
{
return $this->sLastErrorText;
}
Получает текст последней ошибки
public void Init()
|
public function Init()
{
$this->SetDriverCurrent(Config::Get('module.image.driver'));
}
public mixed IsExistsFile(string $sPathFile)
| ||
$sPathFile | string | Полный путь до файла с типом, например, [relative]/image.jpg |
{return} | mixed |
public function IsExistsFile($sPathFile)
{
$sPathFile = $this->Fs_GetPathServer($sPathFile);
return $this->Fs_IsExistsFileLocal($sPathFile);
}
Проверяет изображение на существование Если переопределить данный метод, то можно проверить существование изображения, например, на Amazon S3
public ModuleImage_EntityImage|bool Open($sFile $sFile, $aParams $aParams=NULL)
| ||
$sFile | $sFile | Локальны путь до изображения |
$aParams | $aParams | Параметры |
{return} | ModuleImage_EntityImage|bool |
public function Open($sFile, $aParams = null)
{
if (!is_array($aParams)) {
$aParams = $this->BuildParams();
} else {
$aParams = func_array_merge_assoc($this->aParamsDefault, $aParams);
}
$sClassDriver = $this->GetClassDriverCurrent();
try {
/**
* Создаем объект изображения библиотеки Imagine
*/
$oImagine = new $sClassDriver();
$oImageObject = $oImagine->open($sFile);
if (!$aSize = getimagesize($sFile, $aImageInfo)) {
$this->SetLastError('The file is not an image');
return false;
}
/**
* Проверяем на максимальный размер
*/
$oBox = $oImageObject->getSize();
if ($oBox->getWidth() > $aParams['size_max_width'] or $oBox->getHeight() > $aParams['size_max_height']) {
$this->SetLastError('Maximum size image ' . $aParams['size_max_width'] . 'x' . $aParams['size_max_height']);
return false;
}
/**
* Создаем объект для работы с изображением
*/
$oImage = Engine::GetEntity('ModuleImage_EntityImage');
$oImage->setImage($oImageObject);
$oImage->setParams($aParams);
$oImage->setInfoSize($aSize);
$oImage->setInfoAdditional($aImageInfo);
return $oImage;
} catch (Imagine\Exception\Exception $e) {
$this->SetLastError($e->getMessage());
return false;
}
}
Открывает файл изображения и возвращает объект
public bool|ModuleImage_EntityImage OpenFrom(string $sFile, null $aParams=NULL)
| ||
$sFile | string | Полный путь до файла с типом, например, [relative]/image.jpg |
$aParams | null | |
{return} | bool|ModuleImage_EntityImage |
public function OpenFrom($sFile, $aParams = null)
{
$sFile = $this->Fs_GetPathServer($sFile);
return $this->Open($sFile, $aParams);
}
Открывает файл изображения, в качестве источника изображения может использоваться полный путь до файла с типом, например, [relative]/image.jpg Если переопределить данный метод, то можно открывать изображения, например, с Amazon S3
public mixed RemoveFile(string $sPathFile)
| ||
$sPathFile | string | Полный путь до файла с типом, например, [relative]/image.jpg |
{return} | mixed |
public function RemoveFile($sPathFile)
{
$sPathFile = $this->Fs_GetPathServer($sPathFile);
return $this->Fs_RemoveFileLocal($sPathFile);
}
Удаляет файл изображения Если переопределить данный метод, то можно удалять изображения, например, с Amazon S3
public bool SaveFile(string $sFileSource, string $sFileDest, int|null $iMode=NULL, bool $bRemoveSource=false)
| ||
$sFileSource | string | Полный путь до исходного файла |
$sFileDest | string | Полный путь до файла для сохранения с типом, например, [server]/home/var/site.ru/image.jpg |
$iMode | int|null | Права chmod для файла, например, 0777 |
$bRemoveSource | bool | Удалять исходный файл или нет |
{return} | bool | | string При успешном сохранении возвращает относительный путь до файла с типом, например, [relative]/image.jpg |
public function SaveFile($sFileSource, $sFileDest, $iMode = null, $bRemoveSource = false)
{
if ($this->Fs_SaveFileLocal($sFileSource, $this->Fs_GetPathServer($sFileDest), $iMode, $bRemoveSource)) {
return $this->Fs_MakePath($this->Fs_GetPathRelativeFromServer($sFileDest), ModuleFs::PATH_TYPE_RELATIVE);
}
return false;
}
Сохраняет(копирует) файл изображения на сервер Если переопределить данный метод, то можно сохранять изображения, например, на Amazon S3
public bool SaveFileSmart(string $sFileSource, string $sDirDest, string $sFileDest, int|null $iMode=NULL, bool $bRemoveSource=false)
| ||
$sFileSource | string | Полный путь до исходного файла |
$sDirDest | string | Каталог для сохранения файла относительно корня сайта |
$sFileDest | string | Имя файла для сохранения |
$iMode | int|null | Права chmod для файла, например, 0777 |
$bRemoveSource | bool | Удалять исходный файл или нет |
{return} | bool | | string При успешном сохранении возвращает относительный путь до файла с типом, например, [relative]/image.jpg |
public function SaveFileSmart($sFileSource, $sDirDest, $sFileDest, $iMode = null, $bRemoveSource = false)
{
if ($sPathFile = $this->Fs_SaveFileLocalSmart($sFileSource, $sDirDest, $sFileDest, $iMode, $bRemoveSource)) {
return $this->Fs_MakePath($this->Fs_GetPathRelativeFromServer($sPathFile), ModuleFs::PATH_TYPE_RELATIVE);
}
return false;
}
Сохраняет(копирует) файл изображения на сервер Если переопределить данный метод, то можно сохранять изображения, например, на Amazon S3
public bool SetDriverCurrent($sDriver $sDriver)
| ||
$sDriver | $sDriver | |
{return} | bool |
public function SetDriverCurrent($sDriver)
{
$sDriver = strtolower($sDriver);
if (in_array($sDriver, $this->aDriversSupport)) {
$this->sDriverCurrent = $sDriver;
return true;
}
return false;
}
Устанавливает текущий драйвер обработки изображений
public void SetLastError(string $sText)
| ||
$sText | string | Текст ошибки |
public function SetLastError($sText)
{
$this->sLastErrorText = $sText;
}
Устанавливает текст последней ошибки