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:
parent
c0c92ba5c5
commit
b1afc7acb0
|
@ -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'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
Loading…
Reference in a new issue