Example #1
0
 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);
     }
 }
Example #2
0
 /**
  * @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");
 }
Example #3
0
 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;
 }