• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/component/userlist.php
  • Класс: BitrixIntranetComponentUserList
  • Вызов: UserList::getActions
static function getActions(array $params = [])
{
	global $USER;

	static $constantAllowed = null;

	$userFields = (isset($params['USER_FIELDS']) ? $params['USER_FIELDS'] : []);
	$currentUserId = $USER->getId();
	$isCloud = ModuleManager::isModuleInstalled('bitrix24');

	if ($constantAllowed === null)
	{
		$constantAllowed = [];
		$constantAllowed['MESSAGE'] = (
			ModuleManager::isModuleInstalled('im')
			&& CBXFeatures::isFeatureEnabled("WebMessenger")
		);
		$constantAllowed['TASK'] = (
			SITE_TEMPLATE_ID == 'bitrix24'
			&& CBXFeatures::isFeatureEnabled("Tasks")
		);
		$constantAllowed['INVITE'] = (
			(
				!ModuleManager::isModuleInstalled('bitrix24')
				&& $USER->canDoOperation('edit_all_users')
			)
			|| (
				ModuleManager::isModuleInstalled('bitrix24')
				&& $USER->canDoOperation('bitrix24_invite')
			)
		);
		$constantAllowed['EDIT_ALL'] = $USER->canDoOperation('edit_all_users');
		$constantAllowed['EDIT_SUBORDINATE'] = $USER->canDoOperation('edit_subordinate_users');

		if (Loader::includeModule('bitrix24') && BitrixBitrix24Integrator::isIntegrator($USER->GetID()))
		{
			$constantAllowed['EDIT_ALL'] = false;
			$constantAllowed['EDIT_SUBORDINATE'] = false;
		}
	}

	$result = [
		'view_profile'
	];

	if (
		$constantAllowed['TASK']
		&& empty($userFields['CONFIRM_CODE'])
		&& $userFields['ACTIVE']
	)
	{
		$result[] = 'add_task';
	}

	if (
		$constantAllowed['MESSAGE']
		&& $currentUserId != $userFields["ID"]
		&& $userFields["ACTIVE"] == "Y"
		&& empty($userFields['CONFIRM_CODE'])
	)
	{
		$result[] = 'message';
	}

	if (
		$constantAllowed['MESSAGE']
		&& $currentUserId != $userFields["ID"]
		&& empty($userFields['CONFIRM_CODE'])
	)
	{
		$result[] = 'message_history';
	}

	if (
		$constantAllowed['INVITE']
		&& !empty($userFields['CONFIRM_CODE'])
	)
	{
		$result[] = 'reinvite';
	}

	if (
		(int)$currentUserId !== $userFields["ID"]
		&& !in_array($userFields['USER_TYPE'], ['bot', 'imconnector'])
		&& CurrentUser::get()->isAdmin()
	)
	{
		if ($userFields["ACTIVE"] != 'Y')
		{
			$result[] = 'restore';
		}
		elseif (!empty($userFields["CONFIRM_CODE"]))
		{
			$result[] = 'delete';
		}
		else
		{
			$result[] = 'deactivate';
		}
	}

	if (
		$constantAllowed['MESSAGE']
		&& $currentUserId != $userFields["ID"]
		&& $userFields["ACTIVE"] == "Y"
		&& empty($userFields['CONFIRM_CODE'])
	)
	{
		$result[] = 'videocall';
	}

	$lockedShowLoginHistory = $isCloud && !Feature::isFeatureEnabled('user_login_history');

	if (CurrentUser::get()->isAdmin() && !$lockedShowLoginHistory)
	{
		$result[] = 'loginhistory';
	}

	return $result;
}