From 4f910adaea055876b8908c4fee859cb95142867a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Monlla=C3=B3?= Date: Wed, 24 Jul 2019 20:07:46 +0200 Subject: [PATCH 1/2] MDL-66241 analytics: activities_due compatible with at-risk models --- course/classes/analytics/indicator/activities_due.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/course/classes/analytics/indicator/activities_due.php b/course/classes/analytics/indicator/activities_due.php index 425785173bc..b87da32734f 100644 --- a/course/classes/analytics/indicator/activities_due.php +++ b/course/classes/analytics/indicator/activities_due.php @@ -68,8 +68,10 @@ class activities_due extends \core_analytics\local\indicator\binary { */ protected function calculate_sample($sampleid, $sampleorigin, $starttime = false, $endtime = false) { + $user = $this->retrieve('user', $sampleid); + $actionevents = \core_calendar_external::get_calendar_action_events_by_timesort($starttime, $endtime, 0, 1, - true, $sampleid); + true, $user->id); if ($actionevents->events) { From a639cddc398b0127de170734edf7175e10f056e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Monlla=C3=B3?= Date: Wed, 24 Jul 2019 20:56:48 +0200 Subject: [PATCH 2/2] MDL-66241 analytics: Verify that activities_due works on at-risk --- .../fixtures/test_target_course_users.php | 2 +- course/tests/indicators_test.php | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/analytics/tests/fixtures/test_target_course_users.php b/analytics/tests/fixtures/test_target_course_users.php index 8907a3c5b7f..7be0a87f6d9 100644 --- a/analytics/tests/fixtures/test_target_course_users.php +++ b/analytics/tests/fixtures/test_target_course_users.php @@ -24,7 +24,7 @@ defined('MOODLE_INTERNAL') || die(); -require_once(__DIR__ . '/test_target_shortname.php'); +require_once(__DIR__ . '/test_target_site_users.php'); /** * Test target. diff --git a/course/tests/indicators_test.php b/course/tests/indicators_test.php index 1749a13a576..3ad47f95e89 100644 --- a/course/tests/indicators_test.php +++ b/course/tests/indicators_test.php @@ -28,6 +28,7 @@ defined('MOODLE_INTERNAL') || die(); global $CFG; require_once(__DIR__ . '/../../lib/completionlib.php'); require_once(__DIR__ . '/../../completion/criteria/completion_criteria_self.php'); +require_once(__DIR__ . '/../../analytics/tests/fixtures/test_target_course_users.php'); /** * Unit tests for core_course indicators. @@ -313,4 +314,30 @@ class core_course_indicators_testcase extends advanced_testcase { // Page social is level 1 (the lower level). $this->assertEquals($indicator::get_min_value(), $values[$cm2->id][0]); } + + /** + * test_activities_due + * + * @return void + */ + public function test_activities_due() { + global $DB; + + $this->resetAfterTest(true); + $this->setAdminuser(); + + $course1 = $this->getDataGenerator()->create_course(); + $user1 = $this->getDataGenerator()->create_user(); + $this->getDataGenerator()->enrol_user($user1->id, $course1->id, 'student'); + + $target = \core_analytics\manager::get_target('test_target_course_users'); + $indicators = array('\core_course\analytics\indicator\activities_due'); + foreach ($indicators as $key => $indicator) { + $indicators[$key] = \core_analytics\manager::get_indicator($indicator); + } + + $model = \core_analytics\model::create($target, $indicators); + $model->enable('\core\analytics\time_splitting\single_range'); + $model->train(); + } }