Merge branch 'MDL-27564-wip' of git://github.com/mouneyrac/moodle with changes for...
authorSam Hemelryk <sam@moodle.com>
Wed, 8 Jun 2011 02:38:29 +0000 (10:38 +0800)
committerSam Hemelryk <sam@moodle.com>
Wed, 8 Jun 2011 02:38:29 +0000 (10:38 +0800)
1  2 
enrol/externallib.php

@@@ -64,7 -64,7 +64,12 @@@ class moodle_enrol_external extends ext
  
          // Do basic automatic PARAM checks on incoming data, using params description
          // If any problems are found then exceptions are thrown with helpful error messages
--        $params = self::validate_parameters(self::get_enrolled_users_parameters(), array('courseid'=>$courseid, 'withcapability'=>$withcapability, 'groupid'=>$groupid, 'onlyactive'=>$onlyactive));
++        $params = self::validate_parameters(self::get_enrolled_users_parameters(), array(
++            'courseid'=>$courseid,
++            'withcapability'=>$withcapability,
++            'groupid'=>$groupid,
++            'onlyactive'=>$onlyactive)
++        );
  
          $coursecontext = get_context_instance(CONTEXT_COURSE, $params['courseid']);
          if ($courseid == SITEID) {
          try {
              self::validate_context($context);
          } catch (Exception $e) {
--                $exceptionparam = new stdClass();
--                $exceptionparam->message = $e->getMessage();
--                $exceptionparam->courseid = $params['courseid'];
--                throw new moodle_exception(
--                        get_string('errorcoursecontextnotvalid' , 'webservice', $exceptionparam));
++            $exceptionparam = new stdClass();
++            $exceptionparam->message = $e->getMessage();
++            $exceptionparam->courseid = $params['courseid'];
++            throw new moodle_exception(get_string('errorcoursecontextnotvalid' , 'webservice', $exceptionparam));
          }
  
          if ($courseid == SITEID) {
          if ($withcapability) {
              require_capability('moodle/role:review', $coursecontext);
          }
--        if ($groupid) {
--            if (groups_is_member($groupid)) {
--                require_capability('moodle/site:accessallgroups', $coursecontext);
--            }
++        if ($groupid && groups_is_member($groupid)) {
++            require_capability('moodle/site:accessallgroups', $coursecontext);
          }
          if ($onlyactive) {
              require_capability('moodle/course:enrolreview', $coursecontext);
          }
  
-         list($sql, $params) =  get_enrolled_sql($coursecontext, $withcapability, $groupid, $onlyactive);
-         $sql = "SELECT DISTINCT ue.userid, e.courseid
+         list($sqlparams, $params) =  get_enrolled_sql($coursecontext, $withcapability, $groupid, $onlyactive);
+         $sql = "SELECT ue.userid, e.courseid, u.firstname, u.lastname, u.username, c.id as usercontextid
                    FROM {user_enrolments} ue
                    JOIN {enrol} e ON (e.id = ue.enrolid)
-                  WHERE e.courseid = :courseid AND ue.userid IN ($sql)";
+                   JOIN {user} u ON (ue.userid = u.id)
+                   JOIN {context} c ON (u.id = c.instanceid AND contextlevel = " . CONTEXT_USER . ")
+                   WHERE e.courseid = :courseid AND ue.userid IN ($sqlparams)
+                   GROUP BY ue.userid, e.courseid, u.firstname, u.lastname, u.username, c.id";
          $params['courseid'] = $courseid;
          $enrolledusers = $DB->get_records_sql($sql, $params);
          $result = array();
++        $isadmin = is_siteadmin($USER);
++        $canviewfullnames = has_capability('moodle/site:viewfullnames', $context);
          foreach ($enrolledusers as $enrolleduser) {
-             $result[] = array('courseid' => $enrolleduser->courseid,
-                 'userid' => $enrolleduser->userid);
+             $profilimgurl = moodle_url::make_pluginfile_url($enrolleduser->usercontextid, 'user', 'icon', NULL, '/', 'f1');
+             $profilimgurlsmall = moodle_url::make_pluginfile_url($enrolleduser->usercontextid, 'user', 'icon', NULL, '/', 'f2');
 -            $resultuser = array('courseid' => $enrolleduser->courseid,
 -                'userid' => $enrolleduser->userid, 'fullname' => fullname($enrolleduser),
++            $resultuser = array(
++                'courseid' => $enrolleduser->courseid,
++                'userid' => $enrolleduser->userid, 
++                'fullname' => fullname($enrolleduser),
+                 'profileimgurl' => $profilimgurl->out(false),
 -                'profileimgurlsmall' => $profilimgurlsmall->out(false));
 -            //check if we can return username
 -            $isadmin = is_siteadmin($USER);
++                'profileimgurlsmall' => $profilimgurlsmall->out(false)
++            );
++            // check if we can return username
+             if ($isadmin) {
+                 $resultuser['username'] = $enrolleduser->username;
+             }
 -            //check if we can return first and last name
 -            if ($isadmin or has_capability('moodle/site:viewfullnames', $context)) {
++            // check if we can return first and last name
++            if ($isadmin or $canviewfullnames) {
+                 $resultuser['firstname'] = $enrolleduser->firstname;
+                 $resultuser['lastname'] = $enrolleduser->lastname;
+             }
+             $result[] = $resultuser;
          }
  
          return $result;
          );
      }
  
--
      /**
       * Returns description of method parameters
       * @return external_function_parameters