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/ilovecveti.ru/bitrix/modules/calendar/lib/ical/builder/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/ilovecveti.ru/bitrix/modules/calendar/lib/ical/builder/calendar.php
<?php

namespace Bitrix\Calendar\ICal\Builder;

use Bitrix\Calendar\ICal\Basic\BasicComponent;
use Bitrix\Calendar\ICal\Basic\Content;
use Bitrix\Calendar\ICal\Basic\LengthPropertyType;
use Bitrix\Calendar\ICal\Basic\Parameter;
use Bitrix\Calendar\ICal\MailInvitation\Helper;
use DateInterval;

class Calendar extends BasicComponent implements BuilderComponent
{
	private $events = [];
	private $timezones = [];
	private $name;
	private $description;
	private $withTimezone = false;
	private $refreshInterval;
	private $productIdentifier;
	private $method;

	/**
	 * @param string|null $name
	 * @return Calendar
	 */
	public static function createInstance(string $name = null): Calendar
	{
		return new self($name);
	}

	/**
	 * Calendar constructor.
	 * @param string|null $name
	 */
	public function __construct(string $name = null)
	{
		$this->name = $name;
	}

	/**
	 * @return string
	 */
	public function getType(): string
	{
		return 'VCALENDAR';
	}

	/**
	 * @return string[]
	 */
	public function getProperties(): array
	{
		return [
			'VERSION',
			'PRODID',
		];
	}

	/**
	 * @param string $method
	 * @return $this
	 */
	public function setMethod(string $method): Calendar
	{
		$this->method = $method;

		return $this;
	}

	/**
	 * @param string $name
	 * @return $this
	 */
	public function setName(string $name): Calendar
	{
		$this->name = $name;

		return $this;
	}

	/**
	 * @param string $description
	 * @return $this
	 */
	public function setDescription(string $description): Calendar
	{
		$this->description = $description;

		return $this;
	}

	/**
	 * @param string $identifier
	 * @return $this
	 */
	public function setIdentifier(string $identifier): Calendar
	{
		$this->productIdentifier = $identifier;

		return $this;
	}

	/**
	 * @param $event
	 * @return $this
	 */
	public function addEvent($event): Calendar
	{
		if (is_null($event))
		{
			return $this;
		}

		$events = array_map(function ($eventToResolve) {
			if (! is_callable($eventToResolve)) {
				return $eventToResolve;
			}
			$newEvent = new Event(Helper::getUniqId());

			$eventToResolve($newEvent);

			return $newEvent;
		}, is_array($event) ? $event : [$event]);

		$this->events = array_merge($this->events, $events);

		return $this;
	}

	/**
	 * @param $timezone
	 * @return $this
	 */
	public function setTimezones($timezone): Calendar
	{
		if (is_null($timezone)) {
			return $this;
		}

		$timezones = array_map(function ($eventToResolve) {
			if (! is_callable($eventToResolve)) {
				return $eventToResolve;
			}

			$newTimezone = new Timezone();

			$eventToResolve($newTimezone);

			return $newTimezone;
		}, is_array($timezone) ? $timezone : [$timezone]);

		$this->timezones = array_merge($this->timezones, $timezones);

		return $this;
	}

	/**
	 * @return $this
	 */
	public function setWithTimezone(): Calendar
	{
		$this->withTimezone = true;

		return $this;
	}

	/**
	 * @param int $min
	 * @return $this
	 */
	public function refreshInterval(int $min): Calendar
	{
		$this->refreshInterval = new DateInterval("PT{$min}M");

		return $this;
	}

	/**
	 * @return string
	 */
	public function get(): string
	{
		return $this->toString();
	}

	/**
	 * @return Content
	 */
	public function setContent(): Content
	{
		$events = $this->events;
		$timezones = $this->timezones;

		if ($this->withTimezone) {
			array_walk($events, function (Event $event)
			{
				$event->setWithTimezone();
			});
		}

		$content = Content::getInstance($this->getType())
			->textProperty('VERSION', '2.0')
			->textProperty('METHOD', $this->method)
			->textProperty('CALSCALE', 'GREGORIAN')
			->textProperty('PRODID', $this->productIdentifier ?? '-//Bitrix//Bitrix Calendar//EN')
			->textProperty(['NAME', 'X-WR-CALNAME'], $this->name)
			->textProperty(['DESCRIPTION', 'X-WR-CALDESC'], $this->description)
			->subComponent(...$timezones)
			->subComponent(...$events);

		if ($this->refreshInterval)
		{
			$content->property(
					LengthPropertyType::getInstance('REFRESH-INTERVAL', $this->refreshInterval)
						->addParameter(new Parameter('VALUE', 'DURATION'))
				)
				->property(LengthPropertyType::getInstance('X-PUBLISHED-TTL', $this->refreshInterval));
		}

		return $content;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit