• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/userconsent/intl.php
  • Класс: BitrixMainUserConsentIntl
  • Вызов: Intl::getList
static function getList()
{
	static $list = null;
	if (is_array($list))
	{
		return $list;
	}

	$user = UserTable::getList(array(
		'select' => array('EMAIL'),
		'filter' => array(
			'=ID' => array_slice(CGroup::getGroupUser(1), 0, 200),
			'=ACTIVE' => 'Y'
		),
		'limit' => 1
	))->fetch();

	if ($user && $user['EMAIL'])
	{
		$email = $user['EMAIL'];
	}
	else
	{
		$email = Option::get('main', 'email_from', '');
	}

	$list = array();
	$intl = array(
		'ru' => array(
			'PHRASES' => array('COMPANY_NAME', 'IP_NAME'),
			'FIELDS' => array(
				array(
					'CODE' => 'COMPANY_NAME',
					'TYPE' => 'text',
					'TAB' => 'text',
				),
				array(
					'CODE' => 'COMPANY_ADDRESS',
					'TYPE' => 'text',
					'TAB' => 'text',
				),
				array(
					'CODE' => 'PURPOSES',
					'TYPE' => 'text',
					'SHOW_BY_CHECKBOX' => true,
					'TAB' => 'settings',
				),
				array(
					'CODE' => 'THIRD_PARTIES',
					'TYPE' => 'text',
					'SHOW_BY_CHECKBOX' => true,
					'TAB' => 'settings',
				),
				array(
					'CODE' => 'EMAIL',
					'TYPE' => 'string',
					'PLACEHOLDER' => $email,
					'DEFAULT_VALUE' => $email,
					'TAB' => 'settings',
				),
			),
		),
		'ua' => array(
			'PHRASES' => array(),
			'FIELDS' => array(
				array(
					'CODE' => 'COMPANY_NAME',
					'TYPE' => 'text',
					'TAB' => 'text',
				),
			),
		),
		'kz' => array(
			'PHRASES' => array('COMPANY_NAME', 'IP_NAME'),
			'FIELDS' => array(
				array(
					'CODE' => 'COMPANY_NAME',
					'TYPE' => 'text',
					'TAB' => 'text',
				),
				array(
					'CODE' => 'COMPANY_ADDRESS',
					'TYPE' => 'text',
					'TAB' => 'text',
				),
				array(
					'CODE' => 'PURPOSES',
					'TYPE' => 'text',
					'SHOW_BY_CHECKBOX' => true,
					'TAB' => 'settings',
				),
				array(
					'CODE' => 'THIRD_PARTIES',
					'TYPE' => 'text',
					'SHOW_BY_CHECKBOX' => true,
					'TAB' => 'settings',
				),
				array(
					'CODE' => 'EMAIL',
					'TYPE' => 'string',
					'PLACEHOLDER' => $email,
					'DEFAULT_VALUE' => $email,
					'TAB' => 'settings',
				),
			),
		),
		'by' => array(
			'PHRASES' => array('COMPANY_NAME', 'IP_NAME'),
			'FIELDS' => array(
				array(
					'CODE' => 'COMPANY_NAME',
					'TYPE' => 'text',
					'TAB' => 'text',
				),
				array(
					'CODE' => 'COMPANY_ADDRESS',
					'TYPE' => 'text',
					'TAB' => 'text',
				),
				array(
					'CODE' => 'PURPOSES',
					'TYPE' => 'text',
					'SHOW_BY_CHECKBOX' => true,
					'TAB' => 'settings',
				),
				array(
					'CODE' => 'THIRD_PARTIES',
					'TYPE' => 'text',
					'SHOW_BY_CHECKBOX' => true,
					'TAB' => 'settings',
				),
				array(
					'CODE' => 'EMAIL',
					'TYPE' => 'string',
					'PLACEHOLDER' => $email,
					'DEFAULT_VALUE' => $email,
					'TAB' => 'settings',
				),
			),
		)
	);

	$messageMap = array(
		'AGREEMENT_TEXT' => 'MAIN_USER_CONSENT_INTL_TEXT',
		'LABEL_TEXT' => 'MAIN_USER_CONSENT_INTL_LABEL',
		'FIELDS_HINT' => 'MAIN_USER_CONSENT_INTL_FIELDS_HINT',
		'DESCRIPTION' => 'MAIN_USER_CONSENT_INTL_DESCRIPTION',
		'NOTIFY_TEXT' => 'MAIN_USER_CONSENT_INTL_NOTIFY_TEXT',
	);
	$languages = self::getLanguages();
	foreach ($languages as $languageId => $languageName)
	{
		$item = self::getLanguageMessages($languageId, $messageMap);
		if (!$item['AGREEMENT_TEXT'])
		{
			continue;
		}

		$item['NAME'] = Loc::getMessage('MAIN_USER_CONSENT_INTL_NAME', array('%language_name%' => $languageName));
		$item['BASE_LANGUAGE_ID'] = self::$virtualLanguageMap[$languageId] ?? $languageId;
		$item['LANGUAGE_ID'] = $languageId;
		$item['LANGUAGE_NAME'] = $languageName;

		$item['PHRASES'] = array();
		if (isset($intl[$languageId]['PHRASES']))
		{
			$phraseMap = array();
			foreach ($intl[$languageId]['PHRASES'] as $phraseCode)
			{
				$phraseMap[$phraseCode] = "MAIN_USER_CONSENT_INTL_PHRASE_{$phraseCode}";
			}
			$item['PHRASES'] = self::getLanguageMessages($languageId, $phraseMap);
		}

		$item['FIELDS'] = array();
		if (isset($intl[$languageId]['FIELDS']))
		{
			foreach ($intl[$languageId]['FIELDS'] as $field)
			{
				$messageFieldsMap = array(
					'CAPTION' => "MAIN_USER_CONSENT_INTL_FIELD_{$field['CODE']}",
					'PLACEHOLDER' => "MAIN_USER_CONSENT_INTL_FIELD_{$field['CODE']}_HINT",
					'DEFAULT_VALUE' => "MAIN_USER_CONSENT_INTL_FIELD_{$field['CODE']}_DEFAULT",
				);

				$field = $field + self::getLanguageMessages($languageId, $messageFieldsMap);
				if ($field['TYPE'] == 'text' && $field['DEFAULT_VALUE'])
				{
					$field['PLACEHOLDER'] .= "n" . Loc::getMessage('MAIN_USER_CONSENT_INTL_HINT_FIELD_DEFAULT');
					$field['PLACEHOLDER'] .= "n" . $field['DEFAULT_VALUE'];
				}

				$item['FIELDS'][] = $field;
			}
		}

		$list[] = $item;
	}

	return $list;
}