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

	$currentUserId = (int)$USER->getId();
	$currentAdmin = CSocNetUser::isCurrentUserModuleAdmin();
	$groupFields = CSocNetGroup::getById($groupId);

	$canUpdate = BitrixSocialnetworkHelperWorkgroupAccess::canUpdate([
		'groupId' => $groupId,
	]);

	if (
		$groupFields
		&& (
			(
				$tab === 'edit'
				&& $canUpdate
			)
			|| (
				$tab === 'invite'
				&& (
					$currentAdmin
					|| CSocNetGroup::canUserInitiate($currentUserId, $groupId)
				)
			)
		)
	)
	{
		$groupData['NAME'] = $groupFields['NAME'];
		$groupData['DESCRIPTION'] = $groupFields["DESCRIPTION"];
		$groupData['IMAGE_ID_DEL'] = 'N';
		$groupData['SUBJECT_ID'] = $groupFields['SUBJECT_ID'];
		$groupData['VISIBLE'] = $groupFields['VISIBLE'];
		$groupData['OPENED'] = $groupFields['OPENED'];
		$groupData['CLOSED'] = $groupFields['CLOSED'];
		$groupData['PROJECT'] = ($groupFields['PROJECT'] === 'Y' ? 'Y' : 'N');
		$groupData['PROJECT_DATE_START'] = ($groupData['PROJECT'] === 'Y' ? $groupFields['PROJECT_DATE_START'] : false);
		$groupData['PROJECT_DATE_FINISH'] = ($groupData['PROJECT'] === 'Y' ? $groupFields['PROJECT_DATE_FINISH'] : false);
		$groupData['KEYWORDS'] = $groupFields['KEYWORDS'];
		$groupData['OWNER_ID'] = $groupFields['OWNER_ID'];
		$groupData['INITIATE_PERMS'] = $groupFields['INITIATE_PERMS'];
		$groupData['SPAM_PERMS'] = $groupFields['SPAM_PERMS'];
		$groupData['IMAGE_ID'] = $groupFields['IMAGE_ID'];
		$groupData['IMAGE_ID_FILE'] = CFile::getFileArray($groupFields['IMAGE_ID']);
		$groupData['IMAGE_ID_IMG'] = '';
		$groupData['MODERATOR_IDS'] = [];
		$groupData['LANDING'] = ($groupFields['LANDING'] === 'Y' ? 'Y' : 'N');
		$groupData['SCRUM_OWNER_ID'] = ($groupFields['SCRUM_OWNER_ID'] ?: null);
		$groupData['SCRUM_MASTER_ID'] = ($groupFields['SCRUM_MASTER_ID'] ?: null);
		$groupData['SCRUM_SPRINT_DURATION'] = ($groupFields['SCRUM_SPRINT_DURATION'] ?: null);
		$groupData['SCRUM_TASK_RESPONSIBLE'] = ($groupFields['SCRUM_TASK_RESPONSIBLE'] ?: null);
		$groupData['AVATAR_TYPE'] = (string)($groupFields['AVATAR_TYPE'] ?? '');

		foreach (array_keys($groupPropertiesList) as $field)
		{
			if (!isset($groupFields[$field]))
			{
				continue;
			}

			$groupPropertiesList[$field]['VALUE'] = $groupFields['~' . $field];
			$groupPropertiesList[$field]['ENTITY_VALUE_ID'] = $groupFields['ID'];
		}

		$groupData['IS_EXTRANET_GROUP'] = (
			Loader::includeModule('extranet')
			&& CExtranet::isExtranetSocNetGroup($groupId)
				? 'Y'
				: 'N'
		);

		$res = UserToGroupTable::getList([
			'filter' => [
				'ROLE' => UserToGroupTable::ROLE_MODERATOR,
				'GROUP_ID' => $groupId,
			],
			'select' => [ 'USER_ID' ]
		]);
		while ($relation = $res->fetch())
		{
			$groupData['MODERATOR_IDS'][] = (int)$relation['USER_ID'];
		}
	}
	else
	{
		$groupData['VISIBLE'] = 'Y';
		$groupData['IS_EXTRANET_GROUP'] = 'N';
		$groupId = 0;
	}
}