From febc768ab5c5c9456ab27562f25fdd21cf473ca1 Mon Sep 17 00:00:00 2001
From: Dan Poltawski <dan.poltawski@lancaster.ac.uk>
Date: Thu, 19 Feb 2009 13:02:41 +0000
Subject: [PATCH] MDL-18314 - hacky proof of concept 'capability cache'

---
 admin/uploaduser.php |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/admin/uploaduser.php b/admin/uploaduser.php
index 111fa7c..dccf3e6 100755
--- a/admin/uploaduser.php
+++ b/admin/uploaduser.php
@@ -583,6 +583,7 @@ if ($formdata = $mform->is_cancelled()) {
                 }
                 $ccache[$shortname] = $course;
                 $ccache[$shortname]->groups = null;
+                $ccache[$shortname]->canview = get_users_by_capability(get_context_instance(CONTEXT_COURSE, $course->id), 'moodle/course:view', 'u.id', '','','','','',false);
             }
             $courseid      = $ccache[$shortname]->id;
             $coursecontext = get_context_instance(CONTEXT_COURSE, $courseid);
@@ -627,6 +628,7 @@ if ($formdata = $mform->is_cancelled()) {
                 $a->course = $shortname;
                 $a->role   = $rolecache[$rid]->name;
                 if (role_assign($rid, $user->id, 0, $coursecontext->id)) {
+                    $ccache[$shortname]->canview[$user->id] = 1;
                     $upt->track('enrolments', get_string('enrolledincourserole', '', $a));
                 } else {
                     $upt->track('enrolments', get_string('enrolledincoursenotrole', '', $a), 'error');
@@ -636,7 +638,7 @@ if ($formdata = $mform->is_cancelled()) {
             // find group to add to
             if (!empty($user->{'group'.$i})) {
                 // make sure user is enrolled into course before adding into groups
-                if (!has_capability('moodle/course:view', $coursecontext, $user->id, false)) {
+                if (! isset($ccache[$shortname]->canview[$user->id])){
                     $upt->track('enrolments', get_string('addedtogroupnotenrolled', '', $gname), 'error');
                     continue;
                 }
@@ -991,4 +993,4 @@ function uu_allowed_roles($shortname=false) {
 
     return $choices;
 }
-?>
\ No newline at end of file
+?>
-- 
1.5.6.5

