/** * @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; }