MDL-58087 core_calendar: Don't process events not created by modules

Our API infrastructure currently only deals with events created
by course modules. Site, user, etc events can't be dealt with.

Part of MDL-55611 epic.
This commit is contained in:
Cameron Ball
2017-04-04 11:01:40 +01:00
committed by Dan Poltawski
parent aa1cdff5f6
commit f8a3e28b16
2 changed files with 7 additions and 4 deletions
@@ -117,6 +117,10 @@ class core_container {
$getcallback('action'),
$getcallback('visibility'),
function ($dbrow) {
if (empty($dbrow->modulename)) {
return false;
}
$instances = get_fast_modinfo($dbrow->courseid)->instances;
if (!isset($instances[$dbrow->modulename]) || !isset($instances[$dbrow->modulename][$dbrow->instance])) {
@@ -127,7 +127,7 @@ abstract class event_abstract_factory implements event_factory_interface {
$module = null;
$subscription = null;
if ($dbrow->courseid == 0) {
if ($dbrow->courseid == 0 && !empty($dbrow->modulename)) {
$cm = get_coursemodule_from_instance($dbrow->modulename, $dbrow->instance);
$dbrow->courseid = get_course($cm->course)->id;
}
@@ -149,15 +149,14 @@ abstract class event_abstract_factory implements event_factory_interface {
});
}
if ($dbrow->instance && $dbrow->modulename) {
$modulename = $dbrow->modulename;
if ($dbrow->instance && !empty($dbrow->modulename)) {
$module = new module_std_proxy(
$dbrow->modulename,
$dbrow->instance,
function($modulename, $instance) {
return \core_calendar\api::get_module_cached(
$this->modulecachereference,
$modulename,
$dbrow->modulename,
$instance
);
}