AnonSec Shell
Server IP : 85.193.89.191  /  Your IP : 18.220.86.232
Web Server : Apache
System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
User : bitrix ( 600)
PHP Version : 8.1.27
Disable Function : NONE
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/bitrix/www/bitrix/modules/mail/lib/internals/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/bitrix/www/bitrix/modules/mail/lib/internals/mailcontact.php
<?php

namespace Bitrix\Mail\Internals;

use Bitrix\Main\Application;
use Bitrix\Main\Entity;
use Bitrix\Main\Localization;

Localization\Loc::loadMessages(__FILE__);

/**
 * Class MailContactTable
 * @package Bitrix\Mail
 *
 * DO NOT WRITE ANYTHING BELOW THIS
 *
 * <<< ORMENTITYANNOTATION
 * @method static EO_MailContact_Query query()
 * @method static EO_MailContact_Result getByPrimary($primary, array $parameters = array())
 * @method static EO_MailContact_Result getById($id)
 * @method static EO_MailContact_Result getList(array $parameters = array())
 * @method static EO_MailContact_Entity getEntity()
 * @method static \Bitrix\Mail\Internals\EO_MailContact createObject($setDefaultValues = true)
 * @method static \Bitrix\Mail\Internals\EO_MailContact_Collection createCollection()
 * @method static \Bitrix\Mail\Internals\EO_MailContact wakeUpObject($row)
 * @method static \Bitrix\Mail\Internals\EO_MailContact_Collection wakeUpCollection($rows)
 */
class MailContactTable extends Entity\DataManager
{
	const ADDED_TYPE_FROM = 'FROM';
	const ADDED_TYPE_CC   = 'CC';
	const ADDED_TYPE_BCC  = 'BCC';
	const ADDED_TYPE_TO   = 'TO';
	const ADDED_TYPE_REPLY_TO   = 'REPLY_TO';

	public static function getFilePath()
	{
		return __FILE__;
	}

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

	public static function getMap()
	{
		return [
			'ID' => [
				'data_type' => 'integer',
				'primary' => true,
				'autocomplete' => true,
			],
			'EMAIL' => [
				'data_type' => 'string',
			],
			'NAME' => [
				'data_type' => 'string',
			],
			'ICON' => [
				'data_type' => 'string',
				'serialized' => true,
			],
			'FILE_ID' => [
				'data_type' => 'integer',
			],
			'USER_ID' => [
				'data_type' => 'integer',
				'required' => true,
			],
			'ADDED_FROM' => [
				'data_type' => 'string',
			],
		];
	}

	/**
	 * @param $contactsData
	 * @throws \Bitrix\Main\Db\SqlQueryException
	 */
	public static function addContactsBatch($contactsData)
	{
		if (empty($contactsData))
		{
			return true;
		}

		$contactsToCheck = [];
		foreach ($contactsData as $index => $item)
		{
			$item['EMAIL'] = trim($item['EMAIL']);
			$contactsToCheck[$item['USER_ID']][] = $item;
		}

		$alreadyAdded = [];

		foreach ($contactsToCheck as $userId => $items)
		{
			$alreadyAdded = static::query()
				->addSelect('EMAIL', 'EMAIL')
				->addSelect('ID', 'ID')
				->addSelect('NAME', 'NAME')
				->where('USER_ID', $userId)
				->whereIn('EMAIL', array_column($items, 'EMAIL'))
				->exec()
				->fetchAll();

			$alreadyAddedEmail = array_column($alreadyAdded, 'EMAIL');

			foreach ($items as $item)
			{
				if (!in_array($item['EMAIL'], $alreadyAddedEmail, true))
				{
					$contactsToAdd[$item['EMAIL']] = $item;
				}
			}
		}

		if (empty($contactsToAdd))
		{
			return $alreadyAdded;
		}

		$sqlHelper = Application::getConnection()->getSqlHelper();
		$values = [];
		foreach ($contactsToAdd as $item)
		{
			$item = [
				'USER_ID' => intval($item['USER_ID']),
				'NAME' => "'" . $sqlHelper->forSql(trim($item['NAME'])) . "'",
				'ICON' => "'" . $sqlHelper->forSql(serialize($item['ICON'])) . "'",
				'EMAIL' => "'" . $sqlHelper->forSql(trim($item['EMAIL'])) . "'",
				'ADDED_FROM' => "'" . $sqlHelper->forSql($item['ADDED_FROM']) . "'",
			];
			$values[] = implode(", ", $item);
		}
		$keys = implode(', ', array_keys(reset($contactsToAdd)));
		$values = implode('), (', $values);

		$tableName = static::getTableName();
		$sql = $sqlHelper->getInsertIgnore($tableName, "($keys)", " VALUES($values)");
		Application::getConnection()->query($sql);

		return true;
	}
}

Anon7 - 2022
AnonSec Team