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