• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/helper/ui/grid/workgroup/role.php
  • Класс: BitrixSocialnetworkHelperUIGridWorkgroupRole
  • Вызов: Role::getRoleValue
static function getRoleValue(array $params = []): string
{
	$result = '';

	$relationFields = ($params['RELATION'] ?? []);
	if (empty($relationFields))
	{
		return $result;
	}

	$groupFields = ($params['GROUP'] ?? []);
	if ($groupFields['SCRUM_MASTER_ID'] > 0)
	{
		$suffix = '_SCRUM';
	}
	elseif ($groupFields['PROJECT'])
	{
		$suffix = '_PROJECT';
	}
	else
	{
		$suffix = '';
	}

	$role = $relationFields['ROLE'];

	$classList = [ 'ui-label' ];

	if (in_array($role, UserToGroupTable::getRolesMember(), true))
	{
		$classList[] = 'sonet-ui-grid-role';

		$isScrumMaster = (int)$relationFields['USER_ID'] === (int)$groupFields['SCRUM_MASTER_ID'];

		$parts = [];

		if (!(
			$isScrumMaster
			&& $role === UserToGroupTable::ROLE_MODERATOR
			&& $relationFields['AUTO_MEMBER'] === false
		))
		{
			$parts = [
				Loc::getMessage(
					'SOCIALNETWORK_HELPER_UI_GRID_ROLE_' . $role
					. $suffix
					. ($relationFields['AUTO_MEMBER'] ? '_AUTO' : '')
				),
			];
		}

		if ($isScrumMaster)
		{
			$parts[] = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ROLE_SCRUM_MASTER');
		}

		$result = implode(', ', $parts);

		switch ($role)
		{
			case UserToGroupTable::ROLE_OWNER:
				$classList[] = '--role-green';
				break;
			case UserToGroupTable::ROLE_MODERATOR:
				$classList[] = '--role-yellow';
				break;
			case UserToGroupTable::ROLE_USER:
				$classList[] = '--role-blue';
				break;
			default:
		}
	}
	elseif ($role === UserToGroupTable::ROLE_REQUEST)
	{
		$groupId = (int) $groupFields['ID'];
		$gridId = ($params['GRID_ID'] ?? 'SONET_GROUP_LIST');
		$type = $relationFields['INITIATED_TYPE'];
		$onclick = 'event.stopPropagation();';

		if ($type === UserToGroupTable::INITIATED_BY_GROUP)
		{
			$acceptOnclick = $onclick . 'BX.Socialnetwork.WorkgroupList.Manager.getById(''
				. $gridId . '').getActionManager().act({action: ''
				. WorkgroupList::AJAX_ACTION_JOIN
				. '',groupId: '' . $groupId . '',});';

			$cancelOnclick = $onclick . 'BX.Socialnetwork.WorkgroupList.Manager.getById(''
				. $gridId . '').getActionManager().act({action: ''
				. WorkgroupList::AJAX_ACTION_REJECT_OUTGOING_REQUEST
				. '',groupId: '' . $groupId . '',});';

			return '
				
					
						
							' . Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ROLE_REQUEST_' . $type) . '
						
					
					
						
					
					
						
					
				
			';
		}
		elseif ($type === UserToGroupTable::INITIATED_BY_USER)
		{
			$onclick .= 'BX.Socialnetwork.WorkgroupList.Manager.getById(''
				. $gridId . '').getActionManager().act({action: ''
				. WorkgroupList::AJAX_ACTION_DELETE_INCOMING_REQUEST
				. '',groupId: '' . $groupId . '',});';

			return '
				
					
						
							' . Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ROLE_REQUEST_' . $type) . '
						
					
					
						
					
				
			';
		}
	}
	elseif ($role === UserToGroupTable::ROLE_BAN)
	{
		$result = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ROLE_BAN');
	}

	$result = '
		
			' . $result . '
		
	';

	return '' . $result . '';
}