Exemple #1
0
 /**
  * @param $arFilter - array("FORUM_ID" => 241, "TOPIC_ID" => 82383, "APPROVED" => "Y")
  * @param $rights - string(1) (A|R|U|W);
  */
 public static function setWebdavRights($arFilter, $rights)
 {
     if (IsModuleInstalled("webdav")) {
         $arFilter = is_array($arFilter) ? $arFilter : array($arFilter);
         $arFilter[">UF_FORUM_MESSAGE_DOC"] = 0;
         $db_res = CForumMessage::GetList(array("ID" => "ASC"), $arFilter, false, 0, array("SELECT" => array("UF_FORUM_MESSAGE_DOC")));
         $arDocs = array();
         if ($db_res && ($res = $db_res->Fetch())) {
             do {
                 if (!empty($res["UF_FORUM_MESSAGE_DOC"]) && is_array($res["UF_FORUM_MESSAGE_DOC"])) {
                     $arDocs = array_merge($arDocs, $res["UF_FORUM_MESSAGE_DOC"]);
                 }
             } while ($res = $db_res->Fetch());
         }
         if (!empty($arDocs) && CModule::IncludeModule("webdav")) {
             CWebDavIblock::appendRightsOnElements($arDocs, $rights);
         }
     }
 }
 public static function SaveFile($arHistory, $arFile, $siteID = SITE_ID)
 {
     if (!(IsModuleInstalled('iblock') && CModule::IncludeModule('iblock'))) {
         return false;
     }
     $siteID = strval($siteID);
     if ($siteID === '') {
         if (!(defined('ADMIN_SECTION') && ADMIN_SECTION)) {
             $siteID = SITE_ID;
         } else {
             $dbSites = CSite::GetList($by = 'sort', $order = 'desc', array('DEF' => 'Y'));
             while ($arSite = $dbSites->Fetch()) {
                 $siteID = $arSite['LID'];
             }
         }
     }
     if ($siteID === '') {
         return false;
     }
     $blockID = self::ResolveSharedFileIBlockID($siteID);
     if ($blockID <= 0) {
         return false;
     }
     $blockSectionID = self::EnsureSharedFileSectionCreated($blockID, $siteID);
     if ($blockSectionID <= 0) {
         return false;
     }
     $fileInfo = pathinfo($arFile['ORIGINAL_NAME']);
     $fileInfo['filename'] = $arHistory['CALL_START_DATE']->format("Y-m-d_h-i-s__") . $arHistory['PHONE_NUMBER'];
     $elementName = isset($fileInfo['extension']) ? "{$fileInfo['filename']}.{$fileInfo['extension']}" : "{$fileInfo['filename']}";
     $element = new CIBlockElement();
     $alreadyExists = false;
     $i = 0;
     do {
         if ($alreadyExists) {
             $i++;
             $elementName = isset($fileInfo['extension']) ? "{$fileInfo['filename']}_{$i}.{$fileInfo['extension']}" : "{$fileInfo['filename']}_{$i}";
         }
         $dbRes = $element->GetList(array(), array('=NAME' => $elementName, 'IBLOCK_ID' => $blockID, 'IBLOCK_SECTION_ID' => $blockSectionID), false, array('nTopCount' => 1), array('ID'));
         $arRes = $dbRes ? $dbRes->Fetch() : false;
         $alreadyExists = $arRes !== false;
     } while ($alreadyExists);
     $arFields = array('ACTIVE' => 'Y', 'IBLOCK_ID' => $blockID, 'IBLOCK_SECTION_ID' => $blockSectionID, 'NAME' => $elementName, 'WF_COMMENTS' => '', 'PROPERTY_VALUES' => array('FILE' => $arFile, 'WEBDAV_SIZE' => $arFile['FILE_SIZE']));
     $elementId = $element->Add($arFields, false, true, false);
     $arRights = array('G1');
     if ($arHistory['PORTAL_USER_ID'] > 0) {
         $arRights[] = 'U' . $arHistory['PORTAL_USER_ID'];
     }
     CWebDavIblock::appendRightsOnElements(array(array('ID' => $elementId, 'IBLOCK_ID' => $blockID)), array('W' => $arRights));
     return $elementId;
 }