MDL-65562 analytics: New get_prediction_actions API

This commit is contained in:
David Monllaó 2019-05-14 12:04:51 +02:00
parent 4de032eba3
commit 1d5cb38292
2 changed files with 38 additions and 0 deletions

View File

@ -1348,6 +1348,30 @@ class model {
return [$current, $predictions];
}
/**
* Returns the actions executed by users on the predictions.
*
* @param \context|null $context
* @return \moodle_recordset
*/
public function get_prediction_actions(?\context $context): \moodle_recordset {
global $DB;
$sql = "SELECT apa.id, apa.predictionid, apa.userid, apa.actionname, apa.timecreated,
ap.contextid, ap.sampleid, ap.rangeindex, ap.prediction, ap.predictionscore
FROM {analytics_prediction_actions} apa
JOIN {analytics_predictions} ap ON ap.id = apa.predictionid
WHERE ap.modelid = :modelid";
$params = ['modelid' => $this->model->id];
if ($context) {
$sql .= " AND ap.contextid = :contextid";
$params['contextid'] = $context->id;
}
return $DB->get_recordset_sql($sql, $params);
}
/**
* Returns the sample data of a prediction.
*

View File

@ -96,11 +96,17 @@ class analytics_prediction_actions_testcase extends advanced_testcase {
$prediction = reset($predictions);
$prediction->action_executed(\core_analytics\prediction::ACTION_FIXED, $this->model->get_target());
$recordset = $this->model->get_prediction_actions($this->context);
$this->assertCount(1, $recordset);
$recordset->close();
$this->assertEquals(1, $DB->count_records('analytics_prediction_actions'));
$action = $DB->get_record('analytics_prediction_actions', array('userid' => $this->teacher2->id));
$this->assertEquals(\core_analytics\prediction::ACTION_FIXED, $action->actionname);
$prediction->action_executed(\core_analytics\prediction::ACTION_NOT_USEFUL, $this->model->get_target());
$recordset = $this->model->get_prediction_actions($this->context);
$this->assertCount(2, $recordset);
$recordset->close();
$this->assertEquals(2, $DB->count_records('analytics_prediction_actions'));
}
@ -125,6 +131,10 @@ class analytics_prediction_actions_testcase extends advanced_testcase {
$prediction = reset($predictions);
$prediction->action_executed(\core_analytics\prediction::ACTION_FIXED, $this->model->get_target());
$recordset = $this->model->get_prediction_actions($this->context);
$this->assertCount(1, $recordset);
$recordset->close();
list($ignored, $predictions) = $this->model->get_predictions($this->context, true);
$this->assertCount(1, $predictions);
list($ignored, $predictions) = $this->model->get_predictions($this->context, false);
@ -136,5 +146,9 @@ class analytics_prediction_actions_testcase extends advanced_testcase {
$this->assertCount(2, $predictions);
list($ignored, $predictions) = $this->model->get_predictions($this->context, false);
$this->assertCount(2, $predictions);
$recordset = $this->model->get_prediction_actions($this->context);
$this->assertCount(1, $recordset);
$recordset->close();
}
}