• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/uf/fileusertype.php
  • Класс: BitrixDiskUfFileUserType
  • Вызов: FileUserType::getItemsInfo
static function getItemsInfo($itemsList)
{
	$objects = [];
	$itemsIds = [
		'objects'  => [],
		'attached' => [],
	];

	foreach ($itemsList as $k => $item)
	{
		if (is_scalar($item))
		{
			$itemsList[$k] = $item = trim($item);

			if (preg_match(sprintf('/^(%s)?(d+)$/', preg_quote(self::NEW_FILE_PREFIX, '/')), $item, $matches))
			{
				$itemType = $matches[1] ? 'objects' : 'attached';
				$itemsIds[$itemType][$matches[2]] = $matches[0];
			}
		}
		else if ($item instanceof BaseObject)
		{
			$objects[$k] = $item;
		}
		else if ($item instanceof AttachedObject)
		{
			$objects[$k] = $item->getObject();
		}
	}

	if (!empty($itemsIds['objects']))
	{
		$filter = array('@ID' => array_keys($itemsIds['objects']));
		foreach (BaseObject::getModelList(array('filter' => $filter)) as $object)
			$objects[$itemsIds['objects'][$object->getId()]] = $object;
	}

	if (!empty($itemsIds['attached']))
	{
		$diskUfManager = Driver::getInstance()->getUserFieldManager();
		$diskUfManager->loadBatchAttachedObject($itemsIds['attached']);
		foreach ($itemsIds['attached'] as $attachedId)
		{
			if ($attachedObject = $diskUfManager->getAttachedObjectById($attachedId))
				$objects[$attachedId] = $attachedObject->getObject();
		}
	}

	$urlManager = Driver::getInstance()->getUrlManager();
	foreach ($itemsList as $k => $item)
	{
		$key = $k;

		if (is_scalar($item))
		{
			$itemId = $item;
			$key    = $item;
		}
		else if ($item instanceof BaseObject)
		{
			$itemId = sprintf('%s%u', self::NEW_FILE_PREFIX, $item->getId());
		}
		else if ($item instanceof AttachedObject)
		{
			$itemId = $item->getId();
		}

		if (!array_key_exists($key, $objects))
		{
			unset($itemsList[$k]);
			continue;
		}

		$item = $objects[$key];
		$itemsList[$k] = array(
			'id'            => $itemId,
			'attachId'      => $itemId,
			'fileId'        => $item->getId(),
			'originalId'    => $item->getId(),
			'name'          => $item->getName(),
			'type'          => $item instanceof File ? 'file' : 'folder',
			'size'          => '',
			'sizeInt'       => '',
			'modifyBy'      => $item->getUpdateUser()->getFormattedName(),
			'modifyDate'    => $item->getUpdateTime()->format('d.m.Y'),
			'modifyDateInt' => $item->getUpdateTime()->getTimestamp(),
		);

		if ($item instanceof File)
		{
			$itemsList[$k] = array_merge(
				$itemsList[$k],
				array(
					'ext'      => $item->getExtension(),
					'size'     => CFile::formatSize($item->getSize()),
					'sizeInt'  => $item->getSize(),
					'storage'  => sprintf(
						'%s / %s',
						$item->getStorage()->getProxyType()->getTitleForCurrentUser(),
						$item->getParent()->getName()
					),
				)
			);

			if (BitrixDiskTypeFile::isImage($item))
				$itemsList[$k]['previewUrl'] = $urlManager->getUrlForShowFile($item);

			if ($fileType = $item->getView()->getEditorTypeFile())
				$itemsList[$k]['fileType'] = $fileType;
		}
	}

	return $itemsList;
}