public static function PrepareStorageElementInfo(&$arFields) { $storageTypeID = isset($arFields['STORAGE_TYPE_ID']) ? (int) $arFields['STORAGE_TYPE_ID'] : StorageType::Undefined; if (!StorageType::IsDefined($storageTypeID)) { $storageTypeID = self::GetDefaultStorageTypeID(); } $storageElementIDs = isset($arFields['STORAGE_ELEMENT_IDS']) && is_array($arFields['STORAGE_ELEMENT_IDS']) ? $arFields['STORAGE_ELEMENT_IDS'] : array(); if ($storageTypeID === StorageType::File) { $arFields['FILES'] = array(); foreach ($storageElementIDs as $fileID) { $arData = CFile::GetFileArray($fileID); if (is_array($arData)) { $arFields['FILES'][] = array('fileID' => $arData['ID'], 'fileName' => $arData['FILE_NAME'], 'fileURL' => CCrmUrlUtil::UrnEncode($arData['SRC']), 'fileSize' => $arData['FILE_SIZE']); } } } elseif ($storageTypeID === StorageType::WebDav) { $infos = array(); foreach ($storageElementIDs as $elementID) { $infos[] = \CCrmWebDavHelper::GetElementInfo($elementID, $storageTypeID); } $arFields['WEBDAV_ELEMENTS'] =& $infos; unset($infos); } elseif ($storageTypeID === StorageType::Disk) { $infos = array(); foreach ($storageElementIDs as $elementID) { $infos[] = Bitrix\Crm\Integration\DiskManager::getFileInfo($elementID, false, array('OWNER_TYPE_ID' => CCrmOwnerType::Activity, 'OWNER_ID' => $arFields['ID'])); } $arFields['DISK_FILES'] =& $infos; unset($infos); } }
/** * @param int $fileID * @param int $storageTypeID * @return string */ public static function getFileName($fileID, $storageTypeID) { if (!is_integer($fileID)) { $storageTypeID = (int) $fileID; } if (!is_integer($storageTypeID)) { $storageTypeID = (int) $storageTypeID; } if ($storageTypeID === StorageType::Disk) { return DiskManager::getFileName($fileID); } elseif ($storageTypeID === StorageType::WebDav) { $info = \CCrmWebDavHelper::GetElementInfo($fileID, false); return is_array($info) && isset($info['NAME']) ? $info['NAME'] : "[{$fileID}]"; } elseif ($storageTypeID === StorageType::File) { $info = \CFile::GetFileArray($fileID); return is_array($info) && isset($info['FILE_NAME']) ? $info['FILE_NAME'] : "[{$fileID}]"; } throw new Main\NotSupportedException("Storage type: '{$storageTypeID}' is not supported in current context"); }
protected function tryExternalizeWebDavElementField(&$fields, $fieldName, $multiple = false) { if (!isset($fields[$fieldName])) { return false; } if (!$multiple) { $elementID = intval($fields[$fieldName]); $info = CCrmWebDavHelper::GetElementInfo($elementID, false); if (empty($info)) { unset($fields[$fieldName]); return false; } else { $fields[$fieldName] = array('id' => $elementID, 'url' => isset($info['SHOW_URL']) ? $info['SHOW_URL'] : ''); return true; } } $result = array(); $elementsID = $fields[$fieldName]; if (is_array($elementsID)) { foreach ($elementsID as $elementID) { $elementID = intval($elementID); $info = CCrmWebDavHelper::GetElementInfo($elementID, false); if (empty($info)) { continue; } $result[] = array('id' => $elementID, 'url' => isset($info['SHOW_URL']) ? $info['SHOW_URL'] : ''); } } if (!empty($result)) { $fields[$fieldName] =& $result; unset($result); return true; } unset($fields[$fieldName]); return false; }