use Bitrix\Main\Composite;
use Bitrix\Main\Composite\Helper;
use Bitrix\Main\Composite\Internals\AutomaticArea;
use Bitrix\Main\Config\Option;
use Bitrix\Main\Config\Configuration;
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/prolog.php");
define("HELP_FILE", "settings/composite.php");
/** @var CUser $USER */
/** @var CMain $APPLICATION */
IncludeModuleLangFile(__FILE__);
$isAdmin = $USER->CanDoOperation('cache_control');
if(!$USER->CanDoOperation('cache_control') && !$USER->CanDoOperation('view_other_settings'))
{
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
if (Composite\Engine::isSelfHostedPortal())
{
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
\Bitrix\Main\UI\Extension::load('ui.fonts.opensans');
$APPLICATION->SetAdditionalCSS("/bitrix/panel/main/composite.css");
$APPLICATION->AddHeadString("");
$errors = [];
$compositeOptions = Helper::getOptions();
$autoCompositeMode = false;
$compositeMode = false;
if (Helper::isOn())
{
if (isset($compositeOptions["AUTO_COMPOSITE"]) && $compositeOptions["AUTO_COMPOSITE"] === "Y")
{
$autoCompositeMode = true;
}
else
{
$compositeMode = true;
}
}
$tabs = array(
array(
"DIV" => "autocomposite",
"TAB" => GetMessage("MAIN_COMPOSITE_AUTO_COMPOSITE_TAB_TITLE").
($autoCompositeMode ? " (".GetMessage("MAIN_COMPOSITE_ENABLED").")" : ""),
"ICON" => "main_settings",
"TITLE" => GetMessage("MAIN_COMPOSITE_TAB"),
"ONSELECT" => "onTabSelected('autocomposite');"
),
array(
"DIV" => "composite",
"TAB" => GetMessage("MAIN_COMPOSITE_SHORT_TITLE").
($compositeMode ? " (".GetMessage("MAIN_COMPOSITE_ENABLED").")" : ""),
"ICON" => "main_settings",
"TITLE" => GetMessage("MAIN_COMPOSITE_TAB"),
"ONSELECT" => "onTabSelected('composite');"
),
array(
"DIV" => "settings",
"TAB" => GetMessage("MAIN_COMPOSITE_SETTINGS_TAB"),
"ICON" => "main_settings",
"TITLE" => GetMessage("MAIN_COMPOSITE_TAB_TITLE"),
"ONSELECT" => "onTabSelected('settings');"
),
array(
"DIV" => "groups",
"TAB" => GetMessage("MAIN_COMPOSITE_TAB_GROUPS"),
"ICON" => "main_settings",
"TITLE" => GetMessage("MAIN_COMPOSITE_TAB_GROUPS_TITLE_NEW"),
"ONSELECT" => "onTabSelected('groups');"
),
array(
"DIV" => "button",
"TAB" => GetMessage("MAIN_COMPOSITE_BANNER_SEP")." \"".GetMessage("COMPOSITE_BANNER_TEXT")."\"",
"ICON" => "main_banner",
"TITLE" => GetMessage("MAIN_COMPOSITE_BANNER_SEP")." "".GetMessage("COMPOSITE_BANNER_TEXT").""",
"ONSELECT" => "onTabSelected('button');"
),
);
if (LANGUAGE_ID === "ru" || LANGUAGE_ID === "ua")
{
$tabs[] = array(
"DIV" => "patent",
"TAB" => GetMessage("MAIN_COMPOSITE_PATENT_TAB"),
"TITLE" => GetMessage("MAIN_COMPOSITE_PATENT_TAB_DESC"),
);
}
$tabControl = new CAdminTabControl("tabControl", $tabs, false, true);
if ($_SERVER["REQUEST_METHOD"] == "POST" &&
check_bitrix_sessid() &&
$isAdmin &&
((isset($_REQUEST["composite_save_opt"]) && $_REQUEST["composite_save_opt"] <> '') ||
isset($_REQUEST["autocomposite_mode_button"]) ||
isset($_REQUEST["composite_mode_button"]))
)
{
$compositeOptions["INCLUDE_MASK"] = $_REQUEST["composite_include_mask"] ?? '';
$compositeOptions["EXCLUDE_MASK"] = $_REQUEST["composite_exclude_mask"] ?? '';
$compositeOptions["EXCLUDE_PARAMS"] = $_REQUEST["composite_exclude_params"] ?? '';
$compositeOptions["NO_PARAMETERS"] = $_REQUEST["composite_no_parameters"] ?? '';
$compositeOptions["IGNORED_PARAMETERS"] = $_REQUEST["composite_ignored_parameters"] ?? '';
$compositeOptions["FILE_QUOTA"] = $_REQUEST["composite_quota"] ?? '';
$compositeOptions["BANNER_BGCOLOR"] = $_REQUEST["composite_banner_bgcolor"] ?? '';
$compositeOptions["BANNER_STYLE"] = $_REQUEST["composite_banner_style"] ?? '';
if (isset($_REQUEST["composite_only_parameters"]))
{
$compositeOptions["ONLY_PARAMETERS"] = $_REQUEST["composite_only_parameters"];
}
$storage = $_REQUEST["composite_storage"] ?? '';
if ( ($storage === "memcached" || $storage === "memcached_cluster") && extension_loaded("memcache"))
{
$compositeOptions["MEMCACHED_HOST"] = $_REQUEST["composite_memcached_host"] ?? '';
$compositeOptions["MEMCACHED_PORT"] = $_REQUEST["composite_memcached_port"] ?? '';
if (defined("BX_CLUSTER_GROUP"))
{
$compositeOptions["MEMCACHED_CLUSTER_GROUP"] = BX_CLUSTER_GROUP;
}
}
else
{
$storage = "files";
}
$compositeOptions["STORAGE"] = $storage;
if (isset($_REQUEST["group"]) && is_array($_REQUEST["group"]))
{
$compositeOptions["GROUPS"] = array();
$rsGroups = CGroup::GetList();
while ($arGroup = $rsGroups->Fetch())
{
if ($arGroup["ID"] > 2)
{
if (in_array($arGroup["ID"], $_REQUEST["group"]))
{
$compositeOptions["GROUPS"][] = $arGroup["ID"];
}
}
}
}
if (isset($_REQUEST["composite_domains"]) && $_REQUEST["composite_domains"] <> '')
{
$compositeOptions["DOMAINS"] = array();
foreach(explode("\n", $_REQUEST["composite_domains"]) as $domain)
{
$domain = trim($domain, " \t\n\r");
if ($domain != "")
{
$compositeOptions["DOMAINS"][$domain] = $domain;
}
}
$isSaveOptions = (isset($_REQUEST["composite_save_opt"]) && $_REQUEST["composite_save_opt"] <> '');
$isTurnOnComposite = (
(isset($_REQUEST["composite_mode_button"]) && isset($_REQUEST["composite"]) && $_REQUEST["composite"] === "Y")
|| (isset($_REQUEST["autocomposite_mode_button"]) && isset($_REQUEST["auto_composite"]) && $_REQUEST["auto_composite"] === "Y")
);
if ($isSaveOptions || $isTurnOnComposite)
{
$siteList = \Bitrix\Main\SiteTable::getList([
"select" => ["LID", "SERVER_NAME", "DEF"],
])->fetchAll();
$portalSiteData = [];
foreach ($siteList as $site)
{
if (Option::get("main", "wizard_firstportal_".$site["LID"], false, $site["LID"]) !== false)
{
$portalSiteData = $site;
break;
}
}
if ($portalSiteData)
{
$corporatePortalDomain = null;
if (!empty($portalSiteData["SERVER_NAME"]))
{
$corporatePortalDomain = $portalSiteData["SERVER_NAME"];
}
elseif ($portalSiteData["DEF"] === "Y")
{
$corporatePortalDomain = Option::get("main", "server_name", "");
}
if ($corporatePortalDomain)
{
$corporatePortalDomain = Helper::getDomainName($corporatePortalDomain);
foreach ($compositeOptions["DOMAINS"] as $domain)
{
if (Helper::getDomainName($domain) === $corporatePortalDomain)
{
$errors[] = GetMessage("MAIN_COMPOSITE_CORPORATE_PORTAL_DOMAIN_WARNING");
break;
}
}
}
}
}
}
if (isset($_REQUEST["composite_cache_mode"]))
{
if (isset($_REQUEST["composite_cache_mode"]) && $_REQUEST["composite_cache_mode"] === "standard_ttl")
{
$compositeOptions["AUTO_UPDATE"] = "Y";
$ttl = isset($_REQUEST["composite_standard_ttl"]) ? intval($_REQUEST["composite_standard_ttl"]) : 120;
$compositeOptions["AUTO_UPDATE_TTL"] = $ttl;
}
elseif (isset($_REQUEST["composite_cache_mode"]) && $_REQUEST["composite_cache_mode"] === "no_update")
{
$compositeOptions["AUTO_UPDATE"] = "N";
$ttl = isset($_REQUEST["composite_no_update_ttl"]) ? intval($_REQUEST["composite_no_update_ttl"]) : 600;
$compositeOptions["AUTO_UPDATE_TTL"] = $ttl;
}
else
{
$compositeOptions["AUTO_UPDATE"] = "Y";
$compositeOptions["AUTO_UPDATE_TTL"] = "0";
}
}
$compositeOptions["FRAME_MODE"] = $_REQUEST["composite_frame_mode"] ?? "";
$compositeOptions["FRAME_TYPE"] = $_REQUEST["composite_frame_type"] ?? "";
if (empty($errors))
{
if (isset($_REQUEST["autocomposite_mode_button"]) && isset($_REQUEST["auto_composite"]))
{
if (isset($_REQUEST["auto_composite"]) && $_REQUEST["auto_composite"] === "Y")
{
Helper::setEnabled(true);
$compositeOptions["AUTO_COMPOSITE"] = "Y";
$compositeOptions["FRAME_MODE"] = "Y";
$compositeOptions["FRAME_TYPE"] = "DYNAMIC_WITH_STUB";
$compositeOptions["AUTO_UPDATE"] = "Y";
$compositeOptions["AUTO_UPDATE_TTL"] = $_REQUEST["composite_standard_ttl"] ?? 120;
}
else if (isset($_REQUEST["auto_composite"]) && $_REQUEST["auto_composite"] === "N")
{
Helper::setEnabled(false);
$compositeOptions["AUTO_COMPOSITE"] = "N";
$compositeOptions["FRAME_MODE"] = "N";
$compositeOptions["AUTO_UPDATE_TTL"] = "0";
}
}
elseif (isset($_REQUEST["composite_mode_button"]) && isset($_REQUEST["composite"]))
{
$compositeOptions["AUTO_COMPOSITE"] = "N";
if (isset($_REQUEST["composite"]) && $_REQUEST["composite"] === "Y")
{
Helper::setEnabled(true);
}
elseif (isset($_REQUEST["composite"]) && $_REQUEST["composite"] == "N")
{
Helper::setEnabled(false);
}
}
if (isset($_REQUEST["composite_show_banner"]) && in_array($_REQUEST["composite_show_banner"], array("Y", "N")))
{
Option::set("main", "~show_composite_banner", $_REQUEST["composite_show_banner"]);
}
Helper::setOptions($compositeOptions);
bx_accelerator_reset();
LocalRedirect("/bitrix/admin/composite.php?lang=".LANGUAGE_ID."&".$tabControl->ActiveTabParam());
}
}
if (
$_SERVER["REQUEST_METHOD"] == "POST"
&& isset($_REQUEST["check_connection"])
&& $_REQUEST["check_connection"] === "Y"
&& check_bitrix_sessid()
&& $isAdmin
)
{
$host = $_REQUEST["host"] ?? "";
$port = $_REQUEST["port"] ?? "";
$status = "";
$text = "";
if (!extension_loaded("memcache"))
{
$text = GetMessage("MAIN_COMPOSITE_CHECK_CONNECTION_ERR1");
$status = "error";
}
elseif ($host <> '' && $port <> '' && ($memcached = new \Memcache()) && @$memcached->connect($host, $port))
{
$text = GetMessage("MAIN_COMPOSITE_CHECK_CONNECTION_OK");
$status = "success";
}
else
{
$text = GetMessage("MAIN_COMPOSITE_CHECK_CONNECTION_ERR2");
$status = "error";
}
header("Content-Type: application/x-javascript; charset=".LANG_CHARSET);
die("{ status : '".$status."', text : '".CUtil::JSEscape($text)."' }");
}
$APPLICATION->SetTitle(GetMessage("MAIN_COMPOSITE_TITLE"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
?>
if (defined("FIRST_EDITION") && FIRST_EDITION=="Y"): ?>
Fatal error: Uncaught Error: Call to undefined function BeginNote() in D:\ktt\ttepla.com\public_html\bitrix\modules\main\admin\composite.php:321
Stack trace:
#0 {main}
thrown in D:\ktt\ttepla.com\public_html\bitrix\modules\main\admin\composite.php on line 321