Your IP : 172.28.240.42


Current Path : /var/www/html/clients/wodo.e-nk.ru/bitrix/components/bitrix/wiki.history.diff/
Upload File :
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']);

?>