Esempio n. 1
0
             $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);
Esempio n. 2
0
 } 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'];
         }
Esempio n. 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;
 }
Esempio n. 4
0
 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;
 }
Esempio n. 5
0
<?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);
        }
    }