예제 #1
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;
 }
예제 #2
0
 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;
 }
예제 #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;
 }