function CanUserOperateDocument($operation, $userId, $documentId, $arParameters = array()) { if (CWikiSocnet::IsSocNet()) { return CWikiUtils::CheckAccess('write'); } else { return parent::CanUserOperateDocument($operation, $userId, $documentId, $arParameters); } }
static function Init($SOCNET_GROUP_ID, $IBLOCK_ID) { if (self::$bInit) { return self::$bInit; } if (!self::IsEnabledSocnet()) { return false; } self::$iSocNetId = intVal($SOCNET_GROUP_ID); // detect work group $arFilter = array(); $arFilter['IBLOCK_ID'] = $IBLOCK_ID; $arFilter['SOCNET_GROUP_ID'] = self::$iSocNetId; $arFilter['CHECK_PERMISSIONS'] = 'N'; $rsSection = CIBlockSection::GetList(array($by => $order), $arFilter, true); $obSection = $rsSection->GetNextElement(); if ($obSection !== false) { $arResult = $obSection->GetFields(); self::$iCatId = $arResult['ID']; self::$iCatLeftBorder = $arResult['LEFT_MARGIN']; self::$iCatRightBorder = $arResult['RIGHT_MARGIN']; } else { $arWorkGroup = CSocNetGroup::GetById(self::$iSocNetId); $arFields = array('ACTIVE' => 'Y', 'IBLOCK_ID' => $IBLOCK_ID, 'SOCNET_GROUP_ID' => self::$iSocNetId, 'CHECK_PERMISSIONS' => 'N', 'NAME' => $arWorkGroup['NAME']); $CIB_S = new CIBlockSection(); self::$iCatId = $CIB_S->Add($arFields); if (self::$iCatId == false) { self::$bInit = false; return false; } $rsSection = CIBlockSection::GetList(array($by => $order), $arFilter, true); $obSection = $rsSection->GetNextElement(); if ($obSection == false) { self::$bInit = false; return false; } $arResult = $obSection->GetFields(); self::$iCatLeftBorder = $arResult['LEFT_MARGIN']; self::$iCatRightBorder = $arResult['RIGHT_MARGIN']; } self::$bInit = CSocNetFeatures::IsActiveFeature(SONET_ENTITY_GROUP, self::$iSocNetId, 'wiki'); return self::$bInit; }
$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);
ShowError(GetMessage('IBLOCK_NOT_ASSIGNED')); return; } if (CWikiSocnet::isEnabledSocnet() && !empty($arParams['SOCNET_GROUP_ID'])) { if (!CModule::IncludeModule('socialnetwork')) { ShowError(GetMessage('SOCNET_MODULE_NOT_INSTALLED')); return; } } $arResult['SOCNET'] = false; if (CWikiSocnet::isEnabledSocnet() && !empty($arParams['SOCNET_GROUP_ID'])) { $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; } $res = CIBlock::GetList(array(), array("ID" => $arParams['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N')); $arIBLOCK = $res->GetNext(); if (empty($arIBLOCK['BIZPROC']) || $arIBLOCK['BIZPROC'] != 'Y') { ShowError(GetMessage('WIKI_NOT_CHANGE_BIZPROC')); return; }
function DoUninstall() { global $APPLICATION, $DB; if (CModule::IncludeModule('socialnetwork')) { require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/wiki/include.php'; CWikiSocnet::EnableSocnet(false); } $this->UnInstallFiles(); $this->UnInstallDB(); CBXFeatures::SetFeatureEnabled('Wiki', false); $APPLICATION->IncludeAdminFile(GetMessage('WIKI_UNINSTALL_TITLE'), $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/wiki/install/unstep.php'); }
/** * <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']); }
<form method="POST" action="<?php echo $APPLICATION->GetCurPage(); ?> ?mid=<?php echo htmlspecialcharsbx($mid); ?> &lang=<?php echo LANGUAGE_ID; ?> " name="wiki_settings"> <?php $tabControl->BeginNextTab(); __AdmSettingsDrawList('wiki', $arAllOptions); if (IsModuleInstalled('socialnetwork')) { $socnet_iblock_id = COption::GetOptionString($module_id, 'socnet_iblock_id'); $socnet_enable = COption::GetOptionString($module_id, 'socnet_enable') == 'Y' && CWikiSocnet::IsEnabledSocnet() ? 'Y' : 'N'; $tabControl->BeginNextTab(); __AdmSettingsDrawRow('wiki', array('socnet_enable', GetMessage('WIKI_OPTIONS_SOCNET_ENABLE'), $socnet_enable, array('checkbox'))); ?> <tr> <td><?php echo GetMessage('WIKI_OPTIONS_SOCNET_IBLOCK_ID'); ?> </td> <td><?php echo GetIBlockDropDownList($socnet_iblock_id, 'socnet_iblock_type_id', 'socnet_iblock_id'); ?> </td> </tr> <?php if (IsModuleInstalled('forum')) {
if (!empty($arUGroupsEx)) { $arFields["GROUP_ID"] = $arUGroupsEx; } $SOCNET_ID = $ib->Add($arFields); if ($SOCNET_ID <= 0) { $strWarning .= $ib->LAST_ERROR . "<br>"; $bVarsFromForm = true; $DB->Rollback(); } else { $DB->Commit(); $_REQUEST["new_socnet_iblock_name"] = ""; $_REQUEST["new_socnet_iblock"] = "created"; COption::SetOptionString("wiki", "socnet_iblock_type_id", $IBLOCK_TYPE_ID); COption::SetOptionString("wiki", "socnet_iblock_id", $SOCNET_ID); COption::SetOptionString("wiki", "socnet_enable", "Y"); CWikiSocnet::EnableSocnet(true); } } } if (!$bVarsFromForm && $_REQUEST["socnet_forum"] == "Y" && IsModuleInstalled("forum") && $GLOBALS["APPLICATION"]->GetGroupRight("forum") >= "W") { CModule::IncludeModule("forum"); $arFields = array("ACTIVE" => "Y", "NAME" => $_REQUEST["socnet_forum_name"], "GROUP_ID" => array(1 => "Y", 2 => "E", 3 => "M"), "SITES" => array()); $db_res = CSite::GetList($lby = "sort", $lorder = "asc"); while ($res = $db_res->Fetch()) { if (IsModuleInstalled("intranet")) { $arFields["SITES"][$res["LID"]] = "/community/forum/forum#FORUM_ID#/topic#TOPIC_ID#/"; } else { $arFields["SITES"][$res["LID"]] = "/communication/forum/forum#FORUM_ID#/topic#TOPIC_ID#/"; } } $SOCNET_FORUM_ID = CForumNew::Add($arFields);
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; }
//$arResult['TOPLINKS'] = CWikiUtils::getRightsLinks('discussion', $arParams); $arResult['CACHE_TYPE'] = $arParams['CACHE_TYPE']; $arResult['CACHE_TIME'] = $arParams['CACHE_TIME']; $arResult['MESSAGES_PER_PAGE'] = $arParams['MESSAGES_PER_PAGE']; $arResult['USE_CAPTCHA'] = $arParams['USE_CAPTCHA']; $arResult['PATH_TO_SMILE'] = $arParams['PATH_TO_SMILE']; $arResult['URL_TEMPLATES_READ'] = $arParams['URL_TEMPLATES_READ']; $arResult['SHOW_LINK_TO_FORUM'] = $arParams['SHOW_LINK_TO_FORUM'] == 'Y' ? 'Y' : 'N'; $arResult['ELEMENT_ID'] = $arResult['ELEMENT']['ID']; $arResult['IBLOCK_ID'] = $arParams['IBLOCK_ID']; $arResult['FORUM_ID'] = $arParams['FORUM_ID']; $arResult['POST_FIRST_MESSAGE'] = $arParams['POST_FIRST_MESSAGE']; $arResult['URL_TEMPLATES_DETAIL'] = $arParams['URL_TEMPLATES_DETAIL']; $arResult['NAME_TEMPLATE'] = $arParams['NAME_TEMPLATE']; include_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/components/bitrix/wiki/include/nav.php'; if (CWikiSocnet::isEnabledSocnet() && !empty($arParams['SOCNET_GROUP_ID'])) { class CSocNetWikiForumEvent { var $arPath; var $ForumID = null; function SetVars($arParams, $arResult) { $this->arPath['PATH_TO_SMILE'] = $arParams['PATH_TO_SMILE']; $this->arPath['PATH_TO_USER'] = $arParams['PATH_TO_USER']; $this->arPath['PATH_TO_POST'] = $arParams['~PATH_TO_POST']; $this->ForumID = $arParams['FORUM_ID']; $this->SonetGroupID = $arParams['SOCNET_GROUP_ID']; } function onAfterMessageAdd($ID, $arFields) { $bSocNetLogRecordExists = false;