Merge branch '44255-27' of git://github.com/samhemelryk/moodle
[moodle.git] / user / view.php
index 27b1680..2e00875 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 // This file is part of Moodle - http://moodle.org/
 //
 // Moodle is free software: you can redistribute it and/or modify
@@ -18,9 +17,9 @@
 /**
  * Display profile for a particular user
  *
+ * @package core_user
  * @copyright 1999 Martin Dougiamas  http://dougiamas.com
  * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- * @package user
  */
 
 require_once("../config.php");
@@ -29,31 +28,32 @@ require_once($CFG->dirroot.'/tag/lib.php');
 require_once($CFG->libdir . '/filelib.php');
 require_once($CFG->libdir . '/badgeslib.php');
 
-$id        = optional_param('id', 0, PARAM_INT);   // user id
-$courseid  = optional_param('course', SITEID, PARAM_INT);   // course id (defaults to Site)
+$id        = optional_param('id', 0, PARAM_INT); // User id.
+$courseid  = optional_param('course', SITEID, PARAM_INT); // course id (defaults to Site).
 
-if (empty($id)) {            // See your own profile by default
+// See your own profile by default.
+if (empty($id)) {
     require_login();
     $id = $USER->id;
 }
 
-if ($courseid == SITEID) {   // Since Moodle 2.0 all site-level profiles are shown by profile.php
-    redirect($CFG->wwwroot.'/user/profile.php?id='.$id);  // Immediate redirect
+if ($courseid == SITEID) {   // Since Moodle 2.0 all site-level profiles are shown by profile.php.
+    redirect($CFG->wwwroot.'/user/profile.php?id='.$id);  // Immediate redirect.
 }
 
-$PAGE->set_url('/user/view.php', array('id'=>$id,'course'=>$courseid));
+$PAGE->set_url('/user/view.php', array('id' => $id, 'course' => $courseid));
 
-$user = $DB->get_record('user', array('id'=>$id), '*', MUST_EXIST);
-$course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
+$user = $DB->get_record('user', array('id' => $id), '*', MUST_EXIST);
+$course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
 $currentuser = ($user->id == $USER->id);
 
 $systemcontext = context_system::instance();
 $coursecontext = context_course::instance($course->id);
 $usercontext   = context_user::instance($user->id, IGNORE_MISSING);
 
-// Require login first
+// Require login first.
 if (isguestuser($user)) {
-    // can not view profile of guest - thre is nothing to see there
+    // Can not view profile of guest - thre is nothing to see there.
     print_error('invaliduserid');
 }
 
@@ -69,14 +69,14 @@ if (!empty($CFG->forceloginforprofiles)) {
 
 $PAGE->set_context($coursecontext);
 $PAGE->set_course($course);
-$PAGE->set_pagetype('course-view-' . $course->format);  // To get the blocks exactly like the course
-$PAGE->add_body_class('path-user');                     // So we can style it independently
+$PAGE->set_pagetype('course-view-' . $course->format);  // To get the blocks exactly like the course.
+$PAGE->add_body_class('path-user');                     // So we can style it independently.
 $PAGE->set_other_editing_capability('moodle/course:manageactivities');
 
 $isparent = false;
 
 if (!$currentuser and !$user->deleted
-  and $DB->record_exists('role_assignments', array('userid'=>$USER->id, 'contextid'=>$usercontext->id))
+  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,
     //       this way they may access the profile where they get overview of grades and child activity in course,
@@ -85,9 +85,9 @@ if (!$currentuser and !$user->deleted
     $isparent = true;
     $PAGE->navigation->set_userid_for_parent_checks($id);
 } else {
-    // normal course
+    // Normal course.
     require_login($course);
-    // what to do with users temporary accessing this course? should they see the details?
+    // What to do with users temporary accessing this course? should they see the details?
 }
 
 $strpersonalprofile = get_string('personalprofile');
@@ -96,10 +96,10 @@ $struser = get_string("user");
 
 $fullname = fullname($user, has_capability('moodle/site:viewfullnames', $coursecontext));
 
-/// Now test the actual capabilities and enrolment in course
+// Now test the actual capabilities and enrolment in course.
 if ($currentuser) {
-    // me
-    if (!is_viewing($coursecontext) && !is_enrolled($coursecontext)) { // Need to have full access to a course to see the rest of own info
+    if (!is_viewing($coursecontext) && !is_enrolled($coursecontext)) {
+        // Need to have full access to a course to see the rest of own info.
         echo $OUTPUT->header();
         echo $OUTPUT->heading(get_string('notenrolled', '', $fullname));
         if (!empty($_SERVER['HTTP_REFERER'])) {
@@ -110,20 +110,20 @@ if ($currentuser) {
     }
 
 } else {
-    // somebody else
+    // Somebody else.
     $PAGE->set_title("$strpersonalprofile: ");
     $PAGE->set_heading("$strpersonalprofile: ");
 
-    // check course level capabilities
-    if (!has_capability('moodle/user:viewdetails', $coursecontext) && // normal enrolled user or mnager
-        ($user->deleted or !has_capability('moodle/user:viewdetails', $usercontext))) {   // usually parent
+    // Check course level capabilities.
+    if (!has_capability('moodle/user:viewdetails', $coursecontext) && // Normal enrolled user or mnager.
+        ($user->deleted or !has_capability('moodle/user:viewdetails', $usercontext))) {   // Usually parent.
         print_error('cannotviewprofile');
     }
 
     if (!is_enrolled($coursecontext, $user->id)) {
         // TODO: the only potential problem is that managers and inspectors might post in forum, but the link
         //       to profile would not work - maybe a new capability - moodle/user:freely_acessile_profile_for_anybody
-        //       or test for course:inspect capability
+        //       or test for course:inspect capability.
         if (has_capability('moodle/role:assign', $coursecontext)) {
             $PAGE->navbar->add($fullname);
             echo $OUTPUT->header();
@@ -140,11 +140,11 @@ if ($currentuser) {
         exit;
     }
 
-    // If groups are in use and enforced throughout the course, then make sure we can meet in at least one course level group
+    // If groups are in use and enforced throughout the course, then make sure we can meet in at least one course level group.
     if (groups_get_course_groupmode($course) == SEPARATEGROUPS and $course->groupmodeforce
       and !has_capability('moodle/site:accessallgroups', $coursecontext) and !has_capability('moodle/site:accessallgroups', $coursecontext, $user->id)) {
         if (!isloggedin() or isguestuser()) {
-            // do not use require_login() here because we might have already used require_login($course)
+            // Do not use require_login() here because we might have already used require_login($course).
             redirect(get_login_url());
         }
         $mygroups = array_keys(groups_get_all_groups($course->id, $USER->id, $course->defaultgroupingid, 'g.id, g.name'));
@@ -225,31 +225,31 @@ if (is_mnet_remote_user($user)) {
 }
 
 echo '<div class="userprofilebox clearfix"><div class="profilepicture">';
-echo $OUTPUT->user_picture($user, array('size'=>100));
+echo $OUTPUT->user_picture($user, array('size' => 100));
 echo '</div>';
 
-// Print the description
+// Print the description.
 echo '<div class="descriptionbox"><div class="description">';
 if ($user->description && !isset($hiddenfields['description'])) {
-    if (!empty($CFG->profilesforenrolledusersonly) && !$DB->record_exists('role_assignments', array('userid'=>$id))) {
+    if (!empty($CFG->profilesforenrolledusersonly) && !$DB->record_exists('role_assignments', array('userid' => $id))) {
         echo get_string('profilenotshown', 'moodle');
     } else {
         if ($courseid == SITEID) {
             $user->description = file_rewrite_pluginfile_urls($user->description, 'pluginfile.php', $usercontext->id, 'user', 'profile', null);
         } else {
-            // we have to make a little detour thought the course context to verify the access control for course profile
+            // We have to make a little detour thought the course context to verify the access control for course profile.
             $user->description = file_rewrite_pluginfile_urls($user->description, 'pluginfile.php', $coursecontext->id, 'user', 'profile', $user->id);
         }
-        $options = array('overflowdiv'=>true);
+        $options = array('overflowdiv' => true);
         echo format_text($user->description, $user->descriptionformat, $options);
     }
 }
 echo '</div>';
 
 
-// Print all the little details in a list
+// Print all the little details in a list.
 
-echo html_writer::start_tag('dl', array('class'=>'list'));
+echo html_writer::start_tag('dl', array('class' => 'list'));
 // Show email if any of the following conditions match.
 // 1. User is viewing his own profile.
 // 2. Has allowed everyone to see email
@@ -264,9 +264,9 @@ if ($currentuser
     echo html_writer::tag('dd', obfuscate_mailto($user->email, ''));
 }
 
-// Show last time this user accessed this course
+// Show last time this user accessed this course.
 if (!isset($hiddenfields['lastaccess'])) {
-    if ($lastaccess = $DB->get_record('user_lastaccess', array('userid'=>$user->id, 'courseid'=>$course->id))) {
+    if ($lastaccess = $DB->get_record('user_lastaccess', array('userid' => $user->id, 'courseid' => $course->id))) {
         $datestring = userdate($lastaccess->timeaccess)."&nbsp; (".format_time(time() - $lastaccess->timeaccess).")";
     } else {
         $datestring = get_string("never");
@@ -275,18 +275,18 @@ if (!isset($hiddenfields['lastaccess'])) {
     echo html_writer::tag('dd', $datestring);
 }
 
-// Show roles in this course
+// Show roles in this course.
 if ($rolestring = get_user_roles_in_course($id, $course->id)) {
     echo html_writer::tag('dt', get_string('roles'));
     echo html_writer::tag('dd', $rolestring);
 }
 
-// Show groups this user is in
+// Show groups this user is in.
 if (!isset($hiddenfields['groups'])) {
     $accessallgroups = has_capability('moodle/site:accessallgroups', $coursecontext);
     if ($usergroups = groups_get_all_groups($course->id, $user->id)) {
         $groupstr = '';
-        foreach ($usergroups as $group){
+        foreach ($usergroups as $group) {
             if ($course->groupmode == SEPARATEGROUPS and !$accessallgroups and $user->id != $USER->id) {
                 if (!groups_is_member($group->id, $user->id)) {
                     continue;
@@ -296,7 +296,7 @@ if (!isset($hiddenfields['groups'])) {
             if ($course->groupmode != NOGROUPS) {
                 $groupstr .= ' <a href="'.$CFG->wwwroot.'/user/index.php?id='.$course->id.'&amp;group='.$group->id.'">'.format_string($group->name).'</a>,';
             } else {
-                $groupstr .= ' '.format_string($group->name); // the user/index.php shows groups only when course in group mode
+                $groupstr .= ' '.format_string($group->name); // The user/index.php shows groups only when course in group mode.
             }
         }
         if ($groupstr !== '') {
@@ -306,9 +306,9 @@ if (!isset($hiddenfields['groups'])) {
     }
 }
 
-// Show other courses they may be in
+// Show other courses they may be in.
 if (!isset($hiddenfields['mycourses'])) {
-    if ($mycourses = enrol_get_all_users_courses($user->id, true, NULL, 'visible DESC,sortorder ASC')) {
+    if ($mycourses = enrol_get_all_users_courses($user->id, true, null, 'visible DESC,sortorder ASC')) {
         $shown = 0;
         $courselisting = '';
         foreach ($mycourses as $mycourse) {
@@ -316,7 +316,7 @@ if (!isset($hiddenfields['mycourses'])) {
                 context_helper::preload_from_record($mycourse);
                 $ccontext = context_course::instance($mycourse->id);
                 $cfullname = $ccontext->get_context_name(false);
-                if ($mycourse->id != $course->id){
+                if ($mycourse->id != $course->id) {
                     $class = '';
                     if ($mycourse->visible == 0) {
                         if (!has_capability('moodle/course:viewhiddencourses', $ccontext)) {
@@ -338,7 +338,7 @@ if (!isset($hiddenfields['mycourses'])) {
             }
         }
         echo html_writer::tag('dt', get_string('courseprofiles'));
-        echo html_writer::tag('dd', rtrim($courselisting,', '));
+        echo html_writer::tag('dd', rtrim($courselisting, ', '));
     }
 }
 
@@ -365,7 +365,7 @@ if (has_capability('moodle/user:viewlastip', $usercontext) && !isset($hiddenfiel
 }
 echo html_writer::end_tag('dl');
 echo "</div></div>"; // Closing desriptionbox and userprofilebox.
-// Print messaging link if allowed
+// Print messaging link if allowed.
 if (isloggedin() && has_capability('moodle/site:sendmessage', $usercontext)
     && !empty($CFG->messaging) && !isguestuser() && !isguestuser($user) && ($USER->id != $user->id)) {
     echo '<div class="messagebox">';
@@ -383,16 +383,13 @@ if ($currentuser || has_capability('moodle/user:viewdetails', $usercontext) || h
     echo '</div>';
 }
 
-/// TODO Add more useful overview info for teachers here, see below
-
-/// Show links to notes made about this student (must click to display, for privacy)
-
-/// Recent comments made in this course
-
-/// Recent blogs associated with this course and items in it
+// TODO Add more useful overview info for teachers here, see below.
+// Show links to notes made about this student (must click to display, for privacy).
+// Recent comments made in this course.
+// Recent blogs associated with this course and items in it.
 
 
 
-echo '</div>';  // userprofile class
+echo '</div>';  // Userprofile class.
 
 echo $OUTPUT->footer();