• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/component/workgroupform.php
  • Класс: BitrixSocialnetworkComponentWorkgroupForm
  • Вызов: WorkgroupForm::processWorkgroupFeatures
static function processWorkgroupFeatures($groupId, &$featuresList): void
{
	$result = [];

	if ((int)$groupId > 0)
	{
		$res = CSocNetFeatures::getList(
			[],
			[
				'ENTITY_ID' => $groupId,
				'ENTITY_TYPE' => SONET_ENTITY_GROUP,
			]
		);
		while ($featureFields = $res->GetNext())
		{
			$result[$featureFields['FEATURE']] = $featureFields;
		}
	}

	$allowedFeaturesList = CSocNetAllowed::getAllowedFeatures();

	$sampleKeysList = [
		'tasks' => 1,
		'calendar' => 2,
		'files' => 3,
		'chat' => 4,
		'forum' => 5,
		'microblog' => 6,
		'blog' => 7,
		'photo' => 8,
		'group_lists' => 9,
		'wiki' => 10,
		'content_search' => 11,
		'marketplace' => 12,
	];

	uksort($allowedFeaturesList, static function($a, $b) use ($sampleKeysList) {

		$valA = ($sampleKeysList[$a] ?? 100);
		$valB = ($sampleKeysList[$b] ?? 100);

		if ($valA > $valB)
		{
			return 1;
		}

		if ($valA < $valB)
		{
			return -1;
		}

		return 0;
	});

	foreach ($allowedFeaturesList as $feature => $featureData)
	{
		if (
			!is_array($featureData['allowed'])
			|| !in_array(SONET_ENTITY_GROUP, $featureData['allowed'], true)
		)
		{
			continue;
		}

		if ((int)$groupId === 0)
		{
			$result[$feature]['ACTIVE'] = (
				$feature === 'chat'
					? CUserOptions::getOption('socialnetwork', 'default_chat_create_default', 'Y')
					: Option::get('socialnetwork', 'default_' . $feature . '_create_default', 'Y', SITE_ID)
			);
		}

		$featuresList[$feature] = [
			'FeatureName' => (
				isset($result[$feature])
					? ($result[$feature]['FEATURE_NAME'] ?? '')
					: false
			),
			'Active' => (!isset($result[$feature]) || $result[$feature]['ACTIVE'] === 'Y')
		];
	}
}