EventBuilderFromEntityObject::getReminders

  1. Bitrix24 API (v. 23.675.0)
  2. calendar
  3. EventBuilderFromEntityObject
  4. getReminders
  • Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/core/builders/eventbuilderfromentityobject.php
  • Класс: BitrixCalendarCoreBuildersEventBuilderFromEntityObject
  • Вызов: EventBuilderFromEntityObject::getReminders
protected function getReminders(): RemindCollection
{
	$remindField = $this->event->getRemind();
	if (is_string($remindField))
	{
		$remindField = unserialize($remindField, ['allowed_classes' => false]);
	}

	if (!is_array($remindField))
	{
		return new RemindCollection();
	}

	$eventStart = $this->getStart();

	$collection = new RemindCollection();
	$collection->setEventStart($eventStart);
	foreach ($remindField as $remind)
	{
		if ($remind['type'] === EventToolsDictionary::REMIND_UNIT['date'])
		{
			$collection->add((new EventPropertiesRemind())
				->setSpecificTime(
					new Date(Util::getDateObject(
						$remind['value'],
						false,
						$this->getStartTimezone()
					))
				)
				->setEventStart($eventStart)
			);
		}
		elseif ($remind['type'] === EventPropertiesRemind::UNIT_DAY_BEFORE)
		{
			$collection->add((new EventPropertiesRemind())
				->setEventStart($eventStart)
				->setSpecificTime(
					(new Date(Util::getDateObject(
						$eventStart->toString(),
						false,
						$this->getStartTimezone())
					))
					->resetTime()
					->sub("{$remind['before']} days")
					->add("{$remind['time']} minutes")
				)
				->setDaysBefore($remind['before'])
			);
		}
		else
		{
			$collection->add((new EventPropertiesRemind())
				->setTimeBeforeEvent(
					$remind['count'],
					EventToolsDictionary::REMIND_UNIT[$remind['type']]
				)
				->setEventStart($eventStart)
			);
		}
	}

	return $collection;
}

Добавить комментарий