use Bitrix\Main\Composite\Debug\Model\LogTable; use Bitrix\Main\Composite\Internals\Model\PageTable; use Bitrix\Main\Composite\Page; use Bitrix\Main\Context; use Bitrix\Main\Localization\Loc; /** * @global \CUser $USER * @global \CMain $APPLICATION */ require_once(__DIR__."/../include/prolog_admin_before.php"); require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/prolog.php"); if (!$USER->canDoOperation("view_other_settings")) { $APPLICATION->authForm(Loc::getMessage("ACCESS_DENIED")); } Loc::loadMessages(__FILE__); $request = Context::getCurrent()->getRequest(); $logId = intval($request->get("log_id")); $logRecord = LogTable::getList(array( "filter" => array( "ID" => $logId, "TYPE" => \Bitrix\Main\Composite\Debug\Logger::TYPE_CACHE_REWRITING ) ))->fetch(); $page = null; $cacheContent = false; $error = null; if ($logRecord) { $page = PageTable::getRowById($logRecord["PAGE_ID"]); if ($page) { $cache = Page::createFromCacheKey($page["CACHE_KEY"]); $cacheContent = $cache->read(); if (!$cacheContent) { $error = Loc::getMessage("MAIN_COMPOSITE_DIFF_CONTENT_NOT_FOUND"); } } else { $error = Loc::getMessage("MAIN_COMPOSITE_DIFF_PAGE_NOT_FOUND"); } } else { $error = Loc::getMessage("MAIN_COMPOSITE_DIFF_LOG_NOT_FOUND"); } if (!$logRecord || !$page || !$cacheContent) { echo $error; return; } $diff = new \Bitrix\Main\Text\Diff(); $linesA = preg_split('/\r\n|\n|\r/', $logRecord["MESSAGE"]); $linesB = preg_split('/\r\n|\n|\r/', $cacheContent); $diffScript = $diff->getDiffScript($linesA, $linesB); $deletedFromA = array(); $insertedToB = array(); foreach ($diffScript as $scriptRecord) { $deletedFromA[$scriptRecord["startA"]] = $scriptRecord["deletedA"]; $insertedToB[$scriptRecord["startB"]] = $scriptRecord["insertedB"]; } ?>