• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/helper/licensemanager.php
  • Класс: BitrixMailHelperLicenseManager
  • Вызов: LicenseManager::checkTheMailboxForSyncAvailability
static function checkTheMailboxForSyncAvailability(int $checkedMailboxId): bool
{
	$maxCountAvailableMailboxes = self::getUserMailboxesLimit();

	if ($maxCountAvailableMailboxes < 0)
	{
		return true;
	}

	static $checkedMailboxes = [];

	if (!array_key_exists($checkedMailboxId, $checkedMailboxes))
	{
		$checkedMailboxes[$checkedMailboxId] = MailboxTable::getById($checkedMailboxId)->fetch();
	}

	$mailboxAvailabilitySyncStatus = false;

	if ($checkedMailboxes[$checkedMailboxId] && isset($checkedMailboxes[$checkedMailboxId]['USER_ID']))
	{
		$userId = (int) $checkedMailboxes[$checkedMailboxId]['USER_ID'];

		static $userMailboxes = [];

		if (!array_key_exists($userId, $userMailboxes))
		{
			$userMailboxes[$userId] = MailboxTable::getList([
				'select' => [
					'ID',
				],
				'filter' => [
					'=USER_ID' => $userId,
					'=ACTIVE' => 'Y',
				],
				'order' => [
					'ID' => 'ASC',
				],
			])->fetchAll();
		}

		$mailboxNumber = 1;

		foreach ($userMailboxes[$userId] as $mailbox)
		{
			if (isset($mailbox['ID']))
			{
				$mailboxId = (int) $mailbox['ID'];
				if ($mailboxNumber <= $maxCountAvailableMailboxes)
				{
					if ($mailboxId === $checkedMailboxId)
					{
						$mailboxAvailabilitySyncStatus = true;
					}

					static::removeTariffRestrictionsOnTheMailbox($mailboxId);
				}
				else
				{
					static::imposeTariffRestrictionsOnTheMailbox($mailboxId);
				}
			}

			$mailboxNumber ++;
		}
	}

	return $mailboxAvailabilitySyncStatus;
}