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