From 589071ba340d04dc971de4bda1fb3a178a4114b4 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Fri, 25 Nov 2011 08:46:20 +0100 Subject: [PATCH 1/5] MDL-30467 no course profile for deleted users --- user/view.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/user/view.php b/user/view.php index ce82f8ed4cc..87f3a00d8b1 100644 --- a/user/view.php +++ b/user/view.php @@ -48,7 +48,7 @@ $currentuser = ($user->id == $USER->id); $systemcontext = get_context_instance(CONTEXT_SYSTEM); $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id); -$usercontext = get_context_instance(CONTEXT_USER, $user->id, MUST_EXIST); +$usercontext = get_context_instance(CONTEXT_USER, $user->id, IGNORE_MISSING); // Require login first if (isguestuser($user)) { @@ -68,7 +68,7 @@ $PAGE->set_other_editing_capability('moodle/course:manageactivities'); $isparent = false; -if (!$currentuser +if (!$currentuser and !$user->deleted and $DB->record_exists('role_assignments', array('userid'=>$USER->id, 'contextid'=>$usercontext->id)) and has_capability('moodle/user:viewdetails', $usercontext)) { // TODO: very ugly hack - do not force "parents" to enrol into course their child is enrolled in, @@ -109,7 +109,7 @@ if ($currentuser) { // check course level capabilities if (!has_capability('moodle/user:viewdetails', $coursecontext) && // normal enrolled user or mnager - !has_capability('moodle/user:viewdetails', $usercontext)) { // usually parent + ($user->deleted or !has_capability('moodle/user:viewdetails', $usercontext))) { // usually parent print_error('cannotviewprofile'); } From d05e39b0d9b8648fcec1e31eacd8da3f1bacf522 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Fri, 25 Nov 2011 08:46:38 +0100 Subject: [PATCH 2/5] MDL-30467 no system profile for deleted users --- user/profile.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/user/profile.php b/user/profile.php index 4919d230769..e29090179a7 100644 --- a/user/profile.php +++ b/user/profile.php @@ -57,6 +57,15 @@ if (!empty($CFG->forceloginforprofiles)) { $userid = $userid ? $userid : $USER->id; // Owner of the page $user = $DB->get_record('user', array('id' => $userid)); + +if ($user->deleted) { + $PAGE->set_context(get_context_instance(CONTEXT_SYSTEM)); + echo $OUTPUT->header(); + echo $OUTPUT->heading(get_string('userdeleted')); + echo $OUTPUT->footer(); + die; +} + $currentuser = ($user->id == $USER->id); $context = $usercontext = get_context_instance(CONTEXT_USER, $userid, MUST_EXIST); From 368f5b7b4c626e1e5e63ccd18703548373913f26 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Fri, 25 Nov 2011 08:50:45 +0100 Subject: [PATCH 3/5] MDL-30467 do profiles in tags for deleted users --- tag/locallib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tag/locallib.php b/tag/locallib.php index 74c788e77f0..7b7cd460185 100644 --- a/tag/locallib.php +++ b/tag/locallib.php @@ -324,7 +324,7 @@ function tag_print_user_box($user, $return=false) { $usercontext = get_context_instance(CONTEXT_USER, $user->id); $profilelink = ''; - if ( has_capability('moodle/user:viewdetails', $usercontext) || has_coursecontact_role($user->id) ) { + if ($usercontext and (has_capability('moodle/user:viewdetails', $usercontext) || has_coursecontact_role($user->id))) { $profilelink = $CFG->wwwroot .'/user/view.php?id='. $user->id; } From 5bca744cade79c7ef5e31450caef29e2ab91b6ad Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Sat, 26 Nov 2011 09:07:00 +0100 Subject: [PATCH 4/5] MDL-30467 skip deleted users during pix upgrade --- lib/db/upgradelib.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/db/upgradelib.php b/lib/db/upgradelib.php index 84ce36260e9..6f1455fc80c 100644 --- a/lib/db/upgradelib.php +++ b/lib/db/upgradelib.php @@ -192,7 +192,10 @@ function upgrade_migrate_user_icons() { upgrade_set_timeout(60); /// Give upgrade at least 60 more seconds $pbar->update($i, $count, "Migrated user icons $i/$count."); - $context = get_context_instance(CONTEXT_USER, $user->id); + if (!$context = get_context_instance(CONTEXT_USER, $user->id)) { + // deleted user + continue; + } if ($fs->file_exists($context->id, 'user', 'icon', 0, '/', 'f1.jpg')) { // already converted! From 8e470797e39dc1018d7257749431d2dc09bddfc6 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Sat, 26 Nov 2011 09:07:23 +0100 Subject: [PATCH 5/5] MDL-30467 notify devs deleted users do not have context --- lib/upgrade.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/upgrade.txt b/lib/upgrade.txt index a624a4dbe43..f8f3af8bb23 100644 --- a/lib/upgrade.txt +++ b/lib/upgrade.txt @@ -10,6 +10,7 @@ removed unused libraries: API changes: * new admin/tool plugin type * new context API - old API is still available +* deleted users do not have context any more * removed global search