From 08258a6dfb095231e27fe509376495644578c3e2 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 347464ccbb4..748aaf2f258 100644 --- a/mod/workshop/lib.php +++ b/mod/workshop/lib.php @@ -1441,8 +1441,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) { @@ -1455,8 +1456,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) { @@ -1469,8 +1471,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) { @@ -1483,8 +1486,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