• Модуль: biconnector
  • Путь к файлу: ~/bitrix/modules/biconnector/lib/integration/socialnetwork/group.php
  • Класс: BitrixBIConnectorIntegrationSocialnetworkGroup
  • Вызов: Group::onBIConnectorDataSources
static function onBIConnectorDataSources(BitrixMainEvent $event)
{
	if (!BitrixMainLoader::includeModule('socialnetwork'))
	{
		return;
	}

	$params = $event->getParameters();
	//$manager = $params[0];
	$result = &$params[1];
	$languageId = $params[2];

	//CREATE TABLE b_sonet_group
	$result['socialnetwork_group'] = [
		'TABLE_NAME' => 'b_sonet_group',
		'TABLE_ALIAS' => 'G',
		'FILTER' => [
			'=VISIBLE' => 'Y',
		],
		'FILTER_FIELDS' => [
			'VISIBLE' => [
				'IS_METRIC' => 'N',
				'FIELD_NAME' => 'G.VISIBLE',
				'FIELD_TYPE' => 'string',
			],
		],
		'FIELDS' => [
			//ID int not null auto_increment,
			'ID' => [
				'IS_PRIMARY' => 'Y',
				'IS_METRIC' => 'N',
				'FIELD_NAME' => 'G.ID',
				'FIELD_TYPE' => 'int',
			],
			//SITE_ID char(2) not null,
			'SITE_ID' => [
				'IS_METRIC' => 'N',
				'FIELD_NAME' => 'G.SITE_ID',
				'FIELD_TYPE' => 'string',
			],
			//NAME varchar(255) not null,
			'NAME' => [
				'IS_METRIC' => 'N',
				'FIELD_NAME' => 'G.NAME',
				'FIELD_TYPE' => 'string',
			],
			//DESCRIPTION text null,
			'DESCRIPTION' => [
				'IS_METRIC' => 'N',
				'FIELD_NAME' => 'G.DESCRIPTION',
				'FIELD_TYPE' => 'string',
			],
			//DATE_CREATE datetime not null,
			'DATE_CREATE' => [
				'IS_METRIC' => 'N', // 'Y'
				'FIELD_NAME' => 'G.DATE_CREATE',
				'FIELD_TYPE' => 'datetime',
			],
			//DATE_UPDATE datetime not null,
			'DATE_MODIFY' => [
				'IS_METRIC' => 'N', // 'Y'
				'FIELD_NAME' => 'G.DATE_UPDATE',
				'FIELD_TYPE' => 'datetime',
			],
			//TODO:ACTIVE char(1) not null default 'Y',
			//TODO:VISIBLE char(1) not null default 'Y',
			//OPENED char(1) not null default 'N',
			'OPENED' => [
				'IS_METRIC' => 'N',
				'FIELD_NAME' => 'G.OPENED',
				'FIELD_TYPE' => 'string',
			],
			//SUBJECT_ID int not null,
			'SUBJECT' => [
				'IS_METRIC' => 'N',
				'FIELD_NAME' => 'S.NAME',
				'FIELD_TYPE' => 'string',
				'TABLE_ALIAS' => 'S',
				'JOIN' => 'INNER JOIN b_sonet_group_subject S ON S.ID = G.SUBJECT_ID',
				'LEFT_JOIN' => 'LEFT JOIN b_sonet_group_subject S ON S.ID = G.SUBJECT_ID',
			],
			//OWNER_ID int not null,
			'OWNER_ID' => [
				'IS_METRIC' => 'N', // 'Y'
				'FIELD_NAME' => 'G.OWNER_ID',
				'FIELD_TYPE' => 'int',
			],
			'OWNER_NAME' => [
				'IS_METRIC' => 'N', // 'Y'
				'FIELD_NAME' => 'if(G.OWNER_ID is null, null, concat_ws(' ', nullif(UO.NAME, ''), nullif(UO.LAST_NAME, '')))',
				'FIELD_TYPE' => 'string',
				'TABLE_ALIAS' => 'UO',
				'JOIN' => 'INNER JOIN b_user UO ON UO.ID = G.OWNER_ID',
				'LEFT_JOIN' => 'LEFT JOIN b_user UO ON UO.ID = G.OWNER_ID',
			],
			'OWNER' => [
				'IS_METRIC' => 'N', // 'Y'
				'FIELD_NAME' => 'if(G.OWNER_ID is null, null, concat_ws(' ', concat('[', G.OWNER_ID, ']'), nullif(UO.NAME, ''), nullif(UO.LAST_NAME, '')))',
				'FIELD_TYPE' => 'string',
				'TABLE_ALIAS' => 'UO',
				'JOIN' => 'INNER JOIN b_user UO ON UO.ID = G.OWNER_ID',
				'LEFT_JOIN' => 'LEFT JOIN b_user UO ON UO.ID = G.OWNER_ID',
			],
			//KEYWORDS varchar(255) null,
			'KEYWORDS' => [
				'IS_METRIC' => 'N',
				'FIELD_NAME' => 'G.KEYWORDS',
				'FIELD_TYPE' => 'string',
			],
			//TODO:IMAGE_ID int null,
			//TODO:AVATAR_TYPE varchar(50) null,
			//NUMBER_OF_MEMBERS int not null default 0,
			'NUMBER_OF_MEMBERS' => [
				'IS_METRIC' => 'Y',
				'FIELD_NAME' => 'G.NUMBER_OF_MEMBERS',
				'FIELD_TYPE' => 'int',
			],
			//TODO:NUMBER_OF_MODERATORS int not null default 0,
			//TODO:INITIATE_PERMS char(1) not null default 'K',
			//DATE_ACTIVITY datetime not null,
			'DATE_ACTIVITY' => [
				'IS_METRIC' => 'N', // 'Y'
				'FIELD_NAME' => 'G.DATE_ACTIVITY',
				'FIELD_TYPE' => 'datetime',
			],
			//CLOSED char(1) not null default 'N',
			'CLOSED' => [
				'IS_METRIC' => 'N',
				'FIELD_NAME' => 'G.CLOSED',
				'FIELD_TYPE' => 'string',
			],
			//TODO:SPAM_PERMS char(1) not null default 'K',
			//PROJECT char(1) not null default 'N',
			'PROJECT' => [
				'IS_METRIC' => 'N',
				'FIELD_NAME' => 'G.PROJECT',
				'FIELD_TYPE' => 'string',
			],
			//TODO:PROJECT_DATE_START datetime null,
			//TODO:PROJECT_DATE_FINISH datetime null,
			//TODO:SEARCH_INDEX mediumtext null,
			//TODO:LANDING char(1) null,
			//TODO:SCRUM_OWNER_ID int null,
			//TODO:SCRUM_MASTER_ID int null,
			//TODO:SCRUM_SPRINT_DURATION int null,
			//TODO:SCRUM_TASK_RESPONSIBLE char(1) null,
		],
	];

	$messages = Loc::loadLanguageFile(__FILE__, $languageId);
	$result['socialnetwork_group']['TABLE_DESCRIPTION'] = $messages['SN_BIC_GROUP_TABLE'] ?: 'socialnetwork_group';
	foreach ($result['socialnetwork_group']['FIELDS'] as $fieldCode => &$fieldInfo)
	{
		$fieldInfo['FIELD_DESCRIPTION'] = $messages['SN_BIC_GROUP_FIELD_' . $fieldCode];
		if (!$fieldInfo['FIELD_DESCRIPTION'])
		{
			$fieldInfo['FIELD_DESCRIPTION'] = $fieldCode;
		}

		$fieldInfo['FIELD_DESCRIPTION_FULL'] = $messages['SN_BIC_GROUP_FIELD_' . $fieldCode . '_FULL'] ?? '';
	}
	unset($fieldInfo);
}