static function installRolesAgent()
{
$checkCursor = BitrixImOpenlinesModelRoleTable::getList(array('limit' => 1));
if($checkCursor->fetch())
return "";
$defaultRoles = array(
'ADMIN' => array(
'NAME' => GetMessage('IMOL_ROLE_ADMIN'),
'PERMISSIONS' => array(
Permissions::ENTITY_LINES => array(
Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
Permissions::ACTION_MODIFY => Permissions::PERMISSION_ANY,
),
Permissions::ENTITY_CONNECTORS => array(
Permissions::ACTION_MODIFY => Permissions::PERMISSION_ALLOW,
),
Permissions::ENTITY_SESSION => array(
Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
),
Permissions::ENTITY_HISTORY => array(
Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
),
Permissions::ENTITY_JOIN => array(
Permissions::ACTION_PERFORM => Permissions::PERMISSION_ANY,
),
Permissions::ENTITY_VOTE_HEAD => array(
Permissions::ACTION_PERFORM => Permissions::PERMISSION_ANY,
),
Permissions::ENTITY_SETTINGS => array(
Permissions::ACTION_MODIFY => Permissions::PERMISSION_ALLOW,
),
Permissions::ENTITY_QUICK_ANSWERS => array(
Permissions::ACTION_MODIFY => Permissions::PERMISSION_ANY,
),
Permissions::ENTITY_SOFT_PAUSE_LIST => array(
Permissions::ACTION_VIEW => Permissions::PERMISSION_ALLOW,
)
)
),
'CHIEF' => array(
'NAME' => GetMessage('IMOL_ROLE_CHIEF'),
'PERMISSIONS' => array(
Permissions::ENTITY_LINES => array(
Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
Permissions::ACTION_MODIFY => Permissions::PERMISSION_ANY,
),
Permissions::ENTITY_CONNECTORS => array(
Permissions::ACTION_MODIFY => Permissions::PERMISSION_ANY,
),
Permissions::ENTITY_SESSION => array(
Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
),
Permissions::ENTITY_HISTORY => array(
Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
),
Permissions::ENTITY_JOIN => array(
Permissions::ACTION_PERFORM => Permissions::PERMISSION_ANY,
),
Permissions::ENTITY_VOTE_HEAD => array(
Permissions::ACTION_PERFORM => Permissions::PERMISSION_ANY,
),
Permissions::ENTITY_SETTINGS => array(
Permissions::ACTION_MODIFY => Permissions::PERMISSION_NONE,
),
Permissions::ENTITY_QUICK_ANSWERS => array(
Permissions::ACTION_MODIFY => Permissions::PERMISSION_ANY,
),
Permissions::ENTITY_SOFT_PAUSE_LIST => array(
Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
)
)
),
'MANAGER' => array(
'NAME' => GetMessage('IMOL_ROLE_MANAGER'),
'PERMISSIONS' => array(
Permissions::ENTITY_LINES => array(
Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
Permissions::ACTION_MODIFY => Permissions::PERMISSION_NONE,
),
Permissions::ENTITY_CONNECTORS => array(
Permissions::ACTION_MODIFY => Permissions::PERMISSION_ALLOW,
),
Permissions::ENTITY_SESSION => array(
Permissions::ACTION_VIEW => Permissions::PERMISSION_SELF,
),
Permissions::ENTITY_HISTORY => array(
Permissions::ACTION_VIEW => Permissions::PERMISSION_SELF,
),
Permissions::ENTITY_JOIN => array(
Permissions::ACTION_PERFORM => Permissions::PERMISSION_SELF,
),
Permissions::ENTITY_VOTE_HEAD => array(
Permissions::ACTION_PERFORM => Permissions::PERMISSION_NONE,
),
Permissions::ENTITY_SETTINGS => array(
Permissions::ACTION_MODIFY => Permissions::PERMISSION_NONE,
),
Permissions::ENTITY_QUICK_ANSWERS => array(
Permissions::ACTION_MODIFY => Permissions::PERMISSION_NONE,
),
Permissions::ENTITY_SOFT_PAUSE_LIST => array(
Permissions::ACTION_VIEW => Permissions::PERMISSION_NONE,
)
)
)
);
$roleIds = array();
foreach ($defaultRoles as $roleCode => $role)
{
$addResult = BitrixImOpenlinesModelRoleTable::add(array(
'NAME' => $role['NAME'],
'XML_ID' => $roleCode,
));
$roleId = $addResult->getId();
if ($roleId)
{
$roleIds[$roleCode] = $roleId;
BitrixImOpenlinesSecurityRoleManager::setRolePermissions($roleId, $role['PERMISSIONS']);
}
}
if (isset($roleIds['ADMIN']))
{
BitrixImOpenlinesModelRoleAccessTable::add(array(
'ROLE_ID' => $roleIds['ADMIN'],
'ACCESS_CODE' => 'G1'
));
}
if (isset($roleIds['CHIEF']))
{
$dbGroup = CGroup::GetList('', '', Array("STRING_ID" => "DIRECTION"));
if($arGroup = $dbGroup->Fetch())
{
BitrixImOpenlinesModelRoleAccessTable::add(array(
'ROLE_ID' => $roleIds['CHIEF'],
'ACCESS_CODE' => 'G'.$arGroup["ID"]
));
}
}
if (isset($roleIds['MANAGER']) && BitrixMainLoader::includeModule('intranet'))
{
$departmentTree = CIntranetUtils::GetDeparmentsTree();
$rootDepartment = (int)$departmentTree[0][0];
if ($rootDepartment > 0)
{
BitrixImOpenlinesModelRoleAccessTable::add(array(
'ROLE_ID' => $roleIds['MANAGER'],
'ACCESS_CODE' => 'DR'.$rootDepartment
));
}
}
return "";
}