- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/componenthelper.php
- Класс: BitrixSocialnetworkComponentHelper
- Вызов: ComponentHelper::getInlineDiskImages
static function getInlineDiskImages(array $params = []): array
{
$result = [];
$text = (string)($params['text'] ?? '');
$commentId = (int)($params['commentId'] ?? 0);
if (
$text === ''
|| $commentId <= 0
|| !ModuleManager::isModuleInstalled('disk')
)
{
return $result;
}
$inlineDiskObjectIdList = [];
$inlineDiskAttachedObjectIdList = [];
// parse inline disk object ids
if (preg_match_all('#\[disk file id=(n\d+)\]#is' . BX_UTF_PCRE_MODIFIER, $text, $matches))
{
$inlineDiskObjectIdList = array_map(function($a) { return (int)mb_substr($a, 1); }, $matches[1]);
}
// parse inline disk attached object ids
if (preg_match_all('#\[disk file id=(\d+)\]#is' . BX_UTF_PCRE_MODIFIER, $text, $matches))
{
$inlineDiskAttachedObjectIdList = array_map(function($a) { return (int)$a; }, $matches[1]);
}
if (
(
empty($inlineDiskObjectIdList)
&& empty($inlineDiskAttachedObjectIdList)
)
|| !Loader::includeModule('disk')
)
{
return $result;
}
$filter = [
'=OBJECT.TYPE_FILE' => TypeFile::IMAGE
];
$subFilter = [];
if (!empty($inlineDiskObjectIdList))
{
$subFilter['@OBJECT_ID'] = $inlineDiskObjectIdList;
}
elseif (!empty($inlineDiskAttachedObjectIdList))
{
$subFilter['@ID'] = $inlineDiskAttachedObjectIdList;
}
if(count($subFilter) > 1)
{
$subFilter['LOGIC'] = 'OR';
$filter[] = $subFilter;
}
else
{
$filter = array_merge($filter, $subFilter);
}
$res = BitrixDiskInternalsAttachedObjectTable::getList([
'filter' => $filter,
'select' => array('ID', 'ENTITY_ID')
]);
while ($attachedObjectFields = $res->fetch())
{
if ((int)$attachedObjectFields['ENTITY_ID'] === $commentId)
{
$result[] = (int)$attachedObjectFields['ID'];
}
}
return $result;
}