From 01bea07d9322817babd513cf695e3d8a7079a2a4 Mon Sep 17 00:00:00 2001 From: Ankit Agarwal Date: Mon, 10 Dec 2012 14:03:51 +0800 Subject: [PATCH] MDL-37077 webservices: Implementing the WS api core_calendar_delete_calendar_events() --- calendar/externallib.php | 106 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 calendar/externallib.php diff --git a/calendar/externallib.php b/calendar/externallib.php new file mode 100644 index 00000000000..320d81c0958 --- /dev/null +++ b/calendar/externallib.php @@ -0,0 +1,106 @@ +. + + +/** + * External calendar API + * + * @package core_calendar + * @category external + * @copyright 2012 Ankit Agarwal + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @since Moodle 2.5 + */ + +defined('MOODLE_INTERNAL') || die; + +require_once("$CFG->libdir/externallib.php"); + +/** + * Calendar external functions + * + * @package core_calendar + * @category external + * @copyright 2012 Ankit Agarwal + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @since Moodle 2.5 + */ +class core_calendar_external extends external_api { + + + /** + * Returns description of method parameters + * + * @return external_function_parameters + * @since Moodle 2.5 + */ + public static function delete_calendar_events_parameters() { + return new external_function_parameters( + array('events' => new external_multiple_structure( + new external_single_structure( + array( + 'eventid' => new external_value(PARAM_INT, 'Event ID', VALUE_REQUIRED, '', NULL_NOT_ALLOWED), + 'repeat' => new external_value(PARAM_BOOL, 'Delete comeplete series if repeated event') + ), 'List of events to delete' + ) + ) + ) + ); + } + + /** + * Delete Calendar events + * + * @param array $eventids A list of event ids with repeat flag to delete + * @return null + * @since Moodle 2.5 + */ + public static function delete_calendar_events($events) { + global $CFG, $DB; + require_once($CFG->dirroot."/calendar/lib.php"); + + // Parameter validation. + $params = self::validate_parameters(self:: delete_calendar_events_parameters(), array('events' => $events)); + + $transaction = $DB->start_delegated_transaction(); + + foreach ($params['events'] as $event) { + $eventobj = calendar_event::load($event['eventid']); + + // Let's check if the user is allowed to delete an event. + if (!calendar_edit_event_allowed($eventobj)) { + throw new moodle_exception("nopermissions"); + } + // Time to do the magic. + $eventobj->delete($event['repeat']); + } + + // Everything done smoothly, let's commit. + $transaction->allow_commit(); + + return null; + } + + /** + * Returns description of method result value + * + * @return external_description + * @since Moodle 2.5 + */ + public static function delete_calendar_events_returns() { + return null; + } +} -- 2.43.0