From 8683c24f737c95db5b034df51228cee1b4efcb4e Mon Sep 17 00:00:00 2001 From: David Mudrak Date: Wed, 25 Apr 2012 15:35:59 +0200 Subject: [PATCH] MDL-32630 workshop_calendar_update() does not check for calendar permissions As discussed in MDL-32631, calendar_event::update() should not do capability checks at all. Until that issue is fixed, we just explicitly declare that no capability checks should be done. The function workshop_calendar_update() is executed when adding or updating a workshop instance (where permissions to modify the instance were already checked and are sufficient) and in the upgrade code (where no check should be performed anyway). --- mod/workshop/lib.php | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/mod/workshop/lib.php b/mod/workshop/lib.php index 69f5c8400c6..9955d09f6dd 100644 --- a/mod/workshop/lib.php +++ b/mod/workshop/lib.php @@ -1440,8 +1440,9 @@ function workshop_calendar_update(stdClass $workshop, $cmid) { // should not be set but just in case unset($event->id); } - // calendar_event::create will reuse a db record if the id field is set - calendar_event::create($event); + // update() will reuse a db record if the id field is set + $eventobj = new calendar_event($event); + $eventobj->update($event, false); } if ($workshop->submissionend) { @@ -1454,8 +1455,9 @@ function workshop_calendar_update(stdClass $workshop, $cmid) { // should not be set but just in case unset($event->id); } - // calendar_event::create will reuse a db record if the id field is set - calendar_event::create($event); + // update() will reuse a db record if the id field is set + $eventobj = new calendar_event($event); + $eventobj->update($event, false); } if ($workshop->assessmentstart) { @@ -1468,8 +1470,9 @@ function workshop_calendar_update(stdClass $workshop, $cmid) { // should not be set but just in case unset($event->id); } - // calendar_event::create will reuse a db record if the id field is set - calendar_event::create($event); + // update() will reuse a db record if the id field is set + $eventobj = new calendar_event($event); + $eventobj->update($event, false); } if ($workshop->assessmentend) { @@ -1482,8 +1485,9 @@ function workshop_calendar_update(stdClass $workshop, $cmid) { // should not be set but just in case unset($event->id); } - // calendar_event::create will reuse a db record if the id field is set - calendar_event::create($event); + // update() will reuse a db record if the id field is set + $eventobj = new calendar_event($event); + $eventobj->update($event, false); } // delete any leftover events