} 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 {
} } } // obtain a list of pictures page $arResult['IMAGES'] = array(); if (!empty($arResult['ELEMENT']['IMAGES'])) { foreach ($arResult['ELEMENT']['IMAGES'] as $_imgID) { $rsFile = CFile::GetByID($_imgID); $arFile = $rsFile->Fetch(); $aImg = array(); $aImg['ID'] = $_imgID; $aImg['ORIGINAL_NAME'] = $arFile['ORIGINAL_NAME']; $aImg['FILE_SHOW'] = CFile::ShowImage($_imgID, 100, 100, "id=\"{$_imgID}\" border=\"0\" style=\"cursor:pointer;\" onclick=\"doInsert('[File:" . CUtil::JSEscape(htmlspecialcharsbx($arFile['ORIGINAL_NAME'])) . "]','',false, '{$_imgID}')\" title='" . GetMessage('WIKI_IMAGE_INSERT') . "'"); $arResult['IMAGES'][] = $aImg; } } include_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/components/bitrix/wiki/include/nav.php'; $arResult['PATH_TO_POST_EDIT'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), $arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams['OPER_VAR'] => $arResult['WIKI_oper']) : array()); $arResult['~PATH_TO_POST_EDIT'] = urldecode($arResult['PATH_TO_POST_EDIT']); //because it can change the page name, and hence the path for the parameter "Action" in tag "Form" if (strpos(POST_FORM_ACTION_URI, 'SEF_APPLICATION_CUR_PAGE_URL=') !== false) { $arResult['PATH_TO_POST_EDIT_SUBMIT'] = CHTTP::urlAddParams(CHTTP::urlDeleteParams(POST_FORM_ACTION_URI, array('SEF_APPLICATION_CUR_PAGE_URL')), array('SEF_APPLICATION_CUR_PAGE_URL' => urlencode($arResult['~PATH_TO_POST_EDIT']))); } else { $arResult['PATH_TO_POST_EDIT_SUBMIT'] = $arResult['PATH_TO_POST_EDIT']; } $sCatName = ''; $arResult["IS_CATEGORY_PAGE"] = CWikiUtils::IsCategoryPage($arResult['ELEMENT']['NAME_LOCALIZE'], $sCatName); } } $this->IncludeComponentTemplate(); unset($GLOBALS['arParams']);
$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']); } $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'])))); } }
static function isCategoryVirtual($name) { $result = false; $sCatName = ''; if (CWikiUtils::IsCategoryPage($name, $sCatName)) { $result = self::isVirtualCategoryExist($sCatName); } return $result; }
function _processInternalLinkPrepareCallback($matches) { $sLink = trim($matches[1]); $sName = $sTitle = $sLink; $sCatName = ''; $matches[3] = isset($matches[3]) ? trim($matches[3]) : ''; if (!empty($matches[3])) { $sName = $sTitle = $matches[3]; } else { if (CWikiUtils::IsCategoryPage($sName, $sCatName)) { return '##Category##'; } } $sTitle = strip_tags($sTitle); $i = count($this->arLink); $this->arLink[] = CWikiUtils::htmlspecialcharsback($matches[1], true); $sReturn = '<a ##LINK' . $i . '## title="' . $sTitle . '">' . $sName . '</a>'; return $sReturn; }
/** * <p>Метод возвращает массив категорий Wiki-страницы. Динамичный метод.</p> * * * @param string $NAME Наименование Wiki-страницы. До версии 9.5.3 назывался <b>ID</b>. * * @param int $IBLOCK_ID Идентификатор Инфоблока. До версии 10.0.0 назывался <b>BLOCK_ID</b>. * * @return array <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>TITLE</td> * <td>наименование категории для подсказки</td> </tr> <tr> <td>LINK</td> <td>ссылка * на категорию</td> </tr> <tr> <td>IS_RED</td> <td>является ли ссылка красной (т.е. * страница категории не создана)</td> </tr> </tbody></table> <a name="examples"></a> * * <h4>Example</h4> * <pre> * <?<br> * // Получим категории для страницы "Тестовая страница" инфо.блока с идентификатором 2 * $NAME = 'Тестовая страница'; * $IBLOCK_ID = 2; * * $arCategory = CWiki::GetCategory($NAME, $IBLOCK_ID);<br>?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/wiki/classes/cwiki/GetCategory.php * @author Bitrix */ public static function GetCategory($NAME, $IBLOCK_ID) { global $arParams; $arResult = array(); $arResult[] = array('TITLE' => GetMessage('Service:Categories_TITLE'), 'NAME' => GetMessage('Service:Categories'), 'LINK' => CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CATEGORIES'], array('wiki_name' => 'Service:Categories', 'group_id' => CWikiSocnet::$iSocNetId)), array()), 'IS_RED' => 'N', 'IS_SERVICE' => 'Y'); $arFilter['=XML_ID'] = $NAME; $arFilter['IBLOCK_ID'] = $IBLOCK_ID; $arFilter['CHECK_PERMISSIONS'] = 'N'; if (CWikiSocnet::IsSocNet()) { $arFilter['SUBSECTION'] = CWikiSocnet::$iCatId; } $rsElement = CIBlockElement::GetList(array(), $arFilter, false, false, array()); $arElement = $rsElement->GetNext(); $sCatName = ''; if (CWikiUtils::IsCategoryPage($NAME, $sCatName)) { return $arResult; } $arLink = array(); $arLinkExists = array(); $arCat = array(); $rsSect = CIBlockElement::GetElementGroups($arElement['ID'], false); while ($arSect = $rsSect->GetNext()) { $arCat[$arSect['ID']] = $arSect; $arLink[] = 'category:' . CWikiUtils::htmlspecialcharsback($arSect['NAME']); } if (empty($arLink)) { return array(); } if (CWikiSocnet::IsSocNet() && isset($arCat[CWikiSocnet::$iCatId])) { unset($arCat[CWikiSocnet::$iCatId]); } $arFilter = array(); $arFilter['=NAME'] = $arLink; $arFilter['IBLOCK_ID'] = $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(); $arLinkExists[] = preg_replace('/^(category|' . GetMessage('CATEGORY_NAME') . '):/i' . BX_UTF_PCRE_MODIFIER, '', $arFields['NAME']); } if (!empty($arCat)) { foreach ($arCat as $_arCat) { $_arCat['NAME'] = CWikiUtils::htmlspecialcharsback($_arCat['NAME'], false); $_arResult = array(); $_arResult['ID'] = $_arCat['ID']; $_arResult['IS_RED'] = 'N'; $_arResult['LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CATEGORY'], array('wiki_name' => 'Category:' . $_arCat['NAME'], 'group_id' => CWikiSocnet::$iSocNetId)), array()); $_arResult['TITLE'] = $_arCat['NAME']; $_arResult['NAME'] = $_arCat['NAME']; $_arResult['IS_SERVICE'] = 'N'; if (!in_array($_arCat['NAME'], $arLinkExists)) { $_arResult['IS_RED'] = 'Y'; } $arResult[] = $_arResult; } } return $arResult; }
]; 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
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } $sPageName = $arResult['ELEMENT']['NAME'] = CWikiUtils::htmlspecialcharsback($arResult['ELEMENT']['NAME'], false); $sCatName = ''; if (CWikiUtils::IsCategoryPage($sPageName, $sCatName)) { $sPageName = preg_replace('/^category:/i' . BX_UTF_PCRE_MODIFIER, GetMessage('CATEGORY_NAME') . ':', $sPageName); } if (CWikiSocnet::IsSocNet()) { if (intval($arParams["SOCNET_GROUP_ID"]) > 0 && (empty($arParams['SET_TITLE']) || $arParams['SET_TITLE'] != 'N' || $this->GetParent()->arResult['SET_NAV_CHAIN'] == 'Y')) { $arGroup = CSocNetGroup::GetByID($arParams["SOCNET_GROUP_ID"]); $arActiveFeatures = CSocNetFeatures::GetActiveFeaturesNames(SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"]); $sFeatureName = array_key_exists("wiki", $arActiveFeatures) && strlen($arActiveFeatures["wiki"]) > 0 ? $arActiveFeatures["wiki"] : GetMessage("WIKI_SOCNET_TAB"); } if (empty($arParams['SET_TITLE']) || $arParams['SET_TITLE'] != 'N') { $APPLICATION->SetTitle($arGroup["NAME"] . ": " . $sFeatureName . (!empty($sPageName) ? ": " . $sPageName : '')); } if ($this->GetParent()->arResult['SET_NAV_CHAIN'] == 'Y') { $APPLICATION->AddChainItem($arGroup["NAME"], CComponentEngine::MakePathFromTemplate($this->GetParent()->arResult['PATH_TO_GROUP'], array('group_id' => CWikiSocnet::$iSocNetId))); $APPLICATION->AddChainItem($sFeatureName, CComponentEngine::MakePathFromTemplate($this->GetParent()->arResult['PATH_TO_GROUP_WIKI_INDEX'], array('group_id' => CWikiSocnet::$iSocNetId, 'wiki_name' => urlencode($arResult['ELEMENT']['NAME'])))); } } else { if ($arParams['IN_COMPLEX'] == 'Y') { $sNavItem = $this->GetParent()->arParams['NAV_ITEM']; $sSefFolder = $this->GetParent()->arParams['SEF_FOLDER']; if (!empty($sNavItem)) { $APPLICATION->AddChainItem($sNavItem, $sSefFolder); } }
static function isCategoryVirtual($name) { $result = false; $sCatName = ''; if (CWikiUtils::IsCategoryPage($name, $sCatName)) { if ($sCatName == GetMessage("WIKI_CATEGORY_NOCAT") || $sCatName == GetMessage("WIKI_CATEGORY_ALL")) { $result = true; } if (!$result) { $categories = new CWikiCategories(); $rsHandlers = GetModuleEvents("wiki", "OnCategoryListCreate"); while ($arHandler = $rsHandlers->Fetch()) { ExecuteModuleEventEx($arHandler, array(&$categories, '')); } $arCats = $categories->GetItems(); foreach ($arCats as $category) { if ($category["NAME"] == $sCatName) { $result = true; break; } } } } return $result; }