예제 #1
0
 function CanUserOperateDocument($operation, $userId, $documentId, $arParameters = array())
 {
     if (CWikiSocnet::IsSocNet()) {
         return CWikiUtils::CheckAccess('write');
     } else {
         return parent::CanUserOperateDocument($operation, $userId, $documentId, $arParameters);
     }
 }
예제 #2
0
 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;
 }
예제 #3
0
 $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);
예제 #4
0
    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;
}
예제 #5
0
 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');
 }
예제 #6
0
 /**
  * <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;
     }
 }
예제 #7
0
    $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']);
    }
예제 #8
0
<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')) {
예제 #9
0
파일: step2.php 프로젝트: Satariall/izurit
         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);
예제 #10
0
 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;
 }
예제 #11
0
 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;
 }
예제 #12
0
//$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;