- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/helper/workgroup.php
- Класс: BitrixSocialnetworkHelperWorkgroup
- Вызов: Workgroup::setScrumMaster
static function setScrumMaster(array $fields = []): bool
{
$groupId = (int)($fields['groupId'] ?? 0);
$newScrumMasterId = (int)($fields['userId'] ?? 0);
$currentUserId = User::getCurrentUserId();
if ($groupId <= 0)
{
throw new ArgumentException(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_WRONG_GROUP_ID'));
}
if ($newScrumMasterId <= 0)
{
throw new ArgumentException(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_WRONG_USER_ID'));
}
if (!HelperWorkgroupAccess::canSetScrumMaster([
'userId' => $newScrumMasterId,
'groupId' => $groupId,
]))
{
throw new AccessDeniedException(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_OPERATION_NO_PERMS'));
}
if (!CSocNetGroup::Update($groupId, [
'SCRUM_MASTER_ID' => $newScrumMasterId,
]))
{
throw new Exception(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_OPERATION_FAILED'), 100);
}
$relation = UserToGroupTable::getList([
'filter' => [
'USER_ID' => $newScrumMasterId,
'GROUP_ID' => $groupId,
],
'select' => [ 'ID', 'ROLE' ]
])->fetchObject();
if ($relation)
{
if (
!in_array($relation->getRole(), [UserToGroupTable::ROLE_OWNER, UserToGroupTable::ROLE_MODERATOR], true)
&& !CSocNetUserToGroup::Update($relation->getId(), [
'ROLE' => UserToGroupTable::ROLE_MODERATOR,
])
)
{
throw new Exception(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_OPERATION_FAILED'), 100);
}
}
else
{
static $helper = null;
if (!$helper)
{
$connection = Application::getConnection();
$helper = $connection->getSqlHelper();
}
if (!CSocNetUserToGroup::Add([
'AUTO_MEMBER' => 'N',
'USER_ID' => $newScrumMasterId,
'GROUP_ID' => $groupId,
'ROLE' => UserToGroupTable::ROLE_MODERATOR,
'INITIATED_BY_TYPE' => UserToGroupTable::INITIATED_BY_GROUP,
'INITIATED_BY_USER_ID' => $currentUserId,
'=DATE_CREATE' => $helper->getCurrentDateTimeFunction(),
'=DATE_UPDATE' => $helper->getCurrentDateTimeFunction(),
]))
{
throw new RuntimeException(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_OPERATION_FAILED'), 100);
}
}
return true;
}