Exemple #1
0
             }
         } else {
             $arParams['ELEMENT_NAME'] = $arResult['ELEMENT']['NAME'];
         }
     } else {
         $arResult['ERROR_MESSAGE'] = GetMessage('WIKI_SESS_TIMEOUT');
         $arResult['ELEMENT']['DETAIL_TEXT'] = $arResult['ELEMENT']['~DETAIL_TEXT'] = $arResult['ALLOW_HTML'] == 'Y' && $_POST['POST_MESSAGE_TYPE'] == 'html' ? $_POST['POST_MESSAGE_HTML'] : $_POST['POST_MESSAGE'];
     }
 } else {
     if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['preview'])) {
         if (check_bitrix_sessid()) {
             if (isset($_POST['POST_TITLE'])) {
                 $arResult['ELEMENT']['NAME_LOCALIZE'] = CWikiUtils::htmlspecialchars_decode($_POST['POST_TITLE']);
                 $sCatName = '';
                 if (CWikiUtils::IsCategoryPage($arFields['NAME'], $sCatName)) {
                     $arResult['ELEMENT']['NAME_LOCALIZE'] = CWikiUtils::UnlocalizeCategoryName($sPageName);
                 }
                 if (empty($_POST['POST_TITLE'])) {
                     $arFields['NAME'] = $arParams['ELEMENT_NAME'] = $_POST['POST_TITLE'] = $arResult['ELEMENT']['NAME_LOCALIZE'];
                     $arResult['ERROR_MESSAGE'] = GetMessage('WIKI_ERROR_NAME_EMPTY');
                 }
             }
             $arResult['ELEMENT']['~DETAIL_TEXT'] = $arResult['ALLOW_HTML'] == 'Y' && $_POST['POST_MESSAGE_TYPE'] == 'html' ? $_POST['POST_MESSAGE_HTML'] : $_POST['POST_MESSAGE'];
             $arResult['ELEMENT']['DETAIL_TEXT_TYPE'] = $arResult['ALLOW_HTML'] == 'Y' ? $_POST['POST_MESSAGE_TYPE'] : 'text';
             $arResult['PREVIEW'] = 'Y';
             $arResult['ELEMENT_PREVIEW'] = array();
             $arCat = array();
             $arResult['ELEMENT_PREVIEW']['DETAIL_TEXT'] = $CWikiParser->parseBeforeSave($arResult['ELEMENT']['~DETAIL_TEXT'], $arCat);
             $arResult['ELEMENT_PREVIEW']['DETAIL_TEXT'] = $CWikiParser->Parse($arResult['ELEMENT_PREVIEW']['DETAIL_TEXT'], $arResult['ELEMENT']['DETAIL_TEXT_TYPE'], $arResult['ELEMENT']['IMAGES']);
             $arResult['ELEMENT_PREVIEW']['DETAIL_TEXT'] = $CWikiParser->Clear($arResult['ELEMENT_PREVIEW']['DETAIL_TEXT']);
             $arResult['ELEMENT']['TAGS'] = htmlspecialcharsbx($_POST['TAGS']);
Exemple #2
0
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;
            }
            $rsPagesElement = CIBlockElement::GetList($arSort, $arPagesFilter, false, false, array());
        } elseif ($arParams['ELEMENT_NAME'] == strtolower("category:" . GetMessage('WIKI_CATEGORY_NOCAT'))) {
            $arPagesFilter['INCLUDE_SUBSECTIONS'] = 'N';
            if (CWikiSocnet::IsSocNet()) {
                $arPagesFilter['SECTION_ID'] = CWikiSocnet::$iCatId;
            } else {
                $arPagesFilter['SECTION_ID'] = 0;
Exemple #3
0
 /**
  * <p>Возвращает Wiki-страницу по фильтру arFilter. Статичный метод.</p>
  *
  *
  * @param string $NAME  Название Wiki-страницы
  *
  * @param array $arFilter  <a href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblock/getlist.php">GetList</a>
  *
  * @param arComponentParam $s = array() Необязательный.
  *
  * @return result_type <p>Возвращается массив, содержащий поля со значениями: </p> <table
  * width="100%" class="tnormal"><tbody> <tr> <th width="15%">Параметр</th> <th>Описание</th> </tr> <tr>
  * <td>NAME</td> <td>наименование страницы</td> </tr> <tr> <td>DETAIL_TEXT_TYPE</td> <td>тип
  * содержимого страницы</td> </tr> <tr> <td>DETAIL_TEXT</td> <td>текст содержимого
  * страницыы</td> </tr> <tr> <td>IMAGES</td> <td>массив изображений страницы</td> </tr>
  * <tr> <td>SECTIONS</td> <td>массив категорий страницы</td> </tr> <tr> <td>TAGS</td>
  * <td>массив тэгов страницы</td> </tr> </tbody></table>
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?<br>
  * // Получим Wiki-страницу с названием "Тестовая страница" инфо.блока с идентификатором 2
  * 
  * $NAME = 'Тестовая страница';
  * $arFilter = array(
  * 	'ACTIVE' =&gt; 'Y',
  * 	'CHECK_PERMISSIONS' =&gt; 'N',
  * 	'IBLOCK_ID' =&gt; 2
  * );
  * $arElement = CWiki::GetElementByName($NAME, $arFilter);
  * if ($arElement == false)
  * 	echo 'Страница не найдена.';
  * <br>?&gt;
  * </pre>
  *
  *
  * <h4>See Also</h4> 
  * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/wiki/classes/cwiki/GetElementById.php">CWiki::GetElementById</a>
  * </li> <li> <a href="http://dev.1c-bitrix.ru/api_help/wiki/classes/cwiki/GetCategory.php">CWiki::GetCategory</a> </li>
  * <li> <a href="http://dev.1c-bitrix.ru/api_help/wiki/classes/cwikiparser/parse.php">CWikiParser::Parse</a> </li> <li> <a
  * href="http://dev.1c-bitrix.ru/api_help/wiki/classes/cwikisecurity/clear.php">CWikiSecurity::clear</a> </li> </ul><a
  * name="examples"></a>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/wiki/classes/cwiki/GetElementByName.php
  * @author Bitrix
  */
 public static function GetElementByName($NAME, $arFilter, $arComponentParams = array())
 {
     global $CACHE_MANAGER;
     $iCatId = "";
     if (CWikiSocnet::IsSocNet()) {
         $arFilter['SUBSECTION'] = CWikiSocnet::$iCatId;
         $iCatId = $arFilter['SUBSECTION'];
     }
     $cacheByNameID = self::GetIdForCacheByName($arFilter['IBLOCK_ID'], $iCatId, $NAME);
     $cacheTime = isset($arComponentParams['CACHE_TIME']) ? intval($arComponentParams['CACHE_TIME']) : CWiki::CWIKI_CACHE_TTL;
     if ($CACHE_MANAGER->Read($cacheTime, $cacheByNameID)) {
         $cachedElement = $CACHE_MANAGER->Get($cacheByNameID);
         if ($cachedElement) {
             //if cached element satisfied to filter's conditions
             $sameFilter = true;
             foreach ($arFilter as $key => $value) {
                 if (isset($cachedElement[$key]) && $value != "" && $cachedElement[$key] != $value) {
                     $sameFilter = false;
                     break;
                 }
             }
             if ($sameFilter) {
                 return $cachedElement;
             }
         }
     }
     $NAME = CWikiUtils::UnlocalizeCategoryName($NAME);
     $NAME = CWikiUtils::htmlspecialcharsback($NAME);
     $arFilter['=XML_ID'] = $NAME;
     $rsElement = CIBlockElement::GetList(array(), $arFilter);
     $obElement = $rsElement->GetNextElement();
     $arResult = false;
     if ($obElement !== false) {
         $arResult = $obElement->GetFields();
         if (isset($arResult['NAME'])) {
             $arResult['NAME'] = htmlspecialcharsbx($arResult['NAME']);
         }
         $rsProperties = $obElement->GetProperties(array(), array('CODE' => 'IMAGES'));
         foreach ($rsProperties as $arProperty) {
             $arResult[$arProperty['CODE']] = $arProperty['VALUE'];
         }
         $rsProperties = $obElement->GetProperties(array(), array('CODE' => 'FORUM_TOPIC_ID'));
         foreach ($rsProperties as $arProperty) {
             $arResult[$arProperty['CODE']] = $arProperty['VALUE'];
         }
         $arResult['SECTIONS'] = self::GetCategory($arResult['XML_ID'], $arFilter['IBLOCK_ID']);
         if (!empty($arResult['TAGS'])) {
             $_arTAGS = explode(',', $arResult['TAGS']);
             $arResult['_TAGS'] = array();
             foreach ($_arTAGS as $sTag) {
                 $sTag = trim($sTag);
                 $arTag = array('NAME' => $sTag);
                 if (!empty($arComponentParams) && isset($arComponentParams['PATH_TO_SEARCH'])) {
                     $arP = $arComponentParams['IN_COMPLEX'] == 'Y' && $arComponentParams['SEF_MODE'] == 'N' ? array($arComponentParams['OPER_VAR'] => 'search') : array();
                     $arP['tags'] = urlencode($sTag);
                     $arTag['LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arComponentParams['PATH_TO_SEARCH'], array('wiki_name' => $arComponentParams['ELEMENT_NAME'], 'group_id' => CWikiSocnet::$iSocNetId)), $arP);
                 }
                 $arResult['_TAGS'][] = $arTag;
             }
         }
     }
     if (!empty($arComponentParams)) {
         //Let's store only full page data with tag links
         $CACHE_MANAGER->Set($cacheByNameID, $arResult);
     }
     return $arResult;
 }
}
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']);
    }
    $sCatName = '';
    if (CWikiUtils::IsCategoryPage($arParams['ELEMENT_NAME'], $sCatName)) {
        $arResult['IS_CATEGORY'] = true;
        $arParams['ELEMENT_NAME'] = CWikiUtils::UnlocalizeCategoryName($arParams['ELEMENT_NAME']);
    } else {
        $arResult['IS_CATEGORY'] = false;
    }
    $arResult['ELEMENT'] = array();
    $arResult['ELEMENT'] = CWiki::GetElementByName($arParams['ELEMENT_NAME'], $arFilter, $arParams);
    if (!empty($arParams['ELEMENT_NAME']) && $arResult['ELEMENT'] != false) {
        //#REDIRECT [[target inner link]] - redirect from one page to another
        $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 {
			BX.WindowManager.Get().ClearButtons();
			BX.WindowManager.Get().SetButtons(_BTN);
		</script>
		<?php 
    }
    ?>
</td></tr></table><?php 
    die;
} elseif ($arResult['WIKI_oper'] == 'rename') {
    ?>
<table width="100%" height="100%"><tr><td align="center" valign="middle"><?php 
    if (strlen($arResult['ERROR_MESSAGE']) <= 0) {
        $sCatName = '';
        if (CWikiUtils::IsCategoryPage($arResult['ELEMENT']['NAME'], $sCatName)) {
            $catLocalName = CWikiUtils::UnlocalizeCategoryName($sPageName);
        }
        ?>
		<form action="<?php 
        echo $arResult['PATH_TO_POST_EDIT'];
        ?>
" name="rename_form" method="POST">
		<?php 
        echo bitrix_sessid_post();
        ?>
		<input type="hidden" name="<?php 
        echo $arResult['PAGE_VAR'];
        ?>
" value="$arResult['ELEMENT']['NAME_LOCALIZE']?>"/>
		<input type="hidden" name="<?php 
        echo $arResult['OPER_VAR'];