• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/integration/messageservice/sms/transportsms.php
  • Класс: Bitrix\Sender\Integration\MessageService\Sms\TransportSms
  • Вызов: TransportSms::getLimiters
public function getLimiters(Message\iBase $message = null)
{
	if (!empty($this->limiters))
	{
		$this->limiters[] = Transport\TimeLimiter::create()
			->withLetter($message);

		return $this->limiters;
	}

	/** @var MessageSms $message */
	$smsSender = null;
	if ($message)
	{
		if ($message instanceof Message\Adapter)
		{
			$smsSender = $message->getConfiguration()->getOption('SENDER')->getValue();
		}
		else
		{
			$smsSender = $message->getSmsSender();
		}
	}

	$this->limiters = [];
	$limitList = Service::getDailyLimits();
	$senderNames = Service::getSenderNames();
	foreach ($limitList as $limitSender => $limitData)
	{
		if ($smsSender && $smsSender !== $limitSender)
		{
			continue;
		}
		if (empty($limitData['limit']))
		{
			continue;
		}

		$this->limiters[] = Transport\CountLimiter::create()
			->withName('sms_per_day_' . $limitSender)
			->withCaption($senderNames[$limitSender])
			->withLimit($limitData['limit'])
			->withCurrent(
				function () use ($limitSender)
				{
					$limitList = Service::getDailyLimits();
					if (!isset($limitList[$limitSender]))
					{
						return 0;
					}

					if (!isset($limitList[$limitSender]['current']))
					{
						return 0;
					}

					return $limitList[$limitSender]['current'];
				}

			)
			->withUnit("1 " . Transport\iLimiter::DAYS)
			->setParameter('setupUri', Service::getLimitsUrl());
	}

	$this->limiters[] = Transport\TimeLimiter::create()
		->withLetter($message);

	return $this->limiters;
}