Beispiel #1
0
 /**
  * Add rights for reading files by given users.
  * @deprecated
  */
 private static function addFilesRights($taskId, $arFilesIds)
 {
     $arFilesIds = array_unique(array_filter($arFilesIds));
     // Nothing to do?
     if (empty($arFilesIds)) {
         return;
     }
     if (!CModule::IncludeModule('webdav')) {
         return;
     }
     $arRightsTasks = CWebDavIblock::GetTasks();
     // tasks-operations
     $oTask = new CTaskItem((int) $taskId, 1);
     $arTask = $oTask->getData(false);
     $arTaskMembers = array_unique(array_merge(array($arTask['CREATED_BY'], $arTask['RESPONSIBLE_ID']), $arTask['AUDITORS'], $arTask['ACCOMPLICES']));
     $ibe = new CIBlockElement();
     $dbWDFile = $ibe->GetList(array(), array('ID' => $arFilesIds, 'SHOW_NEW' => 'Y'), false, false, array('ID', 'NAME', 'SECTION_ID', 'IBLOCK_ID', 'WF_NEW'));
     if ($dbWDFile) {
         $i = 0;
         $arRightsForTaskMembers = array();
         foreach ($arTaskMembers as $userId) {
             // For intranet users and their managers
             $arRightsForTaskMembers['n' . $i++] = array('GROUP_CODE' => 'IU' . $userId, 'TASK_ID' => $arRightsTasks['R']);
             // For extranet users
             $arRightsForTaskMembers['n' . $i++] = array('GROUP_CODE' => 'U' . $userId, 'TASK_ID' => $arRightsTasks['R']);
         }
         $iNext = $i;
         while ($arWDFile = $dbWDFile->Fetch()) {
             if (!$arWDFile['IBLOCK_ID']) {
                 continue;
             }
             $fileId = $arWDFile['ID'];
             if (CIBlock::GetArrayByID($arWDFile['IBLOCK_ID'], "RIGHTS_MODE") === "E") {
                 $ibRights = new CIBlockElementRights($arWDFile['IBLOCK_ID'], $fileId);
                 $arCurRightsRaw = $ibRights->getRights();
                 // Preserve existing rights
                 $i = $iNext;
                 $arRights = $arRightsForTaskMembers;
                 foreach ($arCurRightsRaw as $arRightsData) {
                     $arRights['n' . $i++] = array('GROUP_CODE' => $arRightsData['GROUP_CODE'], 'TASK_ID' => $arRightsData['TASK_ID']);
                 }
                 $ibRights->setRights($arRights);
             }
         }
     }
 }