- Модуль: controller
- Путь к файлу: ~/bitrix/modules/controller/classes/general/controllergroup.php
- Класс: CControllerGroupSettings
- Вызов: CControllerGroupSettings::GeneratePHPInstall
static function GeneratePHPInstall($arValues)
{
$str = '';
$arDefValues = $arValues["default"]["options"];
$arInfo = CControllerGroupSettings::GetData();
if (isset($arValues["default"]["modules"]))
{
$vArr = '';
foreach ($arInfo as $module_id => $arProp)
{
if ($module_id == 'main')
continue;
if (in_array($module_id, $arValues["default"]["modules"]))
$vArr .= '"'.$module_id.'"=>"Y", ';
else
$vArr .= '"'.$module_id.'"=>"N", ';
}
$str .= 'CControllerClient::SetModules(Array('.$vArr.'));'."rn";
}
else
$str .= 'CControllerClient::RestoreModules();'."rn";
foreach ($arInfo as $mname => $arProp)
{
if (!is_array($arProp["options"]) || count($arProp["options"]) <= 0)
continue;
$arOptions = $arProp["options"];
foreach ($arOptions as $id => $arOptionParams)
{
if (isset($arDefValues[$mname][$id]))
$str .= 'CControllerClient::SetOptionString("'.EscapePHPString($mname).'", "'.EscapePHPString($id).'", "'.EscapePHPString($arDefValues[$mname][$id]).'");'."rn";
elseif (mb_substr($id, 0, 2) != '__')
$str .= 'CControllerClient::RestoreOption("'.EscapePHPString($mname).'", "'.EscapePHPString($id).'");'."rn";
}
}
$arSecurity = $arValues["default"]["security"];
if ($arSecurity["limit_admin"] == "Y")
$str .= 'CControllerClient::SetOptionString("main", "~controller_limited_admin", "Y");'."rn";
else
$str .= 'CControllerClient::SetOptionString("main", "~controller_limited_admin", "N");'."rn";
$arGroups = Array();
$arUniqTasks = Array();
if (is_array($arSecurity["groups"]))
{
foreach ($arSecurity["groups"] as $group_id => $arPermissions)
{
$arDefinedPermissions = Array();
$arUnDefinedPermissions = Array();
$bSubOrdGroups = false;
foreach ($arInfo as $module_id => $arProp)
{
if (isset($arPermissions[$module_id]))
{
$arDefinedPermissions[$module_id] = $arPermissions[$module_id];
$task_id = $arPermissions[$module_id];
if (mb_strlen($task_id) > 1 && (!is_array($arUniqTasks[$module_id]) || !in_array($task_id, $arUniqTasks[$module_id])))
{
$arUniqTasks[$module_id][] = $task_id;
$dbr_task = CTask::GetList(Array(), Array('NAME' => $task_id, 'MODULE_ID' => $module_id, "BINDING" => 'module'));
if ($ar_task = $dbr_task->Fetch())
{
if ($module_id == 'main' || $ar_task['SYS'] != 'Y')
{
$arOperations = CTask::GetOperations($ar_task["ID"], true);
if ($ar_task['SYS'] != 'Y')
{
$str .= 'CControllerClient::SetTaskSecurity('.CControllerGroupSettings::__PHPToString($task_id).', '.CControllerGroupSettings::__PHPToString($module_id).', '.CControllerGroupSettings::__PHPToString($arOperations).', '.CControllerGroupSettings::__PHPToString($ar_task["LETTER"]).');'."rn";
}
if ($module_id == 'main' && in_array('edit_subordinate_users', $arOperations))
{
$bSubOrdGroups = true;
}
}
}
}
}
else
$arUnDefinedPermissions[] = $module_id;
}
$str .= 'CControllerClient::RestoreGroupSecurity('.CControllerGroupSettings::__PHPToString($group_id).', '.CControllerGroupSettings::__PHPToString($arUnDefinedPermissions).');'."rn";
if ($bSubOrdGroups)
{
$arSGroupsTmp = preg_split("/[rn,;]+/", $arSecurity["subord_groups"][$group_id]);
$arSGroups = array();
foreach ($arSGroupsTmp as $sGroupTmp)
{
$sGroupTmp = trim($sGroupTmp);
if ($sGroupTmp != '')
$arSGroups[] = $sGroupTmp;
}
$str .= 'CControllerClient::SetGroupSecurity('.CControllerGroupSettings::__PHPToString($group_id).', '.CControllerGroupSettings::__PHPToString($arDefinedPermissions).', '.CControllerGroupSettings::__PHPToString($arSGroups).');'."rn";
}
else
$str .= 'CControllerClient::SetGroupSecurity('.CControllerGroupSettings::__PHPToString($group_id).', '.CControllerGroupSettings::__PHPToString($arDefinedPermissions).');'."rn";
$arGroups[] = $group_id;
}
}
$str .= 'CControllerClient::RestoreSecurity('.CControllerGroupSettings::__PHPToString($arGroups).');'."rn";
$arThirdSettings = CControllerGroupSettings::Get3rdPartyOptions();
/** @var IControllerGroupOption $obOption */
foreach ($arThirdSettings as $obOption)
{
$str .= $obOption->GetOptionPHPCode($arValues);
}
return $str;
}