Exemple #1
0
 /**
  * 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;
 }