示例#1
0
        ShowError(GetMessage('WIKI_SOCNET_INITIALIZING_FAILED'));
        return;
    }
}
if (!CWikiUtils::IsReadable()) {
    ShowError(GetMessage('WIKI_ACCESS_DENIED'));
    return;
}
if ($this->StartResultCache(false, array($USER->GetGroups(), $arNavigation, $arCache), false)) {
    $arParams['ELEMENT_NAME'] = urldecode($arParams['ELEMENT_NAME']);
    $arFilter = array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N', 'ACTIVE' => 'Y');
    if (empty($arParams['ELEMENT_NAME'])) {
        $arParams['ELEMENT_NAME'] = CWiki::GetDefaultPage($arParams['IBLOCK_ID']);
    }
    $arResult['ELEMENT'] = array();
    if (!empty($arParams['ELEMENT_NAME']) && ($arResult['ELEMENT'] = CWiki::GetElementByName($arParams['ELEMENT_NAME'], $arFilter)) != false) {
        $arParams['ELEMENT_ID'] = $arResult['ELEMENT']['ID'];
    }
    $CACHE_MANAGER->StartTagCache($this->GetCachePath());
    $CACHE_MANAGER->RegisterTag('wiki_' . $arParams['ELEMENT_ID']);
    $CACHE_MANAGER->EndTagCache();
    $SERVICE_NAME = '';
    if (CWikiUtils::IsCategoryPage($arParams['ELEMENT_NAME'], $SERVICE_NAME)) {
        $arParams['ELEMENT_NAME'] = strtolower(CWikiUtils::UnlocalizeCategoryName($arParams['ELEMENT_NAME']));
        $arResult['CUR_CAT']['NAME'] = $SERVICE_NAME;
        $arPagesFilter = array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N', 'ACTIVE' => 'Y');
        $arSort = array('XML_ID' => 'ASC');
        if ($arParams['ELEMENT_NAME'] == strtolower("category:" . GetMessage('WIKI_CATEGORY_ALL'))) {
            $arPagesFilter['INCLUDE_SUBSECTIONS'] = 'Y';
            if (CWikiSocnet::IsSocNet()) {
                $arPagesFilter['SECTION_ID'] = CWikiSocnet::$iCatId;
示例#2
0
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::IsWriteable() || $arResult['WIKI_oper'] == 'delete' && !CWikiUtils::IsDeleteable()) {
    ShowError(GetMessage('WIKI_ACCESS_DENIED'));
    return;
}
$CWiki = new CWiki();
$arParams['ELEMENT_NAME'] = urldecode($arParams['ELEMENT_NAME']);
$arFilter = array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N');
if (empty($arParams['ELEMENT_NAME'])) {
    $arParams['ELEMENT_NAME'] = CWiki::GetDefaultPage($arParams['IBLOCK_ID']);
}
$arResult['ELEMENT'] = array();
if ($arResult['WIKI_oper'] == 'delete') {
    $arResult['ELEMENT'] = CWiki::GetElementById($arParams['ELEMENT_NAME'], $arFilter);
    if (!$arResult['ELEMENT']) {
        $arResult['ERROR_MESSAGE'] = GetMessage("WIKI_DELETE_ERROR");
        $arParams['ELEMENT_NAME'] = "";
    } else {
        $arParams['ELEMENT_NAME'] = $arResult['ELEMENT']['NAME'];
    }
}
示例#3
0
 if (!empty($historyId) && check_bitrix_sessid()) {
     $this->AbortResultCache();
     if (isset($_REQUEST['delete'])) {
         if (CWikiUtils::IsDeleteable()) {
             $historyService = new CBPHistoryService();
             $historyService->DeleteHistory($historyId, array('iblock', 'CWikiDocument', $arParams['ELEMENT_ID']));
             $CACHE_MANAGER->ClearByTag('wiki_' . $arParams['ELEMENT_ID']);
             LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_HISTORY'], array('wiki_name' => $arParams['ELEMENT_NAME'], 'group_id' => CWikiSocnet::$iSocNetId)));
         } else {
             $this->AbortResultCache();
             ShowError(GetMessage('WIKI_ACCESS_DENIED'));
             return;
         }
     } else {
         try {
             $CWIKI = new CWiki();
             if ($CWIKI->Recover($historyId, $arParams['ELEMENT_ID'], $arParams['IBLOCK_ID'])) {
                 //   $arResult["MESSAGE"] = GetMessage('WIKI_PAGE_RECOVER');
                 // so how could it change the name
                 $arResult['ELEMENT_NEW'] = CWiki::GetElementById($arParams['ELEMENT_ID'], $arFilter);
                 if (CWiki::GetDefaultPage($arParams['IBLOCK_ID']) == $arResult['ELEMENT']['NAME'] && $arResult['ELEMENT']['NAME'] != $arResult['ELEMENT_NEW']['NAME']) {
                     CWiki::SetDefaultPage($arParams['IBLOCK_ID'], $arResult['ELEMENT_NEW']['NAME']);
                 }
                 $CACHE_MANAGER->ClearByTag('wiki_' . $arParams['ELEMENT_ID']);
                 LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST'], array('wiki_name' => urlencode($arResult['ELEMENT_NEW']['NAME']), 'group_id' => CWikiSocnet::$iSocNetId)));
             } else {
                 $arResult['FATAL_MESSAGE'] = GetMessage('WIKI_PAGE_RECOVER_ERROR');
             }
         } catch (Exception $e) {
             $arResult['FATAL_MESSAGE'] = $e->getMessage();
         }
示例#4
0
     $matches = array();
     if (!$arResult['REDIRECTED_FROM'] && $arResult['REDIRECTED_FROM'] != 'no' && preg_match("/^\\#(REDIRECT|" . GetMessage('WIKI_REDIRECT') . ")\\s*\\[\\[(.+)\\]\\]/iU" . BX_UTF_PCRE_MODIFIER, $arResult['ELEMENT']['DETAIL_TEXT'], $matches)) {
         if ($matches[2]) {
             LocalRedirect(CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST'], array('wiki_name' => urlencode($matches[2]), 'group_id' => CWikiSocnet::$iSocNetId)), array('redirect' => urlencode($arParams['ELEMENT_NAME']))));
         }
     }
     $arParams['ELEMENT_ID'] = $arResult['ELEMENT']['ID'];
 } else {
     if ($bNotPage || empty($arParams['ELEMENT_NAME'])) {
         $arResult['ELEMENT']['NAME'] = !empty($arParams['ELEMENT_NAME']) ? $arParams['ELEMENT_NAME'] : GetMessage('WIKI_DEFAULT_PAGE_NAME');
         $arParams['ELEMENT_NAME'] = $arResult['ELEMENT']['NAME'];
         $arResult['ELEMENT']['~DETAIL_TEXT'] = GetMessage('WIKI_DEFAULT_PAGE_TEXT', array('%NAME%' => CWikiUtils::htmlspecialcharsback($arResult['ELEMENT']['NAME'], false)));
         CWiki::SetDefaultPage($arParams['IBLOCK_ID'], $arResult['ELEMENT']['NAME']);
     } else {
         $arResult['ELEMENT']['NAME'] = $arParams['ELEMENT_NAME'];
         if (CWiki::GetDefaultPage($arParams['IBLOCK_ID']) == $arParams['ELEMENT_NAME']) {
             $arResult['ELEMENT']['~DETAIL_TEXT'] = GetMessage('WIKI_DEFAULT_PAGE_TEXT', array('%NAME%' => CWikiUtils::htmlspecialcharsback($arResult['ELEMENT']['NAME'], false)));
         } else {
             if (!$arResult['IS_CATEGORY'] && !CWikiUtils::IsWriteable() || CWikiUtils::IsWriteable()) {
                 $arResult['ELEMENT']['~DETAIL_TEXT'] = GetMessage('WIKI_PAGE_TEXT');
             }
             if (CWikiUtils::IsWriteable()) {
                 $arResult['ELEMENT']['~DETAIL_TEXT'] .= " " . GetMessage('WIKI_PAGE_TEXT_CREATE', array('%NAME%' => CWikiUtils::htmlspecialcharsback($arParams['ELEMENT_NAME'])));
             }
         }
     }
     $arParams['ELEMENT_ID'] = 0;
     $arResult['ELEMENT']['ID'] = 0;
     $arResult['WIKI_oper'] = 'add';
 }
 if ($historyId > 0 && !empty($arResult['ELEMENT']['ID'])) {
示例#5
0
}
if (isset($_REQUEST['oldid'])) {
    $arPages[] = 'article';
    $arPages[] = 'history_diff';
}
$bNotEl = false;
if (!empty($arParams['ELEMENT_NAME']) && ($arResult['ELEMENT'] = CWiki::GetElementByName($arParams['ELEMENT_NAME'], $arFilter)) != false) {
    if ($arResult['ELEMENT']['ACTIVE'] == 'N') {
        $bNotEl = true;
        $arPages[] = 'add';
    }
    $arParams['ELEMENT_ID'] = $arResult['ELEMENT']['ID'];
} else {
    $bNotEl = true;
    if ($bNotPage || empty($arParams['ELEMENT_NAME'])) {
        $arResult['ELEMENT']['NAME'] = CWiki::GetDefaultPage($arParams['IBLOCK_ID']);
        //http://jabber.bx/view.php?id=28710
        if (empty($arResult['ELEMENT']['NAME'])) {
            $arResult['ELEMENT']['NAME'] = GetMessage('WIKI_DEFAULT_PAGE_NAME');
        }
        //todo: insert into CWiki::GetDefaultPage()
        $arParams['ELEMENT_NAME'] = $arResult['ELEMENT']['NAME'];
    } else {
        $arResult['ELEMENT']['NAME'] = $arParams["ELEMENT_NAME"];
    }
    $arParams['ELEMENT_ID'] = 0;
    $arResult['ELEMENT']['ID'] = 0;
    $sServiceName = '';
    $arPages[] = 'add';
}
$arResult['TOPLINKS'] = CWikiUtils::getRightsLinks($arPages);
示例#6
0
 function onAfterMessageAdd($ID, $arFields)
 {
     $bSocNetLogRecordExists = false;
     // add log comment
     if ((!array_key_exists('PARAM1', $arFields) || $arFields['PARAM1'] != 'IB') && array_key_exists('PARAM2', $arFields) && intval($arFields['PARAM2']) > 0) {
         $dbRes = CSocNetLog::GetList(array('ID' => 'DESC'), array("EVENT_ID" => "wiki", "SOURCE_ID" => $arFields["PARAM2"]), false, false, array('ID', 'ENTITY_TYPE', 'ENTITY_ID', 'TMP_ID', 'URL'));
         if ($arRes = $dbRes->Fetch()) {
             $log_id = $arRes['TMP_ID'];
             $url = $arRes['URL'];
             $bSocNetLogRecordExists = true;
         } else {
             $rsElement = CIBlockElement::GetByID($arFields['PARAM2']);
             if ($arElement = $rsElement->Fetch()) {
                 $arWikiElement = CWiki::GetElementById($arElement['ID'], array('IBLOCK_ID' => $arElement['IBLOCK_ID']));
                 $CWikiParser = new CWikiParser();
                 $parserLog = new logTextParser();
                 $arAllow = array("HTML" => "N", "ANCHOR" => "N", "BIU" => "N", "IMG" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "LIST" => "N", "SMILES" => "N", "NL2BR" => "N", "VIDEO" => "N", "TABLE" => "N");
                 $text4message = $CWikiParser->Parse($arElement['DETAIL_TEXT'], $arElement['DETAIL_TEXT_TYPE'], $arWikiElement['IMAGES']);
                 $text4message = preg_replace("#<br[\\s]*\\/>#is", "#BR#", $text4message);
                 $text4message = htmlspecialcharsback($parserLog->convert($text4message, array(), $arAllow));
                 $text4message = preg_replace("#\\#BR\\##is", "\n", $text4message);
                 $text4message = $CWikiParser->Clear($text4message);
                 $url = str_replace(array('#group_id#', '#wiki_name#'), array(intval($this->SonetGroupID), urlencode($arElement['NAME'])), $this->arPath['PATH_TO_POST']);
                 $arSoFields = array('ENTITY_TYPE' => SONET_SUBSCRIBE_ENTITY_GROUP, 'IS_CUSTOM_ET' => 'N', 'ENTITY_ID' => intval($this->SonetGroupID), 'EVENT_ID' => 'wiki', 'USER_ID' => $arElement['CREATED_BY'], 'LOG_DATE' => $arElement['DATE_CREATE'], 'LOG_UPDATE' => $arElement['DATE_CREATE'], 'TITLE_TEMPLATE' => GetMessage('WIKI_SONET_LOG_TITLE_TEMPLATE'), 'TITLE' => $arElement['NAME'], 'MESSAGE' => $text4message, 'TEXT_MESSAGE' => '', 'MODULE_ID' => 'wiki', 'URL' => $url, 'CALLBACK_FUNC' => false, 'SOURCE_ID' => $arFields['PARAM2'], 'PARAMS' => 'forum_id=' . $this->ForumID, 'RATING_TYPE_ID' => 'IBLOCK_ELEMENT', 'RATING_ENTITY_ID' => intval($arFields['PARAM2']));
                 $log_id = CSocNetLog::Add($arSoFields, false);
                 if (intval($log_id) > 0) {
                     CSocNetLog::Update($log_id, array("TMP_ID" => $log_id));
                     CSocNetLogRights::SetForSonet($log_id, SONET_SUBSCRIBE_ENTITY_GROUP, intval($this->SonetGroupID), "wiki", "view", true);
                 }
             }
         }
         if (intval($log_id) > 0) {
             $arForum = CForumNew::GetByID($this->ForumID);
             $parser = new textParser(LANGUAGE_ID, $this->arPath['PATH_TO_SMILE']);
             $parser->image_params['width'] = false;
             $parser->image_params['height'] = false;
             $arAllow = array('HTML' => "N", 'ANCHOR' => "N", 'BIU' => "N", 'IMG' => "N", 'LIST' => "N", 'QUOTE' => "N", 'CODE' => "N", 'FONT' => "N", 'UPLOAD' => $arForum['ALLOW_UPLOAD'], 'NL2BR' => "N", 'SMILES' => "N");
             $sAuthorForMail = str_replace('#TITLE#', $arMessage['AUTHOR_NAME'], GetMessage('SONET_FORUM_LOG_TEMPLATE_GUEST'));
             if ($bSocNetLogRecordExists) {
                 $arMessage = CForumMessage::GetByIDEx($ID);
                 $parser = new textParser(LANGUAGE_ID, $this->arPath['PATH_TO_SMILE']);
                 $parser->image_params['width'] = false;
                 $parser->image_params['height'] = false;
                 if (intVal($arMessage['AUTHOR_ID']) > 0) {
                     $sAuthorForMail = str_replace(array('#URL#', '#TITLE#'), array('http://' . SITE_SERVER_NAME . CComponentEngine::MakePathFromTemplate($this->arPath['PATH_TO_USER'], array('user_id' => $arMessage['AUTHOR_ID'])), $arMessage['AUTHOR_NAME']), GetMessage('SONET_FORUM_LOG_TEMPLATE_AUTHOR'));
                 }
                 $arFieldsForSocnet = array('ENTITY_TYPE' => SONET_SUBSCRIBE_ENTITY_GROUP, 'ENTITY_ID' => intval($this->SonetGroupID), 'EVENT_ID' => 'wiki_comment', '=LOG_DATE' => $GLOBALS['DB']->CurrentTimeFunction(), 'MESSAGE' => $parser->convert($arMessage['POST_MESSAGE'], $arAllow), 'TEXT_MESSAGE' => $parser->convert4mail($arMessage['POST_MESSAGE'] . $sAuthorForMail), 'URL' => $url, 'MODULE_ID' => false, 'SOURCE_ID' => $ID, 'LOG_ID' => $log_id, 'RATING_TYPE_ID' => 'FORUM_POST', 'RATING_ENTITY_ID' => intval($arMessage['ID']));
                 if (intVal($arMessage['AUTHOR_ID']) > 0) {
                     $arFieldsForSocnet['USER_ID'] = $arMessage['AUTHOR_ID'];
                 }
                 CSocNetLogComments::Add($arFieldsForSocnet);
             } else {
                 $dbMessage = CForumMessage::GetListEx(array(), array('TOPIC_ID' => $arFields["TOPIC_ID"], "NEW_TOPIC" => "N"));
                 while ($arMessage = $dbMessage->GetNext()) {
                     if (intVal($arMessage['AUTHOR_ID']) > 0) {
                         $sAuthorForMail = str_replace(array('#URL#', '#TITLE#'), array('http://' . SITE_SERVER_NAME . CComponentEngine::MakePathFromTemplate($this->arPath['PATH_TO_USER'], array('user_id' => $arMessage['AUTHOR_ID'])), $arMessage['AUTHOR_NAME']), GetMessage('SONET_FORUM_LOG_TEMPLATE_AUTHOR'));
                     }
                     $arFieldsForSocnet = array('ENTITY_TYPE' => SONET_SUBSCRIBE_ENTITY_GROUP, 'ENTITY_ID' => intval($this->SonetGroupID), 'EVENT_ID' => 'wiki_comment', '=LOG_DATE' => $GLOBALS['DB']->CharToDateFunction($arMessage['POST_DATE'], "FULL", SITE_ID), 'MESSAGE' => $parser->convert($arMessage['POST_MESSAGE'], $arAllow), 'TEXT_MESSAGE' => $parser->convert4mail($arMessage['POST_MESSAGE'] . $sAuthorForMail), 'URL' => $url, 'MODULE_ID' => false, 'SOURCE_ID' => $ID, 'LOG_ID' => $log_id, 'RATING_TYPE_ID' => 'FORUM_POST', 'RATING_ENTITY_ID' => intval($arMessage['ID']));
                     if (intVal($arMessage['AUTHOR_ID']) > 0) {
                         $arFieldsForSocnet['USER_ID'] = $arMessage['AUTHOR_ID'];
                     }
                     CSocNetLogComments::Add($arFieldsForSocnet);
                 }
             }
         }
     }
 }
示例#7
0
 private function createLogEntry($iblockElementID)
 {
     $rsElement = CIBlockElement::GetByID($iblockElementID);
     if ($arElement = $rsElement->Fetch()) {
         $arWikiElement = CWiki::GetElementById($arElement['ID'], array('IBLOCK_ID' => $arElement['IBLOCK_ID']));
         $CWikiParser = new CWikiParser();
         $parserLog = new logTextParser();
         $arAllow = array("HTML" => "N", "ANCHOR" => "N", "BIU" => "N", "IMG" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "LIST" => "N", "SMILES" => "N", "NL2BR" => "N", "VIDEO" => "N", "TABLE" => "N");
         $text4message = $CWikiParser->Parse($arElement['DETAIL_TEXT'], $arElement['DETAIL_TEXT_TYPE'], $arWikiElement['IMAGES']);
         $text4message = preg_replace("#<br[\\s]*\\/>#is", "#BR#", $text4message);
         $text4message = htmlspecialcharsback($parserLog->convert($text4message, array(), $arAllow));
         $text4message = preg_replace("#\\#BR\\##is", "\n", $text4message);
         $text4message = $CWikiParser->Clear($text4message);
         $url = str_replace(array('#group_id#', '#wiki_name#'), array(intval($this->SonetGroupID), urlencode($arElement['NAME'])), $this->arPath['PATH_TO_POST']);
         $arSoFields = array('ENTITY_TYPE' => SONET_SUBSCRIBE_ENTITY_GROUP, 'IS_CUSTOM_ET' => 'N', 'ENTITY_ID' => intval($this->SonetGroupID), 'EVENT_ID' => 'wiki', 'USER_ID' => $arElement['CREATED_BY'], 'LOG_DATE' => $arElement['DATE_CREATE'], 'LOG_UPDATE' => $arElement['DATE_CREATE'], 'TITLE_TEMPLATE' => GetMessage('WIKI_SONET_LOG_TITLE_TEMPLATE'), 'TITLE' => $arElement['NAME'], 'MESSAGE' => $text4message, 'TEXT_MESSAGE' => '', 'MODULE_ID' => 'wiki', 'URL' => $url, 'CALLBACK_FUNC' => false, 'SOURCE_ID' => intval($iblockElementID), 'PARAMS' => 'forum_id=' . $this->ForumID, 'RATING_TYPE_ID' => 'IBLOCK_ELEMENT', 'RATING_ENTITY_ID' => intval($iblockElementID));
         $log_id = CSocNetLog::Add($arSoFields, false);
         $log_user_id = $arElement['CREATED_BY'];
         $log_title = $arElement["NAME"];
         if (intval($log_id) > 0) {
             CSocNetLog::Update($log_id, array("TMP_ID" => $log_id));
             CSocNetLogRights::SetForSonet($log_id, SONET_SUBSCRIBE_ENTITY_GROUP, intval($this->SonetGroupID), "wiki", "view", true);
             return array("LOG_ID" => $log_id, "LOG_USER_ID" => $log_user_id, "LOG_TITLE" => $log_title, "URL" => $url);
         }
     }
     return false;
 }