Your IP : 3.144.97.170
<?if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die();
$arParams['IN_COMPLEX'] = 'N';
if (($arParent = $this->GetParent()) !== NULL)
$arParams['IN_COMPLEX'] = 'Y';
if(empty($arParams['PAGE_VAR']))
$arParams['PAGE_VAR'] = 'title';
if(empty($arParams['OPER_VAR']))
$arParams['OPER_VAR'] = 'oper';
if(empty($arParams['SEF_MODE']))
{
$arParams['SEF_MODE'] = 'N';
if ($arParams['IN_COMPLEX'] == 'Y')
$arParams['SEF_MODE'] = $this->GetParent()->arResult['SEF_MODE'];
}
if(empty($arParams['SOCNET_GROUP_ID']) && $arParams['IN_COMPLEX'] == 'Y')
{
if (strpos($this->GetParent()->GetName(), 'socialnetwork') !== false &&
!empty($this->GetParent()->arResult['VARIABLES']['group_id']))
$arParams['SOCNET_GROUP_ID'] = $this->GetParent()->arResult['VARIABLES']['group_id'];
}
$arParams['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? CSite::GetNameFormat(false) : str_replace(array("#NOBR#","#/NOBR#"), array("",""), $arParams["NAME_TEMPLATE"]);
$arParams['PATH_TO_POST'] = trim($arParams['PATH_TO_POST']);
if(empty($arParams['PATH_TO_POST']))
$arParams['PATH_TO_POST'] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?$arParams[PAGE_VAR]=#wiki_name#");
$arParams['PATH_TO_POST_EDIT'] = trim($arParams['PATH_TO_POST_EDIT']);
if(strlen($arParams['PATH_TO_POST_EDIT'])<=0)
{
$arParams['PATH_TO_POST_EDIT'] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?$arParams[PAGE_VAR]=#wiki_name#");
if ($arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'Y')
$arParams['PATH_TO_POST_EDIT'] = $this->GetParent()->arResult['PATH_TO_POST_EDIT'];
}
$arParams['PATH_TO_HISTORY'] = trim($arParams['PATH_TO_HISTORY']);
if(strlen($arParams['PATH_TO_HISTORY'])<=0)
$arParams['PATH_TO_HISTORY'] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?$arParams[PAGE_VAR]=#wiki_name#");
$arParams['PATH_TO_HISTORY_DIFF'] = trim($arParams['PATH_TO_HISTORY_DIFF']);
if(strlen($arParams['PATH_TO_HISTORY_DIFF'])<=0)
$arParams['PATH_TO_HISTORY_DIFF'] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?$arParams[PAGE_VAR]=#wiki_name#");
$arParams['PATH_TO_DISCUSSION'] = trim($arParams['PATH_TO_DISCUSSION']);
if(strlen($arParams['PATH_TO_DISCUSSION'])<=0)
$arParams['PATH_TO_DISCUSSION'] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?$arParams[PAGE_VAR]=#wiki_name#");
$arParams['PATH_TO_CATEGORY'] = trim($arParams['PATH_TO_POST']);
$arParams['PATH_TO_CATEGORIES'] = trim($arParams['PATH_TO_CATEGORIES']);
if(strlen($arParams['PATH_TO_CATEGORIES'])<=0)
$arParams['PATH_TO_CATEGORIES'] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?$arParams[OPER_VAR]=categories");
$arParams['PATH_TO_USER'] = trim($arParams['PATH_TO_USER']);
if(strlen($arParams['PATH_TO_USER'])<=0)
{
if ($arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'Y')
$arParams['PATH_TO_USER'] = $this->GetParent()->arParams['PATH_TO_USER'];
}
$arResult['PREVIEW'] = !empty($_POST['preview']) && $_POST['preview'] == 'Y' ? 'Y' : 'N';
$arResult['IMAGE_UPLOAD'] = isset($_GET['image_upload']) || ($_POST['do_upload']) ? 'Y' : 'N';
$arResult['INSERT_LINK'] = isset($_GET['insert_link']) ? 'Y' : 'N';
$arResult['INSERT_IMAGE'] = isset($_GET['insert_image']) ? 'Y' : 'N';
$arResult['INSERT_CATEGORY'] = isset($_GET['insert_category']) ? 'Y' : 'N';
$arResult['LOAD_EDITOR'] = isset($_GET['load_editor']) ? 'Y' : 'N';
$arResult['DEL_DIALOG'] = isset($_GET['del_dialog']) ? 'Y' : 'N';
if (isset($_REQUEST['post_to_feed']))
{
$arResult['POST_TO_FEED'] = $_REQUEST['post_to_feed'];
CUserOptions::SetOption("wiki", "POST_TO_FEED", $arResult['POST_TO_FEED']);
}
else
$arResult['POST_TO_FEED'] = CUserOptions::GetOption("wiki", "POST_TO_FEED", "N");
$arResult['WIKI_oper'] = 'edit';
if (isset($_REQUEST[$arParams['OPER_VAR']]))
$arResult['WIKI_oper'] = $_REQUEST[$arParams['OPER_VAR']];
$GLOBALS['arParams'] = $arParams;
if (!CModule::IncludeModule('wiki'))
{
ShowError(GetMessage('WIKI_MODULE_NOT_INSTALLED'));
return;
}
$arResult['ALLOW_HTML'] = CWikiUtils::isAllowHTML() ? 'Y' : 'N';
if(!CModule::IncludeModule('iblock'))
{
ShowError(GetMessage('IBLOCK_MODULE_NOT_INSTALLED'));
return;
}
if (IsModuleInstalled('search'))
AddEventHandler('search', 'BeforeIndex', array('CWikiUtils', 'OnBeforeIndex'));
if (empty($arParams['IBLOCK_ID']))
{
ShowError(GetMessage('IBLOCK_NOT_ASSIGNED'));
return;
}
if (CWikiSocnet::isEnabledSocnet() && !empty($arParams['SOCNET_GROUP_ID']))
{
if(!CModule::IncludeModule('socialnetwork'))
{
ShowError(GetMessage('SOCNET_MODULE_NOT_INSTALLED'));
return;
}
}
$arResult['SOCNET'] = false;
if (CWikiSocnet::isEnabledSocnet() && !empty($arParams['SOCNET_GROUP_ID']))
{
$iblock_id_tmp = CWikiSocnet::RecalcIBlockID($arParams["SOCNET_GROUP_ID"]);
if ($iblock_id_tmp)
$arParams['IBLOCK_ID'] = $iblock_id_tmp;
if (!CWikiSocnet::Init($arParams['SOCNET_GROUP_ID'], $arParams['IBLOCK_ID']))
{
ShowError(GetMessage('WIKI_SOCNET_INITIALIZING_FAILED'));
return;
}
$arResult['SOCNET'] = true;
}
if (!CWikiUtils::IsWriteable() || ($arResult['WIKI_oper'] == 'delete' && !CWikiUtils::IsDeleteable()))
{
ShowError(GetMessage('WIKI_ACCESS_DENIED'));
return;
}
$CWiki = new CWiki();
$arParams['ELEMENT_NAME'] = urldecode($arParams['ELEMENT_NAME']);
$arFilter = array(
'IBLOCK_ID' => $arParams['IBLOCK_ID'],
'CHECK_PERMISSIONS' => 'N'
);
if (empty($arParams['ELEMENT_NAME']))
$arParams['ELEMENT_NAME'] = CWiki::GetDefaultPage($arParams['IBLOCK_ID']);
$arResult['ELEMENT'] = array();
if ($arResult['WIKI_oper'] == 'delete')
{
$arResult['ELEMENT'] = CWiki::GetElementById($arParams['ELEMENT_NAME'], $arFilter);
if(!$arResult['ELEMENT'])
{
$arResult['ERROR_MESSAGE'] = GetMessage("WIKI_DELETE_ERROR");
$arParams['ELEMENT_NAME'] = "";
}
else
$arParams['ELEMENT_NAME'] = $arResult['ELEMENT']['NAME'];
}
$bNotPage = true;
// localize the name of the stream
$sPageName = CWikiUtils::htmlspecialcharsback($arParams['ELEMENT_NAME']);
$sCatName = '';
if (CWikiUtils::IsCategoryPage($sPageName, $sCatName))
{
$sPageName = preg_replace('/^category:/i'.BX_UTF_PCRE_MODIFIER, GetMessage('CATEGORY_NAME').':', $sPageName);
$arParams['ELEMENT_NAME'] = CWikiUtils::UnlocalizeCategoryName($arParams['ELEMENT_NAME']);
}
if (!empty($arParams['ELEMENT_NAME']) && ($arResult['ELEMENT'] = CWiki::GetElementByName($arParams['ELEMENT_NAME'], $arFilter, $arParams)) != false)
{
$arParams['ELEMENT_ID'] = $arResult['ELEMENT']['ID'];
if ($arResult['WIKI_oper'] != 'delete')
{
if ($arResult['ELEMENT']['ACTIVE'] == 'N')
$arResult['WIKI_oper'] = 'add';
else if ($arResult['WIKI_oper'] == 'add')
$bNotPage = false;
}
}
elseif($arResult['WIKI_oper'] != 'delete')
$arResult['WIKI_oper'] = 'add';
CUtil::InitJSCore(array('window', 'ajax'));
if ((empty($arResult['ELEMENT']) || !$bNotPage ) && $arResult['WIKI_oper']!="delete" && $arResult['WIKI_oper']!="rename" && $arResult['WIKI_oper']!="rename_it")
{
if ($arResult['WIKI_oper'] == 'add')
{
// Check name
if (!$bNotPage)
{
$i = 2;
$strName = $arParams['ELEMENT_NAME']." ($i)";
while(CWiki::GetElementByName($strName, $arFilter) !== false)
{
$i++;
$strName = $arParams['ELEMENT_NAME']." ($i)";
}
$arParams['ELEMENT_NAME'] = $strName;
$sPageName .= " ($i)";
}
// Create a temporary item
$sPageDecoded = CWikiUtils::htmlspecialcharsback(htmlspecialcharsbx($sPageName), false);
$arFields=array(
'NAME' => CWikiUtils::htmlspecialcharsback($arParams['ELEMENT_NAME']),
'IBLOCK_ID' => $arParams['IBLOCK_ID'],
'IBLOCK_TYPE' => $arParams['IBLOCK_TYPE'],
'DETAIL_TEXT_TYPE' => $arResult['ALLOW_HTML'] == 'Y' ? 'html' : 'text',
'DETAIL_TEXT' => GetMessage('WIKI_DEFAULT_DETAIL_TEXT', array(
'%HEAD%' => $arResult['ALLOW_HTML'] == 'Y' ? '<h1>'.$sPageDecoded.'</h1>' : '= '.$sPageDecoded.' =',
'%NEWLINE%' => $arResult['ALLOW_HTML'] == 'Y' ? '<br />' : "\n"
)),
'~DETAIL_TEXT' => GetMessage('WIKI_DEFAULT_DETAIL_TEXT', array(
'%HEAD%' => $arResult['ALLOW_HTML'] == 'Y' ? '<h1>'.$sPageDecoded.'</h1>' : '= '.$sPageDecoded.' =',
'%NEWLINE%' => $arResult['ALLOW_HTML'] == 'Y' ? '<br />' : "\n"
)),
'ACTIVE' => 'N',
'NAME_TEMPLATE' => $arParams['NAME_TEMPLATE']
);
$arParams['ELEMENT_ID'] = $CWiki->Add($arFields);
$arResult['ELEMENT'] = $arFields;
$arResult['ELEMENT']['ID'] = $arParams['ELEMENT_ID'];
$sPageName = $arResult['ELEMENT']['NAME'];
if (CWikiUtils::IsCategoryPage($sPageName, $sCatName))
$sPageName = preg_replace('/^category:/i'.BX_UTF_PCRE_MODIFIER, GetMessage('CATEGORY_NAME').':', $sPageName);
}
else
{
$arResult['ELEMENT']['NAME'] = $arParams['ELEMENT_NAME'];
$arResult['ERROR_MESSAGE'] = GetMessage('WIKI_PAGE_NOT_FIND');
}
$arResult['WIKI_oper'] = 'edit';
}
$arResult['ELEMENT']['NAME_LOCALIZE'] = CWikiUtils::htmlspecialcharsback($sPageName);
$arResult['PAGE_VAR'] = $arParams['PAGE_VAR'];
$arResult['OPER_VAR'] = $arParams['OPER_VAR'];
$arResult['PATH_TO_POST_EDIT'] = CHTTP::urlAddParams(
CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'],
array(
'wiki_name' => $arResult['ELEMENT']['NAME'],
'group_id' => CWikiSocnet::$iSocNetId
)
),
$arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams['OPER_VAR'] => 'rename_it') : array()
);
$arResult['PATH_TO_DELETE'] = CHTTP::urlAddParams(
CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'],
array(
'wiki_name' => $arResult['ELEMENT']['ID'],
'group_id' => CWikiSocnet::$iSocNetId
)
),
$arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams['OPER_VAR'] => 'delete') : array()
);
if ($arResult['INSERT_LINK'] == 'Y' || $arResult['INSERT_IMAGE'] == 'Y' || $arResult['LOAD_EDITOR'] == 'Y' || $arResult['CLEAR_CONTENT'] == 'Y'
|| $arResult['INSERT_CATEGORY'] == 'Y' || ($arResult['DEL_DIALOG'] != 'Y' && $arResult['WIKI_oper'] == 'delete') || $arResult['WIKI_oper'] == 'rename')
{
$APPLICATION->RestartBuffer();
header("Pragma: no-cache");
if ($arResult['INSERT_CATEGORY'] == 'Y')
{
if (CWikiSocnet::IsSocNet())
{
$arFilter['>LEFT_BORDER'] = CWikiSocnet::$iCatLeftBorder;
$arFilter['<RIGHT_BORDER'] = CWikiSocnet::$iCatRightBorder;
}
$rsTree = CIBlockSection::GetList(Array('left_margin' => 'asc'), $arFilter);
$arTree = array('-1' => GetMessage('WIKI_CHOISE_CATEGORY'));
$_iLevel = 0;
while($arElement = $rsTree->GetNext())
{
$_iLevel = (int)$arElement['DEPTH_LEVEL'] - (CWikiSocnet::IsSocNet() ? 2 : 1);
$_sSeparator = '';
if ($_iLevel > 0)
$_sSeparator = str_pad('', $_iLevel, '--');
$arTree[$arElement['NAME']] = $_sSeparator.CWikiUtils::htmlspecialcharsback($arElement['NAME'], false);
}
$arResult['TREE'] = $arTree;
}
}
else if ($arResult['IMAGE_UPLOAD'] == 'Y')
{
$APPLICATION->RestartBuffer();
header("Pragma: no-cache");
if (isset($_POST['do_upload']))
{
if (!empty($_FILES['FILE_ID']) && $_FILES['FILE_ID']['size'] > 0)
{
$iCheckResult = CFile::CheckImageFile($_FILES['FILE_ID']);
if (strlen($iCheckResult)==0)
{
$_imgID = $CWiki->addImage($arParams['ELEMENT_ID'], $arParams['IBLOCK_ID'], $_FILES['FILE_ID']);
$rsFile = CFile::GetByID($_imgID);
$arFile = $rsFile->Fetch();
$arResult['IMAGE'] = array(
'ID' => $_imgID,
'ORIGINAL_NAME' => $arFile['ORIGINAL_NAME'],
'FILE_SHOW' => CFile::ShowImage($_imgID, 100, 100, "id=\"$_imgID\" border=\"0\" style=\"cursor:pointer;\" onclick=\"doInsert(\'[File:".CUtil::JSEscape($arFile['ORIGINAL_NAME'])."]\',\'\',false, \'$_imgID\')\" title=\"".GetMessage('WIKI_IMAGE_INSERT')."\"")
);
}
else
$arResult['ERROR_MESSAGE'] = GetMessage('WIKI_IMAGE_UPLOAD_ERROR');
}
else
$arResult['ERROR_MESSAGE'] = GetMessage('WIKI_IMAGE_UPLOAD_ERROR');
}
}
else
{
//$arResult['TOPLINKS'] = CWikiUtils::getRightsLinks(array('article', $arResult['WIKI_oper']), $arParams);
$CWikiParser = new CWikiParser();
if (( $_SERVER['REQUEST_METHOD'] == 'POST' || $arResult['DEL_DIALOG'] == 'Y') && ((isset($_POST['apply']) || isset($_REQUEST['save']) && !isset($_POST['preview'])))) //$_SERVER['REQUEST_METHOD'] == 'POST'
{
if (check_bitrix_sessid())
{
// checking the data entered
$arFields = Array();
switch ($arResult['WIKI_oper'])
{
case 'edit':
case 'add':
default: //add
$arFields = array(
'DETAIL_TEXT' => $arResult['ALLOW_HTML'] == 'Y' && $_POST['POST_MESSAGE_TYPE'] == 'html' ? $_POST['POST_MESSAGE_HTML'] : CWikiUtils::htmlspecialchars_decode($_POST['POST_MESSAGE']),
'DETAIL_TEXT_TYPE' => $arResult['ALLOW_HTML'] == 'Y' ? $_POST['POST_MESSAGE_TYPE'] : 'text',
'TAGS' => $_POST['TAGS'],
'MODIFY_COMMENT' => $_POST['MODIFY_COMMENT'],
'IBLOCK_ID' => $arParams['IBLOCK_ID'],
'IBLOCK_TYPE' => $arParams['IBLOCK_TYPE'],
'ACTIVE' => 'Y',
'NAME_TEMPLATE' => $arParams['NAME_TEMPLATE']
);
if (isset($_POST['POST_TITLE']))
{
$arFields['NAME'] = CWikiUtils::htmlspecialchars_decode($_POST['POST_TITLE']);
$sCatName = '';
if (CWikiUtils::IsCategoryPage($arFields['NAME'] , $sCatName))
$arFields['NAME'] = 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');
}
else if (strpos($_POST['POST_TITLE'], '/') !== false)
{
$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);
//we should not post content of wiki page to feed if it redirects to another page
if(preg_match("/^\#(REDIRECT|".GetMessage('WIKI_REDIRECT').")\s*\[\[(.*)\]\]/iU".BX_UTF_PCRE_MODIFIER, $arFields['DETAIL_TEXT']))
$bPageRedirect = true;
else
$bPageRedirect = false;
if(CWikiSocnet::IsSocNet() && $arResult['POST_TO_FEED'] == "Y" && !$bPageRedirect)
{
if (strlen($arParams['SOCNET_GROUP_ID']) > 0)
CSocNetGroup::SetLastActivity(intval($arParams['SOCNET_GROUP_ID']));
$postUrl = str_replace(
array('#group_id#', '#wiki_name#'),
array(intval($arParams['SOCNET_GROUP_ID']), urlencode($arFields['NAME'])),
$arParams['~PATH_TO_POST']
);
$arCurImages = array();
$rsProperties = CIBlockElement::GetProperty($arParams['IBLOCK_ID'], $arParams['ELEMENT_ID'], 'value_id', 'asc', array('ACTIVE' => 'Y', 'CODE' => 'IMAGES'));
while($arProperty = $rsProperties->Fetch())
{
if($arProperty['CODE'] == 'IMAGES')
{
$arCurImages[] = $arProperty['VALUE'];
}
}
$text4message = $CWikiParser->Parse($arFields['DETAIL_TEXT'], $arFields['DETAIL_TEXT_TYPE'], $arCurImages);
$text4message = CWikiSocnet::PrepareTextForFeed($text4message);
$text4message = $CWikiParser->Clear($text4message);
//while CSocNetTextParser::closetags closes <br> by </br> must be corrected soon. Then remove this.
$text4message = preg_replace("/<\s*br\s*>/ismU", "<br />", $text4message);
$bNew = true;
$notify_title_tmp = str_replace(Array("\r\n", "\n"), " ", $arFields["NAME"]);
$notify_title = TruncateText($notify_title_tmp, 100);
$notify_title_out = TruncateText($notify_title_tmp, 255);
if ($arResult['WIKI_oper'] == 'edit')
{
$dbLog = CSocNetLog::GetList(array('ID' => 'DESC'), array('SOURCE_ID' => $arParams['ELEMENT_ID'])); //'SITE_ID' => $arGroupSite['SITE_ID']
if ($arLog = $dbLog->Fetch())
{
$bNew = false;
$arSoFields = Array(
'=LOG_DATE' => $GLOBALS['DB']->CurrentTimeFunction(),
'=LOG_UPDATE' => $GLOBALS['DB']->CurrentTimeFunction(),
'USER_ID' => $GLOBALS['USER']->GetID(),
'TITLE' => $arFields['NAME'],
'MESSAGE' => $text4message,
'TEXT_MESSAGE' => "\n".GetMessage('WIKI_MODIFY_COMMENT').": ".($_POST['MODIFY_COMMENT'] ? $_POST['MODIFY_COMMENT'] : ' '.GetMessage('WIKI_MODIFY_COMMENT_ABSENT'))."\n",
'URL' => $postUrl
);
$logID = CSocNetLog::Update($arLog['ID'], $arSoFields);
if (intval($logID) > 0)
{
CSocNetLogRights::SetForSonet($arLog['ID'], SONET_SUBSCRIBE_ENTITY_GROUP, intval($arParams['SOCNET_GROUP_ID']), "wiki", "view");
CSocNetLog::CounterIncrement($logID);
$arNotifyParams = array(
"LOG_ID" => $logID,
"GROUP_ID" => intval($arParams['SOCNET_GROUP_ID']),
"NOTIFY_MESSAGE" => "",
"FROM_USER_ID" => $arSoFields["USER_ID"],
"URL" => $arSoFields["URL"],
"MESSAGE" => GetMessage("WIKI_SONET_IM_EDIT", Array(
"#title#" => "<a href=\"#URL#\" class=\"bx-notifier-item-action\">".$notify_title."</a>",
)),
"MESSAGE_OUT" => GetMessage("WIKI_SONET_IM_EDIT", Array(
"#title#" => $notify_title_out
))." (#URL#)",
"EXCLUDE_USERS" => array($arSoFields["USER_ID"])
);
CSocNetSubscription::NotifyGroup($arNotifyParams);
}
}
}
if ($bNew)
{
$arSoFields = Array(
'ENTITY_TYPE' => SONET_SUBSCRIBE_ENTITY_GROUP,
'IS_CUSTOM_ET' => 'N',
'ENTITY_ID' => intval($arParams['SOCNET_GROUP_ID']),
'EVENT_ID' => 'wiki',
'USER_ID' => $GLOBALS['USER']->GetID(),
'=LOG_DATE' => $GLOBALS['DB']->CurrentTimeFunction(),
'TITLE_TEMPLATE' => GetMessage('WIKI_SONET_LOG_TITLE_TEMPLATE'),
'TITLE' => $arFields['NAME'],
'MESSAGE' => $text4message,
'TEXT_MESSAGE' => '',
'SITE_ID' =>$arGroupSite['SITE_ID'],
'MODULE_ID' => 'wiki',
'URL' => str_replace(
array('#group_id#', '#wiki_name#'),
array(intval($arParams['SOCNET_GROUP_ID']), urlencode($arFields['NAME'])),
$arParams['~PATH_TO_POST']
),
'CALLBACK_FUNC' => false,
'SOURCE_ID' => $arParams['ELEMENT_ID'],
'PARAMS' => 'forum_id='.intval(COption::GetOptionString('wiki', 'socnet_forum_id')),
'RATING_TYPE_ID' => 'IBLOCK_ELEMENT',
'RATING_ENTITY_ID' => intval($arParams['ELEMENT_ID'])
);
$logID = CSocNetLog::Add($arSoFields, false);
if (intval($logID) > 0)
{
CSocNetLog::Update($logID, array('TMP_ID' => $logID));
CSocNetLogRights::SetForSonet($logID, SONET_SUBSCRIBE_ENTITY_GROUP, intval($arParams['SOCNET_GROUP_ID']), "wiki", "view", true);
CSocNetLog::CounterIncrement($logID);
$arNotifyParams = array(
"LOG_ID" => $logID,
"GROUP_ID" => intval($arParams['SOCNET_GROUP_ID']),
"NOTIFY_MESSAGE" => "",
"FROM_USER_ID" => $arSoFields["USER_ID"],
"URL" => $arSoFields["URL"],
"MESSAGE" => GetMessage("WIKI_SONET_IM_ADD", Array(
"#title#" => "<a href=\"#URL#\" class=\"bx-notifier-item-action\">".$notify_title."</a>",
)),
"MESSAGE_OUT" => GetMessage("WIKI_SONET_IM_ADD", Array(
"#title#" => $notify_title_out
))." (#URL#)",
"EXCLUDE_USERS" => array($arSoFields["USER_ID"])
);
CSocNetSubscription::NotifyGroup($arNotifyParams);
}
}
}
}
$arResult['ELEMENT'] = $arFields + $arResult['ELEMENT'];
break;
case 'edit_title':
break;
case 'delete':
if(CWikiSocnet::IsSocNet())
{
$dbResTmp = CIBlockElement::GetByID($arParams['ELEMENT_ID']);
if($arResTmp = $dbResTmp->GetNext())
$strTitleTmp = $arResTmp['NAME'];
$dbLog = CSocNetLog::GetList(
array('ID' => 'DESC'),
array('SOURCE_ID' => $arParams['ELEMENT_ID'])
//'SITE_ID' => $arGroupSite['SITE_ID'])
);
$arLog = $dbLog->Fetch();
}
$CWiki->Delete($arParams['ELEMENT_ID'], $arParams['IBLOCK_ID']);
if(strlen($strTitleTmp) > 0 && isset($arLog['ID']) && CWikiSocnet::IsSocNet())
{
$arSoFields = Array(
'ENTITY_TYPE' => SONET_SUBSCRIBE_ENTITY_GROUP,
'IS_CUSTOM_ET' => 'N',
'ENTITY_ID' => intval($arParams['SOCNET_GROUP_ID']),
'EVENT_ID' => 'wiki_del',
'USER_ID' => $GLOBALS['USER']->GetID(),
'=LOG_DATE' => $GLOBALS['DB']->CurrentTimeFunction(),
'TITLE_TEMPLATE' => GetMessage('WIKI_DEL_SONET_LOG_TITLE_TEMPLATE'),
'TITLE' => $strTitleTmp,
'MESSAGE' => '',
'TEXT_MESSAGE' => '',
'MODULE_ID' => 'wiki',
'URL' => '',
'CALLBACK_FUNC' => false,
'SOURCE_ID' => $arParams['ELEMENT_ID'],
'RATING_TYPE_ID' => 'WIKI_'.$arParams['IBLOCK_ID'].'_PAGE',
'RATING_ENTITY_ID' => intval($arParams['ELEMENT_ID'])
);
$logID = CSocNetLog::Update($arLog['ID'], $arSoFields);
if (intval($logID) > 0)
{
CSocNetLogRights::SetForSonet($arLog['ID'], SONET_SUBSCRIBE_ENTITY_GROUP, intval($arParams['SOCNET_GROUP_ID']), "wiki", "view");
CSocNetLog::CounterIncrement($logID);
$notify_title_tmp = str_replace(Array("\r\n", "\n"), " ", $strTitleTmp);
$notify_title = TruncateText($notify_title_tmp, 100);
$notify_title_out = TruncateText($notify_title_tmp, 255);
$arNotifyParams = array(
"LOG_ID" => $logID,
"GROUP_ID" => intval($arParams['SOCNET_GROUP_ID']),
"NOTIFY_MESSAGE" => "",
"FROM_USER_ID" => $arSoFields["USER_ID"],
"URL" => "",
"MESSAGE" => GetMessage("WIKI_SONET_IM_DELETE", Array(
"#title#" => $notify_title,
)),
"MESSAGE_OUT" => GetMessage("WIKI_SONET_IM_DELETE", Array(
"#title#" => $notify_title_out
)),
"EXCLUDE_USERS" => array($arSoFields["USER_ID"])
);
CSocNetSubscription::NotifyGroup($arNotifyParams);
}
}
break;
case 'rename_it':
/*rename element, and renew all links directed on this page and/or category*/
$newName = $_POST["NEW_NAME"];
if(!isset($newName)
|| $newName ==""
|| $newName == $arResult['ELEMENT']['NAME_LOCALIZE']
)
break;
$sCatName = '';
if (CWikiUtils::IsCategoryPage($arParams['ELEMENT_NAME'] , $sCatName))
$newName = 'category:'.$newName;
if (!$CWiki->Rename($arParams['ELEMENT_ID'], array('NAME' => $newName, 'IBLOCK_ID' => $arParams['IBLOCK_ID']),true))
{
$arResult['ERROR_MESSAGE'] = GetMessage('WIKI_ERROR_RENAME');
break;
}
$iBlockSectId = CWikiSocnet::$iCatId ? CWikiSocnet::$iCatId : false;
$CWiki->RenameLinkOnPages($arParams['IBLOCK_ID'], $arParams['ELEMENT_NAME'], $newName, $iBlockSectId);
//post to feed
if(CWikiSocnet::IsSocNet())
{
$postUrl = str_replace(
array('#group_id#', '#wiki_name#'),
array(intval($arParams['SOCNET_GROUP_ID']), urlencode($newName)),
$arParams['~PATH_TO_POST']
);
$dbLog = CSocNetLog::GetList(array('ID' => 'DESC'), array('SOURCE_ID' => $arParams['ELEMENT_ID']));
if ($arLog = $dbLog->Fetch())
{
$arSoFields = Array(
'=LOG_DATE' => $GLOBALS['DB']->CurrentTimeFunction(),
'=LOG_UPDATE' => $GLOBALS['DB']->CurrentTimeFunction(),
'USER_ID' => $GLOBALS['USER']->GetID(),
'TITLE' => $newName,
'TEXT_MESSAGE' => "\n".GetMessage('WIKI_MODIFY_COMMENT').": ".GetMessage('WIKI_PAGE_RENAMED',array("%OLD_NAME%"=>$arParams['ELEMENT_NAME'], "%NEW_NAME%"=>$newName))."\n",
'URL' => $postUrl
);
//die(print_r($arSoFields,true));
$logID = CSocNetLog::Update($arLog['ID'], $arSoFields);
if (intval($logID) > 0)
{
CSocNetLogRights::SetForSonet($arLog['ID'], SONET_SUBSCRIBE_ENTITY_GROUP, intval($arParams['SOCNET_GROUP_ID']), "wiki", "view");
CSocNetLog::CounterIncrement($logID);
$notify_title_tmp = str_replace(Array("\r\n", "\n"), " ", $arLog["TITLE"]);
$notify_title_old = TruncateText($notify_title_tmp, 100);
$notify_title_old_out = TruncateText($notify_title_tmp, 255);
$notify_title_tmp = str_replace(Array("\r\n", "\n"), " ", $newName);
$notify_title_new = TruncateText($notify_title_tmp, 100);
$notify_title_new_out = TruncateText($notify_title_tmp, 255);
$arNotifyParams = array(
"LOG_ID" => $logID,
"GROUP_ID" => intval($arParams['SOCNET_GROUP_ID']),
"NOTIFY_MESSAGE" => "",
"FROM_USER_ID" => $arSoFields["USER_ID"],
"URL" => $arSoFields["URL"],
"MESSAGE" => GetMessage("WIKI_SONET_IM_RENAME", Array(
"#title_old#" => $notify_title_old,
"#title_new#" => "<a href=\"#URL#\" class=\"bx-notifier-item-action\">".$notify_title_new."</a>"
)),
"MESSAGE_OUT" => GetMessage("WIKI_SONET_IM_RENAME", Array(
"#title_old#" => $notify_title_old_out,
"#title_new#" => $notify_title_new_out
))." (#URL#)",
"EXCLUDE_USERS" => array($arSoFields["USER_ID"])
);
CSocNetSubscription::NotifyGroup($arNotifyParams);
}
}
}
$arParams['ELEMENT_NAME'] = $newName;
break;
}
if (empty($arResult['ERROR_MESSAGE']))
{
if (!isset($_POST['apply']))
LocalRedirect(CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST'],
array(
'wiki_name' => urlencode($arParams['ELEMENT_NAME']),
'group_id' => CWikiSocnet::$iSocNetId,
)),
array('wiki_page_cache_clear' => 'Y'))
);
else
LocalRedirect(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())
);
}
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']);
$arResult['ELEMENT']['~TAGS'] = htmlspecialcharsbx($_POST['TAGS']);
}
}
// 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']);
?>