• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/controller/sharingajax.php
  • Класс: BitrixCalendarControllerSharingAjax
  • Вызов: SharingAjax::deleteEventAction
public function deleteEventAction(): array
{
	$result = [];
	$request = $this->getRequest();
	$eventId = (int)$request['eventId'];
	$eventLinkHash = Application::getConnection()->getSqlHelper()->forSql($request['eventLinkHash']);

	/** @var SharingLinkEventLink $eventLink */
	$eventLink = $this->getSharingLinkFactory()->getLinkByHash($eventLinkHash);
	if (
		!$eventLink
		|| !$eventLink->isActive()
		|| $eventLink->getObjectType() !== SharingLinkHelper::EVENT_SHARING_TYPE
	)
	{
		$this->addError(new Error('Link not found'));

		return $result;
	}

	/** @var Event $event */
	$event = (new MappersEvent())->getById($eventId);
	if (!$event)
	{
		$this->addError(new Error(Loc::getMessage('EC_SHARINGAJAX_EVENT_NOT_FOUND')));

		return $result;
	}

	if ($event->getId() !== $eventLink->getEventId())
	{
		$this->addError(new Error(Loc::getMessage('EC_SHARINGAJAX_EVENT_DELETE_ERROR')));

		return $result;
	}

	if ($event->getSpecialLabel() === Dictionary::EVENT_TYPE['shared_crm'])
	{
		SharingEventManager::onSharingCrmEventClientDelete($event->getId());
	}

	$eventDeleteResult = (new SharingSharingEventManager($event, $eventLink->getHostId(), $eventLink->getOwnerId()))
		->deactivateEventLink($eventLink)
		->deleteEvent()
	;
	if ($eventDeleteResult->getErrors())
	{
		$this->addError(new Error(Loc::getMessage('EC_SHARINGAJAX_EVENT_DELETE_ERROR')));
	}

	return $result;
}