/** * @param array $fileData * @param string $siteID * @return array|null */ public static function getFileInfo($fileID, $storageTypeID = 0, $checkPermissions = true, $options = null) { if (!is_integer($storageTypeID)) { $storageTypeID = (int) $storageTypeID; } if (!StorageType::isDefined($storageTypeID)) { $storageTypeID = StorageType::getDefaultTypeID(); } if ($storageTypeID === StorageType::Disk) { return DiskManager::getFileInfo($fileID, $checkPermissions, $options); } elseif ($storageTypeID === StorageType::WebDav) { return \CCrmWebDavHelper::getElementInfo($fileID, $checkPermissions); } elseif ($storageTypeID === StorageType::File) { $fileInfo = \CFile::GetFileArray($fileID); if (!is_array($fileInfo)) { return null; } return array('ID' => $fileID, 'NAME' => isset($fileInfo['ORIGINAL_NAME']) ? $fileInfo['ORIGINAL_NAME'] : $fileID, 'SIZE' => \CFile::FormatSize($fileInfo['FILE_SIZE'] ? $fileInfo['FILE_SIZE'] : 0), 'VIEW_URL' => isset($fileInfo['SRC']) ? $fileInfo['SRC'] : ''); } throw new Main\NotSupportedException("Storage type: '{$storageTypeID}' is not supported in current context"); }
protected function tryExternalizeDiskFileField(&$fields, $fieldName, $multiple = false) { if (!isset($fields[$fieldName])) { return false; } if (!$multiple) { $fileID = intval($fields[$fieldName]); $info = DiskManager::getFileInfo($fileID, false); if (empty($info)) { unset($fields[$fieldName]); return false; } else { $fields[$fieldName] = array('id' => $fileID, 'url' => isset($info['VIEW_URL']) ? $info['VIEW_URL'] : ''); return true; } } $result = array(); $fileIDs = $fields[$fieldName]; if (is_array($fileIDs)) { foreach ($fileIDs as $fileID) { $info = DiskManager::getFileInfo($fileID, false); if (empty($info)) { continue; } $result[] = array('id' => $fileID, 'url' => isset($info['VIEW_URL']) ? $info['VIEW_URL'] : ''); } } if (!empty($result)) { $fields[$fieldName] =& $result; unset($result); return true; } unset($fields[$fieldName]); return false; }
protected function tryExternalizeDiskFileField(&$fields, $fieldName, $multiple = false) { if (!isset($fields[$fieldName])) { return false; } $options = array('OWNER_TYPE_ID' => $this->getOwnerTypeID(), 'OWNER_ID' => $fields['ID'], 'VIEW_PARAMS' => array('auth' => $this->server->getAuth()), 'USE_ABSOLUTE_PATH' => true); if (!$multiple) { $fileID = intval($fields[$fieldName]); $info = DiskManager::getFileInfo($fileID, false, $options); if (empty($info)) { unset($fields[$fieldName]); return false; } else { $fields[$fieldName] = array('id' => $fileID, 'url' => isset($info['VIEW_URL']) ? $info['VIEW_URL'] : ''); return true; } } $result = array(); $fileIDs = $fields[$fieldName]; if (is_array($fileIDs)) { foreach ($fileIDs as $fileID) { $info = DiskManager::getFileInfo($fileID, false, $options); if (empty($info)) { continue; } $result[] = array('id' => $fileID, 'url' => isset($info['VIEW_URL']) ? $info['VIEW_URL'] : ''); } } if (!empty($result)) { $fields[$fieldName] =& $result; unset($result); return true; } unset($fields[$fieldName]); return false; }