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