Your IP : 3.138.122.96


Current Path : /var/www/www-root/data/www/monolith-realty.ru/bitrix/modules/main/lib/mail/internal/
Upload File :
Current File : /var/www/www-root/data/www/monolith-realty.ru/bitrix/modules/main/lib/mail/internal/sendertable.php

<?php

namespace Bitrix\Main\Mail\Internal;

use Bitrix\Main\Entity;
use Bitrix\Main\Config;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Security;
use Bitrix\Main\ORM\Fields;

/**
 * Class SenderTable
 * @package Bitrix\Main\Mail\Internal
 *
 * DO NOT WRITE ANYTHING BELOW THIS
 *
 * <<< ORMENTITYANNOTATION
 * @method static EO_Sender_Query query()
 * @method static EO_Sender_Result getByPrimary($primary, array $parameters = [])
 * @method static EO_Sender_Result getById($id)
 * @method static EO_Sender_Result getList(array $parameters = [])
 * @method static EO_Sender_Entity getEntity()
 * @method static \Bitrix\Main\Mail\Internal\Sender createObject($setDefaultValues = true)
 * @method static \Bitrix\Main\Mail\Internal\EO_Sender_Collection createCollection()
 * @method static \Bitrix\Main\Mail\Internal\Sender wakeUpObject($row)
 * @method static \Bitrix\Main\Mail\Internal\EO_Sender_Collection wakeUpCollection($rows)
 */
class SenderTable extends Entity\DataManager
{

	public static function getTableName()
	{
		return 'b_main_mail_sender';
	}

	public static function add(array $data)
	{
		$result = parent::add($data);

		\Bitrix\Main\Mail\Sender::clearCustomSmtpCache($data['EMAIL']);

		return $result;
	}


	public static function getObjectClass()
	{
		return Sender::class;
	}

	// @TODO: invalidate smtp cache on update and delete

	public static function getMap()
	{
		return [
			(new Fields\IntegerField("ID"))
				->configurePrimary(true)
				->configureAutocomplete(true)
				->configureTitle(Loc::getMessage("main_mail_sender_id_title")),

			(new Fields\StringField("EMAIL"))
				->configureRequired(true)
				->configureTitle(Loc::getMessage("main_mail_sender_email_title")),

			(new Fields\StringField("NAME"))
				->configureTitle(Loc::getMessage("main_mail_sender_name_title")),

			(new Fields\IntegerField("USER_ID"))
				->configureAutocomplete(true)
				->configureTitle(Loc::getMessage("main_mail_sender_user_id_title")),

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

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

			(new Fields\ArrayField("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 = Config\Configuration::getValue('crypto');
							if (!empty($cryptoOptions['crypto_key']))
							{
								try
								{
									$cipher = new Security\Cipher();

									$value['smtp']['password'] = $cipher->encrypt(
										$value['smtp']['password'],
										$cryptoOptions['crypto_key']
									);
									$value['smtp']['encrypted'] = true;
								}
								catch (Security\SecurityException $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 = Config\Configuration::getValue('crypto');
							if (!empty($cryptoOptions['crypto_key']))
							{
								try
								{
									$cipher = new Security\Cipher();

									$value['smtp']['password'] = $cipher->decrypt(
										$value['smtp']['password'],
										$cryptoOptions['crypto_key']
									);
									unset($value['smtp']['encrypted']);
								} catch (Security\SecurityException $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;
				})
		];
	}

}