/** * Deletes an event from this calendar. * * @param string|object $calendar_event The id of an event or an event object of type CalendarEvent. * @param boolean $all If true all events of a group event will be deleted. * @return boolean|int The number of deleted events. False if the event was not deleted. */ public function deleteEvent($calendar_event, $all = false) { if ($this->havePermission(Calendar::PERMISSION_WRITABLE)) { if (!is_object($calendar_event)) { $calendar_event = CalendarEvent::find(array($this->getRangeId(), $calendar_event)); } if (!($calendar_event && $calendar_event->havePermission(Event::PERMISSION_WRITABLE))) { return false; } if (!is_a($calendar_event, 'CalendarEvent')) { return false; } if ($this->getRange() == Calendar::RANGE_USER) { $event_message = clone $calendar_event; $author_id = $calendar_event->getAuthorId(); $deleted = $calendar_event->delete(); if ($deleted && !$this->havePermission(Calendar::PERMISSION_OWN)) { $this->sendDeleteMessage($event_message); } if ($all && $deleted && $author_id == $this->getRangeId()) { CalendarEvent::findEachBySQL(function ($ce) use($deleted) { $calendar = new SingleCalendar($ce->range_id); $deleted += $calendar->deleteEvent($ce); }, 'event_id = ?', array($event_message->event_id)); } return $deleted; } else { if ($this->getRange() == Calendar::RANGE_SEM) { $deleted = $calendar_event->delete(); return $deleted; } } } return false; }