- Модуль: 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;
}