- Модуль: 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;
}