• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/component/workgrouplist.php
  • Класс: BitrixSocialnetworkComponentWorkgroupList
  • Вызов: WorkgroupList::getActions
static function getActions(
	WorkgroupListRuntimeFieldsManager $runtimeFieldsManager,
	array $params = []
): array
{
	$result = [
		self::AVAILABLE_ACTION_VIEW,
	];

	$groupFields = $params['GROUP'];
	$runtimeFields = $runtimeFieldsManager->get();
	$queryInitAlias = $params['QUERY_INIT_ALIAS'];

	$entityManager = new EntityManager([
		'queryInitAlias' => $params['QUERY_INIT_ALIAS'],
	]);

	if (in_array('CURRENT_RELATION', $runtimeFields, true))
	{
		$group = $entityManager->wakeUpWorkgroupEntityObject($groupFields);
		$currentUserRelation = $entityManager->wakeUpCurrentRelationEntityObject($groupFields, $queryInitAlias);
		$favorites = $entityManager->wakeUpFavoritesEntityObject($groupFields);

		$accessManager = new BitrixSocialnetworkItemWorkgroupAccessManager(
			$group,
			$currentUserRelation,
			$currentUserRelation,
			[
				'currentUserFavorites' => $favorites,
			]
		);

		if ($accessManager->canEdit())
		{
			$result[] = self::AVAILABLE_ACTION_EDIT;
		}

		if ($accessManager->canSetOwner())
		{
			$result[] = self::AVAILABLE_ACTION_SET_CURRENT_USER_OWNER;
		}

		if ($accessManager->canSetScrumMaster())
		{
			$result[] = self::AVAILABLE_ACTION_SET_CURRENT_USER_SCRUM_MASTER;
		}

		if ($accessManager->canJoin())
		{
			$result[] = self::AVAILABLE_ACTION_JOIN;
		}

		if ($accessManager->canLeave())
		{
			$result[] = self::AVAILABLE_ACTION_LEAVE;
		}

		if ($accessManager->canDeleteIncomingRequest())
		{
			$result[] = self::AVAILABLE_ACTION_DELETE_INCOMING_REQUEST;
		}

		if ($accessManager->canAddToFavorites())
		{
			$result[] = self::AVAILABLE_ACTION_ADD_TO_FAVORITES;
		}

		if ($accessManager->canRemoveFromFavorites())
		{
			$result[] = self::AVAILABLE_ACTION_REMOVE_FROM_FAVORITES;
		}

		if ($accessManager->canAddToArchive())
		{
			$result[] = self::AVAILABLE_ACTION_ADD_TO_ARCHIVE;
		}

		if ($accessManager->canRemoveFromArchive())
		{
			$result[] = self::AVAILABLE_ACTION_REMOVE_FROM_ARCHIVE;
		}

		if ($accessManager->canDelete())
		{
			$result[] = self::AVAILABLE_ACTION_DELETE;
		}
	}

	return $result;
}