Exemple #1
0
 /**
  * Attaching files from the disk to the iblock element
  * @param int $iblockId
  * @param int $elementId
  * @param int $fileId
  * @param array $currentValues Old property values attached id
  * @return int Attached Id
  */
 public static function attachFileDisk($iblockId, $elementId, $fileId, $currentValues)
 {
     if (!CModule::includeModule('disk')) {
         return null;
     }
     $elementId = (int) $elementId;
     if (!$elementId) {
         return null;
     }
     $userFieldManager = Bitrix\Disk\Driver::getInstance()->getUserFieldManager();
     list($connectorClass, $moduleId) = $userFieldManager->getConnectorDataByEntityType('lists_element');
     $filter = array('OBJECT_ID' => $fileId, '=ENTITY_TYPE' => $connectorClass, '=ENTITY_ID' => $elementId, '=MODULE_ID' => $moduleId);
     $listAttachedModel = Bitrix\Disk\AttachedObject::getModelList(array("filter" => $filter));
     if (!empty($listAttachedModel)) {
         foreach ($listAttachedModel as $attachedModel) {
             if (in_array($attachedModel->getId(), $currentValues)) {
                 return $attachedModel->getId();
             }
         }
     }
     $errorCollection = new Bitrix\Disk\Internals\Error\ErrorCollection();
     $fileModel = Bitrix\Disk\File::loadById($fileId, array('STORAGE'));
     if (!$fileModel) {
         return null;
     }
     global $USER;
     if ($USER instanceof CUser && $USER->getId()) {
         $userId = $USER->getId();
     } else {
         $userId = Bitrix\Disk\SystemUser::SYSTEM_USER_ID;
     }
     $attachedModel = Bitrix\Disk\AttachedObject::add(array('MODULE_ID' => $moduleId, 'OBJECT_ID' => $fileModel->getId(), 'ENTITY_ID' => $elementId, 'ENTITY_TYPE' => $connectorClass, 'IS_EDITABLE' => 1, 'ALLOW_EDIT' => (int) (int) Bitrix\Main\Application::getInstance()->getContext()->getRequest()->getPost('DISK_FILE_' . $iblockId . '_DISK_ATTACHED_OBJECT_ALLOW_EDIT'), 'CREATED_BY' => $userId), $errorCollection);
     if (!$attachedModel || $errorCollection->hasErrors()) {
         return null;
     }
     return $attachedModel->getId();
 }