- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/role.php
- Класс: BitrixLandingRole
- Вызов: Role::installDemo
static function installDemo($type = null)
{
Manager::enableFeatureTmp(
Manager::FEATURE_PERMISSIONS_AVAILABLE
);
$defGroup = 'G1';
// for B24 gets employees group
if (Manager::isB24())
{
$res = BitrixMainGroupTable::getList([
'select' => [
'ID'
],
'filter' => [
'=STRING_ID' => 'EMPLOYEES_' . SITE_ID
]
]);
if ($row = $res->fetch())
{
$defGroup = 'G' . $row['ID'];
}
unset($row, $res);
}
$addRights = [];
foreach (Rights::ADDITIONAL_RIGHTS as $accessCode)
{
if (mb_strpos($accessCode, '_') > 0)
{
[$prefix, ] = explode('_', $accessCode);
$prefix = mb_strtoupper($prefix);
if ($prefix == $type)
{
$addRights[] = $accessCode;
}
}
else if ($type === null)
{
$addRights[] = $accessCode;
}
}
$addRightsManager = $addRights;
foreach (self::$forbiddenManagerRights as $rightCode)
{
$key = array_search($rightCode, $addRightsManager, true);
if ($key)
{
array_splice($addRightsManager, $key, 1);
}
}
$addRightsAdmin = $addRights;
foreach (self::$forbiddenAdminRights as $rightCode)
{
$key = array_search($rightCode, $addRightsAdmin, true);
if ($key)
{
array_splice($addRightsAdmin, $key, 1);
}
}
$demoData = [
'admin' => [
'rights' => [
'read',
'edit',
'sett',
'public',
'delete'
],
'additional_rights' => $addRightsAdmin,
'access' => [
$defGroup
]
],
'manager' => [
'rights' => [
'read',
'edit',
'public'
],
'additional_rights' => $addRightsManager,
'access' => []
]
];
$type = (string)$type;
foreach ($demoData as $code => $rights)
{
$code = mb_strtoupper($code);
$check = false;
/*$check = self::getList([
'filter' => [
'=XML_ID' => $code
]
])->fetch();*/
if (!$check)
{
$res = self::add([
'TYPE' => $type,
'XML_ID' => $code,
'ADDITIONAL_RIGHTS' => $rights['additional_rights']
]);
if ($res->isSuccess())
{
self::setRights(
$res->getId(),
[0 => $rights['rights']]
);
if ($rights['access'])
{
self::setAccessCodes(
$res->getId(),
$rights['access']
);
}
}
unset($res);
}
unset($check);
}
unset($demoData, $defGroup, $code, $rights);
Manager::disableFeatureTmp(
Manager::FEATURE_PERMISSIONS_AVAILABLE
);
}