diff --git a/lib/classes/event/base.php b/lib/classes/event/base.php index c77e0ab5ae5..2ccec1d1fb3 100644 --- a/lib/classes/event/base.php +++ b/lib/classes/event/base.php @@ -46,7 +46,7 @@ defined('MOODLE_INTERNAL') || die(); * @property-read int $contextlevel * @property-read int $contextinstanceid * @property-read int $userid who did this? - * @property-read int $courseid + * @property-read int $courseid the courseid of the event context, 0 for contexts above course * @property-read int $relateduserid * @property-read int $anonymous 1 means event should not be visible in reports, 0 means normal event, * create() argument may be also true/false. diff --git a/lib/classes/event/question_category_created.php b/lib/classes/event/question_category_created.php index a620065544c..1aba878322b 100644 --- a/lib/classes/event/question_category_created.php +++ b/lib/classes/event/question_category_created.php @@ -61,20 +61,31 @@ class question_category_created extends base { * @return \moodle_url */ public function get_url() { - if ($this->contextlevel == CONTEXT_MODULE) { - return new \moodle_url('/question/category.php', array('cmid' => $this->contextinstanceid)); - } else { - return new \moodle_url('/question/category.php', array('courseid' => $this->courseid)); + if ($this->courseid) { + $cat = $this->objectid . ',' . $this->contextid; + if ($this->contextlevel == CONTEXT_MODULE) { + return new \moodle_url('/question/edit.php', array('cmid' => $this->contextinstanceid, 'cat' => $cat)); + } + return new \moodle_url('/question/edit.php', array('courseid' => $this->courseid, 'cat' => $cat)); } + + // Bad luck, there does not seem to be any simple intelligent way + // to go to specific question category in context above course, + // let's try to edit it from frontpage which may surprisingly work. + return new \moodle_url('/question/category.php', array('courseid' => SITEID, 'edit' => $this->objectid)); } /** * Return the legacy event log data. * - * @return array + * @return array|null */ protected function get_legacy_logdata() { - return array($this->courseid, 'quiz', 'addcategory', 'view.php?id=' . $this->contextinstanceid, - $this->objectid, $this->contextinstanceid); + if ($this->contextlevel == CONTEXT_MODULE) { + return array($this->courseid, 'quiz', 'addcategory', 'view.php?id=' . $this->contextinstanceid, + $this->objectid, $this->contextinstanceid); + } + // This is not related to individual quiz at all. + return null; } }