MDL-49763 webservices: Handle correctly deleted users for ratings

This commit is contained in:
Juan Leyva 2015-04-10 22:21:34 +02:00
parent d7551257a0
commit d982713ad3
2 changed files with 12 additions and 3 deletions

View File

@ -139,13 +139,19 @@ class core_rating_external extends external_api {
if ($rating->rating > $maxrating) {
$rating->rating = $maxrating;
}
$usercontext = context_user::instance($rating->userid);
$profileimageurl = moodle_url::make_webservice_pluginfile_url($usercontext->id, 'user', 'icon', null, '/', 'f1');
$profileimageurl = '';
// We can have ratings from deleted users. In this case, those users don't have a valid context.
$usercontext = context_user::instance($rating->userid, IGNORE_MISSING);
if ($usercontext) {
$profileimageurl = moodle_url::make_webservice_pluginfile_url($usercontext->id, 'user', 'icon', null,
'/', 'f1')->out(false);
}
$result = array();
$result['id'] = $rating->id;
$result['userid'] = $rating->userid;
$result['userpictureurl'] = $profileimageurl->out(false);
$result['userpictureurl'] = $profileimageurl;
$result['userfullname'] = fullname($rating);
$result['rating'] = $scalemenu[$rating->rating];
$result['timemodified'] = $rating->timemodified;

View File

@ -103,6 +103,9 @@ class core_rating_externallib_testcase extends externallib_advanced_testcase {
$rating2->timemodified = time() + 1;
$rating2->id = $DB->insert_record('rating', $rating2);
// Delete teacher2, we must still receive the ratings.
delete_user($teacher2);
// Teachers can see all the ratings.
$this->setUser($teacher1);