$arFields['NAME'] = $arParams['ELEMENT_NAME'] = $arResult['ELEMENT']['NAME_LOCALIZE']; $arResult['ELEMENT']['NAME_LOCALIZE'] = $_POST["POST_TITLE"]; $arResult['ERROR_MESSAGE'] = GetMessage('WIKI_ERROR_NAME_BAD_SYMBOL'); } else { if (!$CWiki->Rename($arParams['ELEMENT_ID'], array('NAME' => $arFields['NAME'], 'IBLOCK_ID' => $arParams['IBLOCK_ID']), false)) { $arResult['ERROR_MESSAGE'] = GetMessage('WIKI_ERROR_RENAME'); } else { $arParams['ELEMENT_NAME'] = $arFields['NAME']; } } } } if (empty($arFields['DETAIL_TEXT'])) { $arResult['ERROR_MESSAGE'] .= (!empty($arResult['ERROR_MESSAGE']) ? '<br />' : '') . GetMessage('WIKI_ERROR_TEXT_EMPTY'); } $arResult['ELEMENT']['NAME'] = CWikiUtils::htmlspecialcharsback($_POST['POST_TITLE']); $arResult['ELEMENT']['DETAIL_TEXT'] = $arResult['ELEMENT']['~DETAIL_TEXT'] = $arFields['DETAIL_TEXT']; $arResult['ELEMENT']['DETAIL_TEXT_TYPE'] = $arFields['DETAIL_TEXT_TYPE']; if (empty($arResult['ERROR_MESSAGE'])) { if (is_array($_POST['IMAGE_ID_del'])) { foreach ($_POST['IMAGE_ID_del'] as $_imgID => $_) { if (in_array($_imgID, $arResult['ELEMENT']['IMAGES'])) { $rsFile = CFile::GetByID($_imgID); $arFile = $rsFile->Fetch(); $CWiki->deleteImage($_imgID, $arResult['ELEMENT']['ID'], $arParams['IBLOCK_ID']); $arFields['DETAIL_TEXT'] = preg_replace('/\\[?\\[(:)?(File|' . GetMessage('FILE_NAME') . '):(' . $_imgID . '|' . preg_quote($arFile['ORIGINAL_NAME'], '/') . ')\\]\\]?/iU' . BX_UTF_PCRE_MODIFIER, '', $arFields['DETAIL_TEXT']); } } } $CWikiParser = new CWikiParser(); $CWiki->Update($arParams['ELEMENT_ID'], $arFields);
} 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'])) { $documentId = array('iblock', 'CWikiDocument', $arParams['ELEMENT_ID']); $arErrorsTmp = array(); $arHistoryResult = CBPDocument::GetDocumentFromHistory($historyId, $arErrorsTmp); if (count($arErrorsTmp) > 0) { foreach ($arErrorsTmp as $e) { $arResult['FATAL_MESSAGE'] .= $e['message']; }
/** * <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; }
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; }
<?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); } }