/**
* Bitrix Framework
* @package bitrix
* @subpackage main
* @copyright 2001-2013 Bitrix
*/
/**
* Bitrix vars
* @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");
define("HELP_FILE", "settings/sites/template_import.php");
if(!$USER->CanDoOperation('edit_php') && !$USER->CanDoOperation('view_other_settings'))
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
$isAdmin = $USER->CanDoOperation('edit_php');
IncludeModuleLangFile(__FILE__);
$strError="";
$strOK="";
$bVarsFromForm = false;
if($_SERVER["REQUEST_METHOD"]=="POST" && isset($_POST["action"]) && $_POST["action"]=="import" && $isAdmin && check_bitrix_sessid())
{
$ID = $_POST["ID"] ?? '';
if(!is_uploaded_file($_FILES["tpath_file"]["tmp_name"] ?? null))
{
$strError .= GetMessage("MAIN_TEMPLATE_LOAD_ERR_LOAD");
}
else
{
if($ID == '')
{
$ID = basename($_FILES['tpath_file']['name'] ?? '');
if($p = bxstrrpos($ID, ".gz"))
$ID = mb_substr($ID, 0, $p);
if($p = bxstrrpos($ID, ".tar"))
$ID = mb_substr($ID, 0, $p);
$ID = str_replace("\\", "", $ID);
$ID = str_replace("/", "", $ID);
}
if($ID == '')
{
$strError .= GetMessage("MAIN_TEMPLATE_LOAD_ERR_ID");
}
else
{
if(file_exists($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/templates/".$ID))
{
$strError .= str_replace("#TEMPLATE_NAME#", $ID, GetMessage("MAIN_TEMPLATE_LOAD_ERR_EX"));
}
else
{
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/tar_gz.php");
$oArchiver = new CArchiver($_FILES["tpath_file"]["tmp_name"]);
if($oArchiver->extractFiles($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/templates/".$ID))
{
$strOK .= str_replace("#TEMPLATE_NAME#", $ID, GetMessage("MAIN_TEMPLATE_LOAD_OK"));
$SITE_ID = $_POST["SITE_ID"] ?? '';
if($SITE_ID <> '' && $SITE_ID!="NOT_REF")
{
$db_site = CSite::GetByID($SITE_ID);
if($ar_site = $db_site->Fetch())
{
$arTemplates = array();
$dbSiteRes = CSite::GetTemplateList($SITE_ID);
$bW = false;
while($v = $dbSiteRes->Fetch())
{
if(!$bW && trim($v["CONDITION"]) == '')
{
$v["TEMPLATE"] = $ID;
$bW = true;
}
$arTemplates[]= $v;
}
if(!$bW)
$arTemplates[]= array('CONDITION' => '', 'SORT' => 150, 'TEMPLATE' => $ID);
$arFields = array(
"TEMPLATE" => $arTemplates,
"NAME" => $ar_site["NAME"],
);
$ob_site = new CSite();
$ob_site->Update($SITE_ID, $arFields);
}
}
}
else
{
$strError .= GetMessage("MAIN_T_EDIT_IMP_ERR");
$arErrors = &$oArchiver->GetErrors();
if(!empty($arErrors))
{
$strError .= ":
";
foreach ($arErrors as $value)
$strError .= "[".$value[0]."] ".$value[1]."
";
}
else
$strError .= ".
";
}
}
}
}
if($strError <> '')
$bVarsFromForm = true;
elseif (isset($_POST["goto_edit"]) && $_POST["goto_edit"] == "Y")
LocalRedirect(BX_ROOT."/admin/template_edit.php?lang=".LANGUAGE_ID."&ID=".$ID);
else
LocalRedirect(BX_ROOT."/admin/template_admin.php?lang=".LANGUAGE_ID);
}
if($bVarsFromForm)
{
$str_ID = htmlspecialcharsbx($_POST["ID"] ?? '');
$str_SITE_ID = htmlspecialcharsbx($_POST["SITE_ID"] ?? '');
}
else
{
$str_ID = $str_SITE_ID = "";
}
$aTabs = array(
array("DIV" => "edit1", "TAB" => GetMessage("MAIN_TEMPLATE_LOAD_TITLE"), "ICON" => "template_load", "TITLE" => GetMessage("MAIN_TEMPLATE_LOAD_TITLE")),
);
$tabControl = new CAdminTabControl("tabControl", $aTabs);
$APPLICATION->SetTitle(GetMessage("MAIN_TEMPLATE_LOAD_TITLE"));
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php");
CAdminMessage::ShowMessage($strError);
CAdminMessage::ShowNote($strOK);
?>