/** * Remove a single event from the database and from caldav server. * * @param array Hash array with event properties * @param boolean Remove record irreversible * * @see calendar_driver::remove_event() */ public function remove_event($obj, $force = true) { $obj = $this->_get_id($obj); $event_id = (int) $obj['id']; $cal_id = (int) $obj['calendar']; $savemode = $obj['_savemode'] ? $obj['_savemode'] : 'all'; $event = parent::get_master($obj); if ($event['recurrence_id']) { $event_id = (int) $event['recurrence_id']; $event['id'] = $event_id; unset($event['recurrence_id']); } if (!($props = $this->_get_caldav_props($event_id, self::OBJ_TYPE_VEVENT))) { $savemode = 'current'; $event = parent::get_event($event['uid']); $props = $this->_get_caldav_props($event['id'], self::OBJ_TYPE_VEVENT); } if (parent::remove_event($obj, $force) && is_array($props)) { $sync_client = $this->sync_clients[$cal_id]; switch ($savemode) { case 'current': case 'future': $event = parent::get_master($event); $event = $this->_save_preprocess($event); $success = $sync_client->update_event($event, $props); break; default: // all is default $success = $sync_client->remove_event($props); break; } if ($success === true) { self::debug_log("Successfully removed event \"{$event_id}\"."); } else { self::debug_log("Unkown error while removing caldav event \"{$event_id}\", force sync calendar \"{$cal_id}\"!"); } // Trigger calendar sync to update ctags and etags. $this->_sync_calendar($cal_id); return $success; } return false; // Unkown error. }