Current Path : /var/www/html/clients/wodo.e-nk.ru/bitrix/components/bitrix/wiki.history.diff/ |
Current File : /var/www/html/clients/wodo.e-nk.ru/bitrix/components/bitrix/wiki.history.diff/component.php |
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); global $CACHE_MANAGER; $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["PAGE_OPER"])) $arParams["OPER_VAR"] = "oper"; $arParams["PATH_TO_POST"] = trim($arParams["PATH_TO_POST"]); if(empty($arParams["SEF_MODE"])) { $arParams["SEF_MODE"] = "N"; if ($arParams['IN_COMPLEX'] == 'Y') $arParams["SEF_MODE"] = $this->GetParent()->arResult['SEF_MODE']; } $arCache = array(); 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']; } if (!empty($arParams["SOCNET_GROUP_ID"])) $arCache = array('SOCNET_GROUP_ID' => $arParams["SOCNET_GROUP_ID"]); $arParams["PATH_TO_POST"] = trim($arParams["PATH_TO_POST"]); if(empty($arParams["PATH_TO_POST"])) $arParams["PATH_TO_POST"] = htmlspecialchars($APPLICATION->GetCurPage()."?$arParams[PAGE_VAR]=#wiki_name#"); $arParams["PATH_TO_HISTORY"] = trim($arParams["PATH_TO_HISTORY"]); if(empty($arParams["PATH_TO_POST"])) $arParams["PATH_TO_HISTORY"] = htmlspecialchars($APPLICATION->GetCurPage()."?$arParams[PAGE_VAR]=#wiki_name#"); $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']; } $arParams["PATH_TO_HISTORY_DIFF"] = trim($arParams["PATH_TO_HISTORY_DIFF"]); if(strlen($arParams["PATH_TO_HISTORY_DIFF"])<=0) { $arParams["PATH_TO_HISTORY_DIFF"] = htmlspecialchars($APPLICATION->GetCurPage()."?$arParams[PAGE_VAR]=#wiki_name#"); if ($arParams['IN_COMPLEX'] == 'Y' && $arParams["SEF_MODE"] == "Y") $arParams["PATH_TO_HISTORY_DIFF"] = $this->GetParent()->arResult['PATH_TO_HISTORY_DIFF']; } $arParams["PATH_TO_DISCUSSION"] = trim($arParams["PATH_TO_DISCUSSION"]); if(strlen($arParams["PATH_TO_DISCUSSION"])<=0) { $arParams["PATH_TO_DISCUSSION"] = htmlspecialchars($APPLICATION->GetCurPage()."?$arParams[PAGE_VAR]=#wiki_name#"); } $DiffId = 0; if (isset($_REQUEST['diffid'])) { $DiffId = intval($_REQUEST['diffid']); $arCache['diffid'] = $DiffId; } $historyId = 0; if (isset($_REQUEST['oldid'])) { $historyId = intval($_REQUEST['oldid']); $arCache['oldid'] = $historyId; } $GLOBALS['arParams'] = $arParams; if (!CModule::IncludeModule("wiki")) { ShowError(GetMessage("WIKI_MODULE_NOT_INSTALLED")); return; } if(!CModule::IncludeModule("iblock")) { ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED")); return; } if(!CModule::IncludeModule("bizproc")) { ShowError(GetMessage("BIZPROC_MODULE_NOT_INSTALLED")); return; } if (empty($arParams['IBLOCK_ID'])) { ShowError(GetMessage("IBLOCK_NOT_ASSIGNED")); return; } if (!CWikiUtils::IsReadable()) { ShowError(GetMessage("WIKI_ACCESS_DENIED")); 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"])) { if (!CWikiSocnet::Init($arParams["SOCNET_GROUP_ID"], $arParams["IBLOCK_ID"])) { ShowError(GetMessage("WIKI_SOCNET_INITIALIZING_FAILED")); return; } $arResult['SOCNET'] = true; } if (empty($historyId) || empty($DiffId)) { LocalRedirect(CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_HISTORY'], array('wiki_name' => $arParams['ELEMENT_NAME'], 'group_id' => CWikiSocnet::$iSocNetId)), $arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams["OPER_VAR"] => 'history') : array())); return ; } if($this->StartResultCache(false, array($USER->GetGroups(), $arCache), false)) { $res = CIBlock::GetByID($arParams["IBLOCK_ID"]); $arIBLOCK = $res->GetNext(); if (empty($arIBLOCK['BIZPROC']) || $arIBLOCK['BIZPROC'] != 'Y') { $this->AbortResultCache(); ShowError(GetMessage("WIKI_NOT_CHANGE_BIZPROC")); return; } $arParams["ELEMENT_NAME"] = urldecode($arParams["ELEMENT_NAME"]); $arResult['ELEMENT'] = array(); if (empty($arParams["ELEMENT_NAME"])) $arParams["ELEMENT_NAME"] = CWiki::GetDefaultPage($arParams['IBLOCK_ID']); $arFilter = array( "IBLOCK_ID" => $arParams['IBLOCK_ID'], "CHECK_PERMISSIONS" => 'N', "ACTIVE" => 'Y' ); if (!empty($arParams["ELEMENT_NAME"]) && ($arResult['ELEMENT'] = CWiki::getElementByName($arParams["ELEMENT_NAME"], $arFilter)) != false) $arParams['ELEMENT_ID'] = $arResult['ELEMENT']['ID']; $documentId = array("iblock", "CIBlockDocument", $arParams['ELEMENT_ID']); $arErrorsTmp = array(); $arHistoryResult = CBPDocument::GetDocumentFromHistory($historyId, $arErrorsTmp); if (count($arErrorsTmp) > 0) { foreach ($arErrorsTmp as $e) $arResult["FATAL_MESSAGE"] .= $e["message"]; } $arDiffResult = CBPDocument::GetDocumentFromHistory($DiffId, $arErrorsTmp); if (count($arErrorsTmp) > 0) { foreach ($arErrorsTmp as $e) $arResult["FATAL_MESSAGE"] .= $e["message"]; $this->AbortResultCache(); ShowError($arResult["FATAL_MESSAGE"]); return; } $canRead = CBPDocument::CanUserOperateDocument( CBPCanUserOperateOperation::ReadDocument, $GLOBALS["USER"]->GetID(), $documentId, array("UserGroups" => $GLOBALS["USER"]->GetUserGroupArray()) ); if (!$canRead) { $this->AbortResultCache(); ShowError(GetMessage("WIKI_ACCESS_DENIED")); return; } $rsUser = CUser::GetByID($arDiffResult['USER_ID']); $arUser = $rsUser->Fetch(); $arResult['VERSION_DIFF'] = array(); $arResult['VERSION_DIFF']['USER_ID'] = $arDiffResult['USER_ID']; $arResult['VERSION_DIFF']['USER_LOGIN'] = CWikiUtils::GetUserLogin($arUser); $arResult['VERSION_DIFF']['MODIFIED'] = $arDiffResult['MODIFIED']; $arResult['VERSION_DIFF']['ID'] = $arDiffResult['ID']; $arResult['VERSION_DIFF']['SHOW_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST"], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), array('oldid' => $arDiffResult['ID'])); $arResult['VERSION_DIFF']['USER_LINK'] = ''; if (!empty($arParams["PATH_TO_USER"])) { $arResult['VERSION_DIFF']['USER_LINK'] = CHTTP::urlAddParams( CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId, 'user_id' => $arDiffResult['USER_ID'])), array()); } $rsUser = CUser::GetByID($arHistoryResult['USER_ID']); $arUser = $rsUser->Fetch(); $arResult['VERSION_OLD'] = array(); $arResult['VERSION_OLD']['USER_ID'] = $arHistoryResult['USER_ID']; $arResult['VERSION_OLD']['USER_LOGIN'] = CWikiUtils::GetUserLogin($arUser); $arResult['VERSION_OLD']['MODIFIED'] = $arHistoryResult['MODIFIED']; $arResult['VERSION_OLD']['ID'] = $arHistoryResult['ID']; $arResult['VERSION_OLD']['SHOW_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST"], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), array('oldid' => $arHistoryResult['ID'])); $arResult['VERSION_OLD']['USER_LINK'] = ''; if (!empty($arParams["PATH_TO_USER"])) { $arResult['VERSION_OLD']['USER_LINK'] = CHTTP::urlAddParams( CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array('wiki_name' => urlencode($$arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId, 'user_id' => $arHistoryResult['USER_ID'])), array()); } $arHp = array('oldid' => $arHistoryResult['ID'], "sessid" => bitrix_sessid()); if ($arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N') $arHp[$arParams["OPER_VAR"]] = 'history'; $arResult['CANCEL_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_HISTORY"], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), $arHp); if ($arHistoryResult['DOCUMENT']['FIELDS']['DETAIL_TEXT_TYPE'] == 'text') { $arHistoryResult['DOCUMENT']['FIELDS']['DETAIL_TEXT'] = nl2br($arHistoryResult['DOCUMENT']['FIELDS']['DETAIL_TEXT']); } if ($arDiffResult['DOCUMENT']['FIELDS']['DETAIL_TEXT_TYPE'] == 'text') { $arDiffResult['DOCUMENT']['FIELDS']['DETAIL_TEXT'] = nl2br($arDiffResult['DOCUMENT']['FIELDS']['DETAIL_TEXT']); } $CWikiSecurity = new CWikiSecurity(); $CWikiSecurity->clear($arHistoryResult['DOCUMENT']['FIELDS']['DETAIL_TEXT']); $CWikiSecurity = new CWikiSecurity(); $CWikiSecurity->clear($arDiffResult['DOCUMENT']['FIELDS']['DETAIL_TEXT']); $arResult['DIFF'] = CWikiDiff::getDiff($arHistoryResult['DOCUMENT']['FIELDS']['DETAIL_TEXT'], $arDiffResult['DOCUMENT']['FIELDS']['DETAIL_TEXT'] ); $CACHE_MANAGER->StartTagCache($this->GetCachePath()); $CACHE_MANAGER->RegisterTag("wiki_".$arParams['ELEMENT_ID']); $CACHE_MANAGER->EndTagCache(); $this->IncludeComponentTemplate(); } include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/components/bitrix/wiki/include/nav.php'); unset($GLOBALS['arParams']); ?>