403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/sender/lib/transport/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/sender/lib/transport/timelimiter.php
<?php


namespace Bitrix\Sender\Transport;

use Bitrix\Main\Config\Option;
use Bitrix\Main\Context;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Type\DateTime;
use Bitrix\Main\UI\Extension;
use Bitrix\Sender\Entity\Letter;
use Bitrix\Sender\Message;

Loc::loadMessages(__FILE__);
class TimeLimiter implements iLimiter
{
	public const DEFAULT_SENDING_START = '09:00';
	public const DEFAULT_SENDING_END = '18:00';
	/**
	 * @var Message\iBase
	 */
	private $letter;
	private $parameters;

	public function withLetter($letter)
	{
		$this->letter = $letter;
		return $this;
	}

	/**
	 * Create instance.
	 * @return static
	 */
	public static function create()
	{
		return new static();
	}

	/**
	 * @inheritDoc
	 */
	public function getLimit()
	{
		return 1;
	}

	/**
	 * @inheritDoc
	 */
	public function getCurrent()
	{
		if (!$this->letter)
		{
			return 0;
		}

		$sendingStart = $this->letter->getConfiguration()->get('SENDING_START');
		$sendingEnd = $this->letter->getConfiguration()->get('SENDING_END');
		$sendingTimeEnabled = $this->letter->getConfiguration()->get('SENDING_TIME');

		if (!$sendingEnd || !$sendingStart || $sendingTimeEnabled !== 'Y')
		{
			return 0;
		}
		$checkTime =  strtotime($sendingStart);
		$sendingStart = strtotime($sendingStart);
		$sendingEnd = strtotime($sendingEnd);
		$currentTime = strtotime((new DateTime())->format("H:i:s"));

		$sendingStart = $sendingStart > $sendingEnd ? $sendingEnd : $sendingStart;
		$sendingEnd = $checkTime > $sendingEnd ? $checkTime : $sendingEnd;

		$this->setParameter('sendingStart', $sendingStart);
		$this->setParameter('sendingEnd', $sendingEnd);
		$this->setParameter('currentTime', $currentTime);

		if ($currentTime > $sendingStart && $currentTime < $sendingEnd)
		{
			return 0;
		}

		return 1;
	}

	/**
	 * @inheritDoc
	 */
	public function getUnitName()
	{
		return '';
	}

	/**
	 * @inheritDoc
	 */
	public function getUnit()
	{
		return '';
	}

	/**
	 * @inheritDoc
	 */
	public function getCaption()
	{
		return '';
	}

	/**
	 * @inheritDoc
	 */
	public function getParameter($name)
	{
		return $this->parameters[$name] ?? null;
	}

	/**
	 * @inheritDoc
	 */
	public function setParameter($name, $value)
	{
		$this->parameters[$name] = $value;
	}

	/**
	 * @inheritDoc
	 */
	public function isHidden()
	{
		return true;
	}

	/**
	 * add options SENDING_START and SENDING_END to the Message Configuration
	 * @param $configuration
	 */
	public static function prepareMessageConfiguration($configuration)
	{
		$configuration->addOption(new Message\ConfigurationOption([
			'type' => Message\ConfigurationOption::TYPE_CHECKBOX,
			'code' => 'SENDING_TIME',
			'group' => Message\ConfigurationOption::GROUP_ADDITIONAL,
			'name' => Loc::getMessage('SENDER_INTEGRATION_MESSAGE_CONFIG_SENDING_TIME'),
			'show_in_list' => false,
			'required' => false,
			'value' => Option::get('sender', 'sending_time')
		]));

		$configuration->addOption(new Message\ConfigurationOption([
			'type' => Message\ConfigurationOption::TYPE_STRING,
			'code' => 'SENDING_START',
			'name' => Loc::getMessage('SENDER_INTEGRATION_MESSAGE_CONFIG_SENDING_START'),
			'group' => Message\ConfigurationOption::GROUP_ADDITIONAL,
			'show_in_list' => false,
			'required' => false,
			'value' => Option::get('sender', 'sending_start', TimeLimiter::DEFAULT_SENDING_START)
		]));

		$configuration->addOption(new Message\ConfigurationOption([
			'type' => Message\ConfigurationOption::TYPE_STRING,
			'code' => 'SENDING_END',
			'name' => Loc::getMessage('SENDER_INTEGRATION_MESSAGE_CONFIG_SENDING_END'),
			'group' => Message\ConfigurationOption::GROUP_ADDITIONAL,
			'show_in_list' => false,
			'required' => false,
			'value' => Option::get('sender', 'sending_end', TimeLimiter::DEFAULT_SENDING_END)
		]));
	}

	/**
	 * add options view SENDING_START and SENDING_END to the Message Configuration
	 * @param $configuration
	 */
	public static function prepareMessageConfigurationView($configuration)
	{

		$sendingStart = $configuration->getOption('SENDING_START');
		$sendingEnd = $configuration->getOption('SENDING_END');
		$checkbox = $configuration->getOption('SENDING_TIME');

		$view = function($input, $checkbox)
		{
			$prefix = 'CONFIGURATION_';
			$inputCode = htmlspecialcharsbx($prefix.$input->getCode());
			$checkboxCode = htmlspecialcharsbx($prefix.$checkbox->getCode());
			ob_start();
			Extension::load("sender.secret_block");
			$inputHtml = "<select 
				id=\"$inputCode\"
				name=\"$inputCode\"
				value='".$input->getValue()."'
				class=\"bx-sender-form-control bx-sender-message-editor-field-select\">";
			for ($hour = 0; $hour < 24; $hour++)
			{
				foreach ([0, 30] as $minute)
				{
					$time = strtotime(sprintf("%02d:%02d", $hour, $minute));
					$formatted = (new \DateTime())
						->setTimestamp($time)
						->format(Context::getCurrent()
							->getCulture()
							->getShortTimeFormat()
						);

					$inputHtml .= "<option value='{$formatted}'";
					$inputHtml .= $time === strtotime($input->getValue()) ? "selected" : "";
					$inputHtml .= ">{$formatted}</option>";
				}
			}

			$inputHtml .= '</select>';

			echo $inputHtml;
			$params = \Bitrix\Main\Web\Json::encode(
				[
					'elementId' => $inputCode,
					'conditionElementId' => $checkboxCode
				]
			);

			echo "<script>new BX.Sender.SecretBlock(".$params.")</script>";

			return ob_get_clean();
		};

		$sendingStart->setView($view($sendingStart, $checkbox));
		$sendingEnd->setView($view($sendingEnd, $checkbox));
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit