Была задача — Получить все файлы, которые были в комментариях к задачам. Делаем!
Не забываем подключать модуль диска
if (!\Bitrix\Main\Loader::includeModule('disk')) { return array(); }
Получаем список всех аттачментов по следующим параметрам:
'=ENTITY_TYPE' => 'Bitrix\Disk\Uf\ForumMessageConnector', // для каждого модуля свой коннектор '=MODULE_ID' => 'forum', // ID модуля '=VERSION_ID' => null, // версия файла '=ENTITY_ID' => $arData['ID'] // ID комментария
$attachedObjects = \Bitrix\Disk\Internals\AttachedObjectTable::getList( array( 'select' => array('ID'), 'filter' => array( '=ENTITY_TYPE' => 'Bitrix\Disk\Uf\ForumMessageConnector', '=MODULE_ID' => 'forum', '=VERSION_ID' => null, '=ENTITY_ID' => $arData['ID'] ) ) );
Создаем массив со ссылками на файлы
foreach ($attachedObjects as $attachedObject) { $arData['ATTACHED_OBJECTS'][] = '/bitrix/tools/disk/uf.php?' . http_build_query( array( 'action' => 'download', 'ncc' => 1, // отключаем работу композера 'attachedId' => $attachedObject['ID'] ) ); }
UPDATE: Нашел более короткую запись
$driver = \Bitrix\Disk\Driver::getInstance(); $userFieldManager = $driver->getUserFieldManager(); $urlManager = $driver->getUrlManager(); while ($arData = $rsData->fetch()) { if($arData['POST_MESSAGE'] == 'TASK_'.$taskData['ID']) // typically the first one is a non-interesting system message, so skip it continue; foreach ($userFieldManager->getAttachedObjectByEntity('FORUM_MESSAGE', $arData['ID'], 'UF_FORUM_MESSAGE_DOC') as $attachedObject) $arData['ATTACHED_OBJECTS'][] = $urlManager::getUrlUfController('download', array('attachedId' => $attachedObject->getId())); $arItemsData[] = $arData; }
Спасибо, очень помогло
Теперь осталось откопать как сохранять файлы в комментарии задачи..