• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/log_destination.php
  • Класс: CSocNetLogDestination
  • Вызов: CSocNetLogDestination::GetSocnetGroupFilteredByFeaturePerms
static function GetSocnetGroupFilteredByFeaturePerms(&$arGroups, $arFeaturePerms)
{
	$arGroupsIDs = array();
	foreach($arGroups as $value)
	{
		$arGroupsIDs[] = $value["id"];
	}

	if (count($arGroupsIDs) <= 0)
	{
		return;
	}

	$feature = $arFeaturePerms[0];
	$operations = $arFeaturePerms[1];
	if (!is_array($operations))
	{
		$operations = explode(",", $operations);
	}
	$arGroupsPerms = array();
	foreach($operations as $operation)
	{
		$tmpOps = CSocNetFeaturesPerms::CurrentUserCanPerformOperation(SONET_ENTITY_GROUP, $arGroupsIDs, $feature, $operation);
		if (is_array($tmpOps))
		{
			foreach ($tmpOps as $key=>$val)
			{
				if (!($arGroupsPerms[$key] ?? null))
				{
					$arGroupsPerms[$key] = $val;
				}
			}
		}
	}
	$arGroupsActive = CSocNetFeatures::IsActiveFeature(SONET_ENTITY_GROUP, $arGroupsIDs, $arFeaturePerms[0]);
	foreach ($arGroups as $key=>$group)
	{
		if (
			!$arGroupsActive[$group["id"]]
			|| !$arGroupsPerms[$group["id"]]
		)
		{
			unset($arGroups[$key]);
		}
	}
}