} } 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']);
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;
/** * <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> * <?<br> * // Получим Wiki-страницу с названием "Тестовая страница" инфо.блока с идентификатором 2 * * $NAME = 'Тестовая страница'; * $arFilter = array( * 'ACTIVE' => 'Y', * 'CHECK_PERMISSIONS' => 'N', * 'IBLOCK_ID' => 2 * ); * $arElement = CWiki::GetElementByName($NAME, $arFilter); * if ($arElement == false) * echo 'Страница не найдена.'; * <br>?> * </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'];