• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/mail/internal/sendertable.php
  • Класс: BitrixMainMailInternalSenderTable
  • Вызов: SenderTable::getMap
static function getMap()
{
	return [
		(new FieldsIntegerField("ID"))
			->configurePrimary(true)
			->configureAutocomplete(true)
			->configureTitle(Loc::getMessage("main_mail_sender_id_title")),

		(new FieldsStringField("EMAIL"))
			->configureRequired(true)
			->configureTitle(Loc::getMessage("main_mail_sender_email_title")),

		(new FieldsStringField("NAME"))
			->configureTitle(Loc::getMessage("main_mail_sender_name_title")),

		(new FieldsIntegerField("USER_ID"))
			->configureAutocomplete(true)
			->configureTitle(Loc::getMessage("main_mail_sender_user_id_title")),

		(new FieldsBooleanField("IS_CONFIRMED"))
			->configureStorageValues("0", "1")
			->configureDefaultValue("0")
			->configureTitle(Loc::getMessage("main_mail_sender_is_confirmed_title")),

		(new FieldsBooleanField("IS_PUBLIC"))
			->configureStorageValues("0", "1")
			->configureDefaultValue("0")
			->configureTitle(Loc::getMessage("main_mail_sender_is_public_title")),

		(new FieldsArrayField("OPTIONS"))
			->configureSerializationPhp()
			->configureRequired(true)
			->configureTitle(Loc::getMessage("main_mail_sender_options_title"))
			->addSaveDataModifier(function($value)
				{
					$value = unserialize($value, ['allowed_classes' => false]);
					if (!empty($value['smtp']['password']))
					{
						$value['smtp']['encrypted'] = false;

						$cryptoOptions = ConfigConfiguration::getValue('crypto');
						if (!empty($cryptoOptions['crypto_key']))
						{
							try
							{
								$cipher = new SecurityCipher();

								$value['smtp']['password'] = $cipher->encrypt(
									$value['smtp']['password'],
									$cryptoOptions['crypto_key']
								);
								$value['smtp']['encrypted'] = true;
							}
							catch (SecuritySecurityException $e)
							{
							}
						}

						$value['smtp']['password'] = base64_encode($value['smtp']['password']);
					}

					return serialize($value);
				})
			->addFetchDataModifier(function($value)
			{
				if (!empty($value['smtp']['password']))
				{
					$value['smtp']['password'] = base64_decode($value['smtp']['password']);

					if (!empty($value['smtp']['encrypted']))
					{
						$cryptoOptions = ConfigConfiguration::getValue('crypto');
						if (!empty($cryptoOptions['crypto_key']))
						{
							try
							{
								$cipher = new SecurityCipher();

								$value['smtp']['password'] = $cipher->decrypt(
									$value['smtp']['password'],
									$cryptoOptions['crypto_key']
								);
								unset($value['smtp']['encrypted']);
							} catch (SecuritySecurityException $e)
							{
							}
						}
					}
				}

				if (!empty($value['smtp']) && is_array($value['smtp']))
				{
					if (empty($value['smtp']['protocol']))
					{
						if (465 == $value['smtp']['port'])
						{
							$value['smtp']['protocol'] = 'smtps';
						} else if (587 == $value['smtp']['port'])
						{
							$value['smtp']['protocol'] = 'smtp';
						}
					}
				}

				return $value;
			})
	];
}