• Модуль: 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;
}