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; }
public static function filterFiles(array $fileIDs, $storageTypeID, $userID = 0) { if (!is_integer($storageTypeID)) { $storageTypeID = (int) $storageTypeID; } $result = array(); if ($storageTypeID === StorageType::WebDav) { foreach ($fileIDs as $fileID) { if (\CCrmWebDavHelper::CheckElementReadPermission($fileID, $userID)) { $result[] = $fileID; } } } elseif ($storageTypeID === StorageType::Disk) { foreach ($fileIDs as $fielID) { if (DiskManager::checkFileReadPermission($fielID, $userID)) { $result[] = $fielID; } } } elseif ($storageTypeID === StorageType::File) { $result = $fileIDs; } return $result; }
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; }