function CanUserOperateDocument($operation, $userId, $documentId, $arParameters = array()) { if (CWikiSocnet::IsSocNet()) { return CWikiUtils::CheckAccess('write'); } else { return parent::CanUserOperateDocument($operation, $userId, $documentId, $arParameters); } }
$newName = $_POST["NEW_NAME"]; if (!isset($newName) || $newName == "" || $newName == $arResult['ELEMENT']['NAME_LOCALIZE']) { break; } $sCatName = ''; if (CWikiUtils::IsCategoryPage($arParams['ELEMENT_NAME'], $sCatName)) { $newName = 'category:' . $newName; } if (!$CWiki->Rename($arParams['ELEMENT_ID'], array('NAME' => $newName, 'IBLOCK_ID' => $arParams['IBLOCK_ID']), true)) { $arResult['ERROR_MESSAGE'] = GetMessage('WIKI_ERROR_RENAME'); break; } $iBlockSectId = CWikiSocnet::$iCatId ? CWikiSocnet::$iCatId : false; $CWiki->RenameLinkOnPages($arParams['IBLOCK_ID'], $arParams['ELEMENT_NAME'], $newName, $iBlockSectId); //post to feed if (CWikiSocnet::IsSocNet()) { $postUrl = str_replace(array('#group_id#', '#wiki_name#'), array(intval($arParams['SOCNET_GROUP_ID']), urlencode($newName)), $arParams['~PATH_TO_POST']); $dbLog = CSocNetLog::GetList(array('ID' => 'DESC'), array('SOURCE_ID' => $arParams['ELEMENT_ID'])); if ($arLog = $dbLog->Fetch()) { $arSoFields = array('=LOG_DATE' => $GLOBALS['DB']->CurrentTimeFunction(), '=LOG_UPDATE' => $GLOBALS['DB']->CurrentTimeFunction(), 'USER_ID' => $GLOBALS['USER']->GetID(), 'TITLE' => $newName, 'TEXT_MESSAGE' => "\n" . GetMessage('WIKI_MODIFY_COMMENT') . ": " . GetMessage('WIKI_PAGE_RENAMED', array("%OLD_NAME%" => $arParams['ELEMENT_NAME'], "%NEW_NAME%" => $newName)) . "\n", 'URL' => $postUrl); //die(print_r($arSoFields,true)); $logID = CSocNetLog::Update($arLog['ID'], $arSoFields); if (intval($logID) > 0) { CSocNetLogRights::SetForSonet($arLog['ID'], SONET_SUBSCRIBE_ENTITY_GROUP, intval($arParams['SOCNET_GROUP_ID']), "wiki", "view"); CSocNetLog::CounterIncrement($logID); $notify_title_tmp = str_replace(array("\r\n", "\n"), " ", $arLog["TITLE"]); $notify_title_old = TruncateText($notify_title_tmp, 100); $notify_title_old_out = TruncateText($notify_title_tmp, 255); $notify_title_tmp = str_replace(array("\r\n", "\n"), " ", $newName); $notify_title_new = TruncateText($notify_title_tmp, 100); $notify_title_new_out = TruncateText($notify_title_tmp, 255);
/** * <p>Метод проверяет доступ пользователя.</p> * * * * * @param string $access Тип проверяемого доступа (view, write, delete) * * * * @return bool * * * <h4>See Also</h4> * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/wiki/classes/cwikiutils/IsReadable.php">CWikiUtils::isReadable</a> * </li> <li> <a * href="http://dev.1c-bitrix.ru/api_help/wiki/classes/cwikiutils/IsWriteable.php">CWikiUtils::isWriteable</a> </li> <li> * <a href="http://dev.1c-bitrix.ru/api_help/wiki/classes/cwikiutils/IsDeleteable.php">CWikiUtils::IsDeleteable</a> </li> * <li> <a href="http://dev.1c-bitrix.ru/api_help/wiki/classes/cwikiutils/IsAllowHTML.php">CWikiUtils::isAllowHTML</a> * </li> </ul><br><br> * * * @static * @link http://dev.1c-bitrix.ru/api_help/wiki/classes/cwikiutils/CheckAccess.php * @author Bitrix */ static function CheckAccess($access = 'view') { global $APPLICATION, $USER, $arParams; if ($USER->IsAdmin()) { return true; } if (CWikiSocnet::IsSocNet()) { $arSonetGroup = CSocNetGroup::GetByID($iSocNetId); if ($arSonetGroup && CSocNetUser::IsCurrentUserModuleAdmin($arSonetGroup['SITE_ID'])) { return true; } if (!CSocNetFeaturesPerms::CanPerformOperation($USER->GetID(), SONET_ENTITY_GROUP, CWikiSocnet::$iSocNetId, 'wiki', $access)) { return false; } return true; } else { $letter = 'R'; $letterI = 'R'; switch ($access) { case 'write': $letter = 'W'; $letterI = 'W'; break; case 'delete': $letter = 'Y'; $letterI = 'W'; break; case 'perm': $letter = 'Z'; $letterI = 'X'; break; } $wikiModulePermission = $APPLICATION->GetGroupRight('wiki'); $iblockPermission = CIBlock::GetPermission($arParams['IBLOCK_ID']); return $wikiModulePermission >= $letter && $iblockPermission >= $letterI; } }
$iblock_id_tmp = CWikiSocnet::RecalcIBlockID($arParams["SOCNET_GROUP_ID"]); if ($iblock_id_tmp) { $arParams['IBLOCK_ID'] = $iblock_id_tmp; } if (!CWikiSocnet::Init($arParams['SOCNET_GROUP_ID'], $arParams['IBLOCK_ID'])) { ShowError(GetMessage('WIKI_SOCNET_INITIALIZING_FAILED')); return; } $arResult['SOCNET'] = true; } if (!CWikiUtils::IsReadable()) { ShowError(GetMessage('WIKI_ACCESS_DENIED')); return; } $_arParams = $arParams; $iCatId = CWikiSocnet::IsSocNet() ? CWikiSocnet::$iCatId : ""; if (CWiki::IsPageUpdated($arParams['IBLOCK_ID'], $iCatId, $arParams['ELEMENT_NAME'], $arParams['CACHE_TIME'])) { $arResult["PAGE_CACHE_CLEAR"] = true; CWiki::UnMarkPageAsUpdated($arParams['IBLOCK_ID'], $iCatId, $arParams['ELEMENT_NAME']); } if ($arResult["PAGE_CACHE_CLEAR"]) { $this->ClearResultCache(array($USER->GetGroups(), $arCache)); } if ($this->StartResultCache(false, array($USER->GetGroups(), $arCache))) { $arParams['ELEMENT_NAME'] = urldecode($arParams['ELEMENT_NAME']); $arFilter = array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N', 'ACTIVE' => 'Y'); $bNotPage = false; if (empty($arParams['ELEMENT_NAME'])) { $bNotPage = true; $arParams['ELEMENT_NAME'] = CWiki::GetDefaultPage($arParams['IBLOCK_ID']); }
function processInternalLink($text) { global $APPLICATION, $arParams; $text = preg_replace_callback('/\\[\\[(.+)(\\|(.*))?\\]\\]/iU' . BX_UTF_PCRE_MODIFIER, array(&$this, '_processInternalLinkPrepareCallback'), $text); $text = preg_replace('/(##Category##)(\\s)*((\\r*)\\n)*/', "", $text); // check pages for exists if (!empty($this->arLink)) { $arFilter = array(); $arFilter['NAME'] = $this->arLink; $arFilter['IBLOCK_ID'] = $arParams['IBLOCK_ID']; $arFilter['ACTIVE'] = 'Y'; $arFilter['CHECK_PERMISSIONS'] = 'N'; if (CWikiSocnet::IsSocNet()) { $arFilter['SUBSECTION'] = CWikiSocnet::$iCatId; } $rsElement = CIBlockElement::GetList(array(), $arFilter, false, false, array()); while ($obElement = $rsElement->GetNextElement()) { $arFields = $obElement->GetFields(); $this->arLinkExists[] = strtolower(CWikiUtils::htmlspecialcharsback($arFields['NAME'], true)); } } $text = preg_replace_callback('/(##LINK(\\d+)##)/isU' . BX_UTF_PCRE_MODIFIER, array(&$this, '_processInternalLinkCallback'), $text); return $text; }
private function CleanCache($ID = false, $Name = false, $iBlockId = false) { if ($ID === false && !$Name) { return false; } global $CACHE_MANAGER; if ($ID !== false) { $CACHE_MANAGER->ClearByTag('wiki_' . $ID); } if (!$iBlockId) { return true; } $iCatId = CWikiSocnet::IsSocNet() ? CWikiSocnet::$iCatId : ""; if ($ID !== false) { $cacheByNameID = self::GetIdForCacheByName($iBlockId, $iCatId, $ID); $CACHE_MANAGER->Clean($cacheByNameID); if (!$Name) { $arFilter = array('IBLOCK_ID' => $iBlockId, 'CHECK_PERMISSIONS' => 'N'); $arElement = self::GetElementById($ID, $arFilter); if ($arElement != false) { $elName = $arElement['NAME']; } } else { $elName = $Name; } } $cacheByNameID = self::GetIdForCacheByName($iBlockId, $iCatId, $elName); $CACHE_MANAGER->Clean($cacheByNameID); return true; }