1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-05-19 09:18:18 +03:00

Доработка превью fix #690

This commit is contained in:
Mzhelskiy Maxim 2015-10-23 15:41:38 +07:00
parent c0c92ba5c5
commit b1afc7acb0
3 changed files with 57 additions and 29 deletions

View file

@ -648,8 +648,24 @@ class ActionAjax extends Action
}
$sTargetType = getRequestStr('target_type');
$sTargetId = getRequestStr('target_id');
$sTargetTmp = getRequestStr('target_tmp');
$sTargetId = getRequestStr('target_id') ?: null;
$sTargetTmp = getRequestStr('target_tmp') ?: null;
/**
* Доступ к файлу медиа
*/
if (!$this->Media_GetAllowMediaItemsById(array($oMedia->getId()))) {
return $this->EventErrorDebug();
}
/**
* Проверяем доступ к этому объекту медиа
*/
if (true !== $res = $this->Media_CheckTarget($sTargetType, $sTargetId,
ModuleMedia::TYPE_CHECK_ALLOW_PREVIEW, array('media' => $oMedia, 'user' => $this->oUserCurrent))
) {
$this->Message_AddErrorSingle(is_string($res) ? $res : $this->Lang_Get('common.error.system.base'));
}
/**
* Получаем объект связи
@ -661,32 +677,24 @@ class ActionAjax extends Action
$aFilter['target_id'] = $sTargetId;
}
if (!$oTarget = $this->Media_GetTargetByFilter($aFilter)) {
return $this->EventErrorDebug();
/**
* Попытка добавить в качестве превью ранее загруженный файл для другого объекта
* Делаем новую связь медиа с текущим объектом
*/
if (!($oTarget = $this->Media_AttachMediaToTarget($oMedia, $sTargetType, $sTargetId, $sTargetTmp))) {
return $this->EventErrorDebug();
}
}
if ($oTarget->getIsPreview()) {
return $this->EventErrorDebug();
}
/**
* Проверяем доступ к этому медиа
* Удаляем все текущие превью
*/
if (true === $res = $this->Media_CheckTarget($oTarget->getTargetType(), $oTarget->getTargetId(),
ModuleMedia::TYPE_CHECK_ALLOW_PREVIEW, array('media' => $oMedia, 'user' => $this->oUserCurrent))
) {
/**
* Удаляем все текущие превью
*/
$this->Media_RemoveAllPreviewByTarget($oTarget->getTargetType(), $oTarget->getTargetId(),
$oTarget->getTargetTmp());
$this->Media_RemoveAllPreviewByTarget($oTarget->getTargetType(), $oTarget->getTargetId(), $oTarget->getTargetTmp());
if (true === $res2 = $this->Media_CreateFilePreview($oMedia, $oTarget)) {
$this->Viewer_AssignAjax('bUnsetOther', true);
} else {
$this->Message_AddErrorSingle(is_string($res2) ? $res2 : $this->Lang_Get('common.error.system.base'));
}
if (true === $res2 = $this->Media_CreateFilePreview($oMedia, $oTarget)) {
$this->Viewer_AssignAjax('bUnsetOther', true);
} else {
$this->Message_AddErrorSingle(is_string($res) ? $res : $this->Lang_Get('common.error.system.base'));
$this->Message_AddErrorSingle(is_string($res2) ? $res2 : $this->Lang_Get('common.error.system.base'));
}
}

View file

@ -515,12 +515,7 @@ class ModuleMedia extends ModuleORM
/**
* Создаем связь с владельцем
*/
$oTarget = Engine::GetEntity('ModuleMedia_EntityTarget');
$oTarget->setMediaId($oMedia->getId());
$oTarget->setTargetType($sTargetType);
$oTarget->setTargetId($sTargetId ? $sTargetId : null);
$oTarget->setTargetTmp($sTargetTmp ? $sTargetTmp : null);
if ($oTarget->Add()) {
if ($oTarget = $this->AttachMediaToTarget($oMedia, $sTargetType, $sTargetId, $sTargetTmp)) {
$oMedia->_setData(array('_relation_entity' => $oTarget));
return $oMedia;
}
@ -528,6 +523,31 @@ class ModuleMedia extends ModuleORM
return false;
}
/**
* Присоединяет медиа файл к объекту
*
* @param $oMedia
* @param $sTargetType
* @param $sTargetId
* @param $sTargetTmp
* @return bool|Entity
*/
public function AttachMediaToTarget($oMedia, $sTargetType, $sTargetId, $sTargetTmp)
{
/**
* Создаем связь с владельцем
*/
$oTarget = Engine::GetEntity('ModuleMedia_EntityTarget');
$oTarget->setMediaId($oMedia->getId());
$oTarget->setTargetType($sTargetType);
$oTarget->setTargetId($sTargetId ?: null);
$oTarget->setTargetTmp($sTargetTmp ?: null);
if ($oTarget->Add()) {
return $oTarget;
}
return false;
}
/**
* Создает набор отресайзанных изображений
* Варианты наименований результирующих файлов в зависимости от размеров:

@ -1 +1 @@
Subproject commit ecd77c7f75cecd35881bb0b2d7fc1dabe872b514
Subproject commit de06013c116bc8a1b84f7f159a82739958fcc91f