CanDoOperation('view_other_settings') && !$USER->CanDoOperation('edit_other_settings'))
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
if (
!isset($_REQUEST["back_url_settings"])
|| !str_starts_with($_REQUEST["back_url_settings"], '/')
|| str_starts_with($_REQUEST["back_url_settings"], '//')
)
{
$_REQUEST["back_url_settings"] = '';
}
IncludeModuleLangFile(__FILE__);
$arModules = array(
"main"=>array(
"PAGE"=>$_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/options.php",
"NAME"=>GetMessage("MAIN_KERNEL"),
"SORT"=>-1,
)
);
$adminPage->Init();
foreach($adminPage->aModules as $module)
{
if($APPLICATION->GetGroupRight($module) < "R")
continue;
if($module == "main")
continue;
$ifile = getLocalPath("modules/".$module."/install/index.php");
$ofile = getLocalPath("modules/".$module."/options.php");
if($ifile !== false && $ofile !== false)
{
$info = CModule::CreateModuleObject($module);
$arModules[$module]["PAGE"] = $_SERVER["DOCUMENT_ROOT"].$ofile;
$arModules[$module]["NAME"] = $info->MODULE_NAME;
$arModules[$module]["SORT"] = $info->MODULE_SORT;
}
}
\Bitrix\Main\Type\Collection::sortByColumn(
$arModules,
['SORT' => SORT_ASC, 'NAME' => SORT_STRING],
'',
null,
true
);
$mid = $_REQUEST["mid"] ?? '';
if($mid == "" || !isset($arModules[$mid]) || !file_exists($arModules[$mid]["PAGE"]))
$mid = "main";
ob_start();
include($arModules[$mid]["PAGE"]);
$strModuleSettingsTabs = ob_get_contents();
ob_end_clean();
$APPLICATION->SetTitle(GetMessage("MAIN_TITLE"));
require_once ($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php");
?>
function __AdmSettingsSaveOptions($module_id, $arOptions)
{
foreach($arOptions as $arOption)
{
__AdmSettingsSaveOption($module_id, $arOption);
}
}
function __AdmSettingsSaveOption($module_id, $arOption)
{
if(!is_array($arOption) || isset($arOption["note"]))
return false;
if($arOption[3][0] == "statictext" || $arOption[3][0] == "statichtml")
return false;
$arControllerOption = CControllerClient::GetInstalledOptions($module_id);
if(isset($arControllerOption[$arOption[0]]))
return false;
$name = $arOption[0];
$isChoiceSites = isset($arOption[6]) && $arOption[6] == "Y";
if ($isChoiceSites)
{
if (isset($_REQUEST[$name."_all"]) && $_REQUEST[$name."_all"] <> '')
COption::SetOptionString($module_id, $name, $_REQUEST[$name."_all"], $arOption[1]);
else
COption::RemoveOption($module_id, $name);
$queryObject = \Bitrix\Main\SiteTable::getList(array(
'select' => array('LID', 'NAME'),
'filter' => array(),
'order' => array('SORT' => 'ASC'),
));
while ($site = $queryObject->fetch())
{
if (isset($_REQUEST[$name."_".$site["LID"]]) && $_REQUEST[$name."_".$site["LID"]] <> '' &&
!isset($_REQUEST[$name."_all"]))
{
$val = $_REQUEST[$name."_".$site["LID"]] ?? null;
if ($arOption[3][0] == "checkbox" && $val != "Y")
{
$val = "N";
}
elseif ($arOption[3][0] == "multiselectbox" && is_array($val))
{
$val = implode(",", $val);
}
elseif ($val === null)
{
$val = '';
}
elseif (!is_scalar($val))
{
continue;
}
COption::SetOptionString($module_id, $name, $val, $arOption[1], $site["LID"]);
}
else
{
COption::RemoveOption($module_id, $name, $site["LID"]);
}
}
}
else
{
if(!isset($_REQUEST[$name]))
{
if($arOption[3][0] <> 'checkbox' && $arOption[3][0] <> "multiselectbox")
{
return false;
}
}
$val = $_REQUEST[$name] ?? null;
if ($arOption[3][0] == "checkbox" && $val != "Y")
{
$val = "N";
}
elseif ($arOption[3][0] == "multiselectbox" && is_array($val))
{
$val = implode(",", $val);
}
elseif ($arOption[3][0] == "password")
{
if (isset($_REQUEST[$name . '_delete']) && $_REQUEST[$name . '_delete'] == "Y")
{
$val = '';
}
elseif ($val == '')
{
return false;
}
}
elseif ($val === null)
{
$val = '';
}
elseif (!is_scalar($val))
{
return false;
}
COption::SetOptionString($module_id, $name, $val, $arOption[1]);
}
return null;
}
function __AdmSettingsDrawRow($module_id, $Option)
{
$arControllerOption = CControllerClient::GetInstalledOptions($module_id);
if($Option === null)
{
return;
}
if(!is_array($Option)):
?>
| =$Option?> |
elseif(isset($Option["note"])):
?>
|
=$Option["note"]?>
|
else:
$isChoiceSites = isset($Option[6]) && $Option[6] == "Y";
$listSite = array();
$listSiteValue = array();
if ($Option[0] != "")
{
if ($isChoiceSites)
{
$queryObject = \Bitrix\Main\SiteTable::getList(array(
"select" => array("LID", "NAME"),
"filter" => array(),
"order" => array("SORT" => "ASC"),
));
$listSite[""] = GetMessage("MAIN_ADMIN_SITE_DEFAULT_VALUE_SELECT");
$listSite["all"] = GetMessage("MAIN_ADMIN_SITE_ALL_SELECT");
while ($site = $queryObject->fetch())
{
$listSite[$site["LID"]] = $site["NAME"];
$val = COption::GetOptionString($module_id, $Option[0], $Option[2], $site["LID"], true);
if ($val)
$listSiteValue[$Option[0]."_".$site["LID"]] = $val;
}
$val = "";
if (empty($listSiteValue))
{
$value = COption::GetOptionString($module_id, $Option[0], $Option[2]);
if ($value)
$listSiteValue = array($Option[0]."_all" => $value);
else
$listSiteValue[$Option[0]] = "";
}
}
else
{
$val = COption::GetOptionString($module_id, $Option[0], $Option[2]);
}
}
else
{
$val = $Option[2];
}
if ($isChoiceSites):?>
|
|
$fieldValue):?>
$siteValue = str_replace($Option[0]."_", "", $fieldName);
renderLable($Option, $listSite, $siteValue);
renderInput($Option, $arControllerOption, $fieldName, $fieldValue);
?>
renderLable($Option, $listSite);
renderInput($Option, $arControllerOption, $Option[0], $val);
?>
if ($isChoiceSites): ?>
|
=GetMessage("MAIN_ADMIN_ADD_SITE_SELECTOR_1")?>
|
|
endif; ?>
endif;
}
function __AdmSettingsDrawList($module_id, $arParams)
{
foreach($arParams as $Option)
{
__AdmSettingsDrawRow($module_id, $Option);
}
}
function renderLable($Option, array $listSite, $siteValue = "")
{
$type = $Option[3];
$sup_text = $Option[5] ?? '';
$isChoiceSites = isset($Option[6]) && $Option[6] == "Y";
?>
|
width="50%">
if ($type[0]=="checkbox")
echo "";
else
echo $Option[1];
if ($sup_text <> '')
{
?>=$sup_text?>
}
?> |
if($type[0]=="checkbox"):
?> id="" name="=htmlspecialcharsbx($fieldName)?>" value="Y"=$disabled?>'') echo " ".$type[2]?>>
elseif($type[0]=="text"):
?> size="" maxlength="255" value="" name="=htmlspecialcharsbx($fieldName)?>"=$disabled?>=(isset($type["noautocomplete"]) && $type["noautocomplete"]? ' autocomplete="off"':'')?>>
elseif($type[0]=="password"):
?>
size=""
maxlength="255"
value=""
name="=htmlspecialcharsbx($fieldName)?>"
=$disabled?>
placeholder="= GetMessage('MAIN_ADMIN_SET_PASS_SET') ?>"
autocomplete="new-password"
>
elseif($type[0]=="selectbox"):
$arr = $type[1];
if(!is_array($arr))
$arr = array();
?>
elseif($type[0]=="multiselectbox"):
$arr = $type[1];
if(!is_array($arr))
$arr = array();
$arr_val = explode(",",$val);
?>
elseif($type[0]=="textarea"):
?>
elseif($type[0]=="statictext"):
echo htmlspecialcharsbx($val);
elseif($type[0]=="statichtml"):
echo $val;
endif;?>
|
}
echo $strModuleSettingsTabs;
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_admin.php");