From fabe98ac928803081079783748414f3c41804db1 Mon Sep 17 00:00:00 2001 From: Ankit Agarwal Date: Thu, 30 Nov 2017 13:25:42 +0530 Subject: [PATCH] MDL-60861 analytics: Enabling a model requires timesplitting --- analytics/classes/model.php | 4 ++++ analytics/tests/model_test.php | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/analytics/classes/model.php b/analytics/classes/model.php index d8816458511..0bee65002ca 100644 --- a/analytics/classes/model.php +++ b/analytics/classes/model.php @@ -1013,6 +1013,10 @@ class model { if (!$this->is_static()) { $this->model->trained = 0; } + } else if (empty($this->model->timesplitting)) { + // A valid timesplitting method needs to be supplied before a model can be enabled. + throw new \moodle_exception('invalidtimesplitting', 'analytics', '', $this->model->id); + } // Purge pages with insights as this may change things. diff --git a/analytics/tests/model_test.php b/analytics/tests/model_test.php index 2685b64bbcb..d5d0153e9ac 100644 --- a/analytics/tests/model_test.php +++ b/analytics/tests/model_test.php @@ -226,7 +226,7 @@ class analytics_model_testcase extends advanced_testcase { $this->model->mark_as_trained(); $this->assertEquals($originaluniqueid, $this->model->get_unique_id()); - $this->model->enable(); + $this->model->enable('\core\analytics\time_splitting\deciles'); $this->assertEquals($originaluniqueid, $this->model->get_unique_id()); // Wait 1 sec so the timestamp changes.