Merge branch '44255-27' of git://github.com/samhemelryk/moodle
authorDamyon Wiese <damyon@moodle.com>
Tue, 25 Feb 2014 06:14:31 +0000 (14:14 +0800)
committerDamyon Wiese <damyon@moodle.com>
Tue, 25 Feb 2014 06:14:31 +0000 (14:14 +0800)
Conflicts:
user/profile.php

65 files changed:
user/action_redir.php
user/addnote.php
user/edit.php
user/edit_form.php
user/editadvanced.php
user/editadvanced_form.php
user/editlib.php
user/emailupdate.php
user/externallib.php
user/files.php
user/files_form.php
user/filters/checkbox.php
user/filters/cohort.php
user/filters/courserole.php
user/filters/date.php
user/filters/globalrole.php
user/filters/lib.php
user/filters/profilefield.php
user/filters/select.php
user/filters/simpleselect.php
user/filters/text.php
user/filters/user_filter_forms.php
user/filters/yesno.php
user/groupaddnote.php
user/grouppix.php
user/index.php
user/lib.php
user/managetoken.php
user/messageselect.php
user/pix.php
user/pixgroup.php
user/policy.php
user/portfolio.php
user/portfoliologs.php
user/profile.php
user/profile/definelib.php
user/profile/field/checkbox/define.class.php
user/profile/field/checkbox/field.class.php
user/profile/field/checkbox/lang/en/profilefield_checkbox.php
user/profile/field/checkbox/version.php
user/profile/field/datetime/define.class.php
user/profile/field/datetime/field.class.php
user/profile/field/menu/define.class.php
user/profile/field/menu/field.class.php
user/profile/field/menu/lang/en/profilefield_menu.php
user/profile/field/menu/version.php
user/profile/field/text/define.class.php
user/profile/field/text/field.class.php
user/profile/field/text/lang/en/profilefield_text.php
user/profile/field/text/version.php
user/profile/field/textarea/define.class.php
user/profile/field/textarea/field.class.php
user/profile/field/textarea/lang/en/profilefield_textarea.php
user/profile/field/textarea/version.php
user/profile/index.php
user/profile/index_category_form.php
user/profile/index_field_form.php
user/profile/lib.php
user/profilesys.php
user/renderer.php
user/repository.php
user/selector/lib.php
user/selector/module.js
user/selector/search.php
user/view.php

index 2135931..0e9ae10 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
@@ -20,7 +19,7 @@
  *
  * @copyright 1999 Martin Dougiamas  http://dougiamas.com
  * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- * @package user
+ * @package core_user
  */
 
 require_once("../config.php");
@@ -28,9 +27,9 @@ require_once("../config.php");
 $formaction = required_param('formaction', PARAM_FILE);
 $id = required_param('id', PARAM_INT);
 
-$PAGE->set_url('/user/action_redir.php', array('formaction'=>$formaction,'id'=>$id));
+$PAGE->set_url('/user/action_redir.php', array('formaction' => $formaction, 'id' => $id));
 
-// Add every page will be redirected by this script
+// Add every page will be redirected by this script.
 $actions = array(
         'messageselect.php',
         'addnote.php',
index 75f06ab..540423a 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
  *
  * @copyright 1999 Martin Dougiamas  http://dougiamas.com
  * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- * @package user
+ * @package core_user
  */
 
 require_once("../config.php");
 require_once($CFG->dirroot .'/notes/lib.php');
 
-$id    = required_param('id', PARAM_INT);              // course id
-$users = optional_param_array('userid', array(), PARAM_INT); // array of user id
-$contents = optional_param_array('contents', array(), PARAM_RAW); // array of user notes
-$states = optional_param_array('states', array(), PARAM_ALPHA); // array of notes states
-
-$PAGE->set_url('/user/addnote.php', array('id'=>$id));
+$id    = required_param('id', PARAM_INT);              // Course id.
+$users = optional_param_array('userid', array(), PARAM_INT); // Array of user id.
+$contents = optional_param_array('contents', array(), PARAM_RAW); // Array of user notes.
+$states = optional_param_array('states', array(), PARAM_ALPHA); // Array of notes states.
+$PAGE->set_url('/user/addnote.php', array('id' => $id));
 
-if (! $course = $DB->get_record('course', array('id'=>$id))) {
+if (! $course = $DB->get_record('course', array('id' => $id))) {
     print_error('invalidcourseid');
 }
 
 $context = context_course::instance($id);
 require_login($course);
 
-// to create notes the current user needs a capability
+// To create notes the current user needs a capability.
 require_capability('moodle/notes:manage', $context);
 
 if (empty($CFG->enablenotes)) {
@@ -56,7 +54,7 @@ if (!empty($users) && confirm_sesskey()) {
     $note->courseid = $id;
     $note->format = FORMAT_PLAIN;
     foreach ($users as $k => $v) {
-        if (!$user = $DB->get_record('user', array('id'=>$v)) || empty($contents[$k])) {
+        if (!$user = $DB->get_record('user', array('id' => $v)) || empty($contents[$k])) {
             continue;
         }
         $note->id = 0;
@@ -68,8 +66,7 @@ if (!empty($users) && confirm_sesskey()) {
     redirect("$CFG->wwwroot/user/index.php?id=$id");
 }
 
-/// Print headers
-
+// Print headers.
 $straddnote = get_string('addnewnote', 'notes');
 
 $PAGE->navbar->add($straddnote);
@@ -77,8 +74,7 @@ $PAGE->set_title("$course->shortname: ".get_string('extendenrol'));
 $PAGE->set_heading($course->fullname);
 
 echo $OUTPUT->header();
-// this will contain all available the based On select options, but we'll disable some on them on a per user basis
-
+// This will contain all available the based On select options, but we'll disable some on them on a per user basis.
 echo $OUTPUT->heading($straddnote);
 echo '<form method="post" action="addnote.php">';
 echo '<fieldset class="invisiblefieldset">';
@@ -91,22 +87,23 @@ $table->head  = array (get_string('fullnameuser'),
     get_string('publishstate', 'notes') . $OUTPUT->help_icon('publishstate', 'notes'),
     );
 $table->align = array ('left', 'center', 'center');
-$state_names = note_get_state_names();
+$statenames = note_get_state_names();
 
-// the first time list hack
+// The first time list hack.
 if (empty($users) and $post = data_submitted()) {
     foreach ($post as $k => $v) {
-        if (preg_match('/^user(\d+)$/',$k,$m)) {
+        if (preg_match('/^user(\d+)$/', $k, $m)) {
             $users[] = $m[1];
         }
     }
 }
 foreach ($users as $k => $v) {
-    if(!$user = $DB->get_record('user', array('id'=>$v))) {
+    if (!$user = $DB->get_record('user', array('id' => $v))) {
         continue;
     }
     $checkbox = html_writer::label(get_string('selectnotestate', 'notes'), 'menustates', false, array('class' => 'accesshide'));
-    $checkbox .= html_writer::select($state_names, 'states[' . $k . ']', empty($states[$k]) ? NOTES_STATE_PUBLIC : $states[$k], false, array('id' => 'menustates'));
+    $checkbox .= html_writer::select($statenames, 'states[' . $k . ']',
+        empty($states[$k]) ? NOTES_STATE_PUBLIC : $states[$k], false, array('id' => 'menustates'));
     $table->data[] = array(
         '<input type="hidden" name="userid['.$k.']" value="'.$v.'" />'. fullname($user, true),
         '<textarea name="contents['. $k . ']" rows="2" cols="40" spellcheck="true">' . strip_tags(@$contents[$k]) . '</textarea>',
index b17eb98..c15475a 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
@@ -20,7 +19,7 @@
  *
  * @copyright 1999 Martin Dougiamas  http://dougiamas.com
  * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- * @package user
+ * @package core_user
  */
 
 require_once('../config.php');
@@ -30,16 +29,16 @@ require_once($CFG->dirroot.'/user/editlib.php');
 require_once($CFG->dirroot.'/user/profile/lib.php');
 require_once($CFG->dirroot.'/user/lib.php');
 
-//HTTPS is required in this page when $CFG->loginhttps enabled
+// HTTPS is required in this page when $CFG->loginhttps enabled.
 $PAGE->https_required();
 
-$userid = optional_param('id', $USER->id, PARAM_INT);    // user id
-$course = optional_param('course', SITEID, PARAM_INT);   // course id (defaults to Site)
-$cancelemailchange = optional_param('cancelemailchange', 0, PARAM_INT);   // course id (defaults to Site)
+$userid = optional_param('id', $USER->id, PARAM_INT);    // User id.
+$course = optional_param('course', SITEID, PARAM_INT);   // Course id (defaults to Site).
+$cancelemailchange = optional_param('cancelemailchange', 0, PARAM_INT);   // Course id (defaults to Site).
 
-$PAGE->set_url('/user/edit.php', array('course'=>$course, 'id'=>$userid));
+$PAGE->set_url('/user/edit.php', array('course' => $course, 'id' => $userid));
 
-if (!$course = $DB->get_record('course', array('id'=>$course))) {
+if (!$course = $DB->get_record('course', array('id' => $course))) {
     print_error('invalidcourseid');
 }
 
@@ -54,37 +53,37 @@ if ($course->id != SITEID) {
     $PAGE->set_context(context_system::instance());
 }
 
-// Guest can not edit
+// Guest can not edit.
 if (isguestuser()) {
     print_error('guestnoeditprofile');
 }
 
-// The user profile we are editing
-if (!$user = $DB->get_record('user', array('id'=>$userid))) {
+// The user profile we are editing.
+if (!$user = $DB->get_record('user', array('id' => $userid))) {
     print_error('invaliduserid');
 }
 
-// Guest can not be edited
+// Guest can not be edited.
 if (isguestuser($user)) {
     print_error('guestnoeditprofile');
 }
 
-// User interests separated by commas
+// User interests separated by commas.
 if (!empty($CFG->usetags)) {
     require_once($CFG->dirroot.'/tag/lib.php');
     $user->interests = tag_get_tags_array('user', $user->id);
 }
 
-// remote users cannot be edited
+// Remote users cannot be edited.
 if (is_mnet_remote_user($user)) {
     if (user_not_fully_set_up($user)) {
-        $hostwwwroot = $DB->get_field('mnet_host', 'wwwroot', array('id'=>$user->mnethostid));
+        $hostwwwroot = $DB->get_field('mnet_host', 'wwwroot', array('id' => $user->mnethostid));
         print_error('usernotfullysetup', 'mnet', '', $hostwwwroot);
     }
     redirect($CFG->wwwroot . "/user/view.php?course={$course->id}");
 }
 
-// load the appropriate auth plugin
+// Load the appropriate auth plugin.
 $userauth = get_auth_plugin($user->auth);
 
 if (!$userauth->can_edit_profile()) {
@@ -92,14 +91,14 @@ if (!$userauth->can_edit_profile()) {
 }
 
 if ($editurl = $userauth->edit_profile_url()) {
-    // this internal script not used
+    // This internal script not used.
     redirect($editurl);
 }
 
 if ($course->id == SITEID) {
-    $coursecontext = context_system::instance();   // SYSTEM context
+    $coursecontext = context_system::instance();   // SYSTEM context.
 } else {
-    $coursecontext = context_course::instance($course->id);   // Course context
+    $coursecontext = context_course::instance($course->id);   // Course context.
 }
 $systemcontext   = context_system::instance();
 $personalcontext = context_user::instance($user->id);
@@ -114,22 +113,22 @@ if ($USER->id != $user->id) {
     }
 }
 
-// check access control
+// Check access control.
 if ($user->id == $USER->id) {
-    //editing own profile - require_login() MUST NOT be used here, it would result in infinite loop!
+    // Editing own profile - require_login() MUST NOT be used here, it would result in infinite loop!
     if (!has_capability('moodle/user:editownprofile', $systemcontext)) {
         print_error('cannotedityourprofile');
     }
 
 } else {
-    // teachers, parents, etc.
+    // Teachers, parents, etc.
     require_capability('moodle/user:editprofile', $personalcontext);
-    // no editing of guest user account
+    // No editing of guest user account.
     if (isguestuser($user->id)) {
         print_error('guestnoeditprofileother');
     }
-    // no editing of primary admin!
-    if (is_siteadmin($user) and !is_siteadmin($USER)) {  // Only admins may edit other admins
+    // No editing of primary admin!
+    if (is_siteadmin($user) and !is_siteadmin($USER)) {  // Only admins may edit other admins.
         print_error('useradmineditadmin');
     }
 }
@@ -141,19 +140,19 @@ if ($user->deleted) {
     die;
 }
 
-// Process email change cancellation
+// Process email change cancellation.
 if ($cancelemailchange) {
     cancel_email_update($user->id);
 }
 
-//load user preferences
+// Load user preferences.
 useredit_load_preferences($user);
 
-//Load custom profile fields data
+// Load custom profile fields data.
 profile_load_data($user);
 
 
-// Prepare the editor and create form
+// Prepare the editor and create form.
 $editoroptions = array(
     'maxfiles'   => EDITOR_UNLIMITED_FILES,
     'maxbytes'   => $CFG->maxbytes,
@@ -172,26 +171,26 @@ $filemanageroptions = array('maxbytes'       => $CFG->maxbytes,
                              'accepted_types' => 'web_image');
 file_prepare_draft_area($draftitemid, $filemanagercontext->id, 'user', 'newicon', 0, $filemanageroptions);
 $user->imagefile = $draftitemid;
-//create form
+// Create form.
 $userform = new user_edit_form(null, array(
     'editoroptions' => $editoroptions,
     'filemanageroptions' => $filemanageroptions,
     'userid' => $user->id));
 if (empty($user->country)) {
-    // MDL-16308 - we must unset the value here so $CFG->country can be used as default one
+    // MDL-16308 - we must unset the value here so $CFG->country can be used as default one.
     unset($user->country);
 }
 $userform->set_data($user);
 
-$email_changed = false;
+$emailchanged = false;
 
 if ($usernew = $userform->get_data()) {
 
-    $email_changed_html = '';
+    $emailchangedhtml = '';
 
     if ($CFG->emailchangeconfirmation) {
-        // Users with 'moodle/user:update' can change their email address immediately
-        // Other users require a confirmation email
+        // Users with 'moodle/user:update' can change their email address immediately.
+        // Other users require a confirmation email.
         if (isset($usernew->email) and $user->email != $usernew->email && !has_capability('moodle/user:update', $systemcontext)) {
             $a = new stdClass();
             $a->newemail = $usernew->preference_newemail = $usernew->email;
@@ -199,9 +198,9 @@ if ($usernew = $userform->get_data()) {
             $usernew->preference_newemailattemptsleft = 3;
             $a->oldemail = $usernew->email = $user->email;
 
-            $email_changed_html = $OUTPUT->box(get_string('auth_changingemailaddress', 'auth', $a), 'generalbox', 'notice');
-            $email_changed_html .= $OUTPUT->continue_button("$CFG->wwwroot/user/view.php?id=$user->id&amp;course=$course->id");
-            $email_changed = true;
+            $emailchangedhtml = $OUTPUT->box(get_string('auth_changingemailaddress', 'auth', $a), 'generalbox', 'notice');
+            $emailchangedhtml .= $OUTPUT->continue_button("$CFG->wwwroot/user/view.php?id=$user->id&amp;course=$course->id");
+            $emailchanged = true;
         }
     }
 
@@ -209,7 +208,7 @@ if ($usernew = $userform->get_data()) {
 
     $usernew->timemodified = time();
 
-    // description editor element may not exist!
+    // Description editor element may not exist!
     if (isset($usernew->description_editor)) {
         $usernew = file_postupdate_standard_editor($usernew, 'description', $editoroptions, $personalcontext, 'user', 'profile', 0);
     }
@@ -223,53 +222,53 @@ if ($usernew = $userform->get_data()) {
     // Update user with new profile data.
     user_update_user($usernew, false);
 
-    //update preferences
+    // Update preferences.
     useredit_update_user_preference($usernew);
 
-    //update interests
+    // Update interests.
     if (!empty($CFG->usetags)) {
         useredit_update_interests($usernew, $usernew->interests);
     }
 
-    //update user picture
+    // Update user picture.
     if (empty($CFG->disableuserimages)) {
         useredit_update_picture($usernew, $userform, $filemanageroptions);
     }
 
-    // update mail bounces
+    // Update mail bounces.
     useredit_update_bounces($user, $usernew);
 
-    /// update forum track preference
+    // Update forum track preference.
     useredit_update_trackforums($user, $usernew);
 
-    // save custom profile fields data
+    // Save custom profile fields data.
     profile_save_data($usernew);
 
     // If email was changed and confirmation is required, send confirmation email now to the new address.
-    if ($email_changed && $CFG->emailchangeconfirmation) {
-        $temp_user = $DB->get_record('user', array('id'=>$user->id), '*', MUST_EXIST);
-        $temp_user->email = $usernew->preference_newemail;
+    if ($emailchanged && $CFG->emailchangeconfirmation) {
+        $tempuser = $DB->get_record('user', array('id' => $user->id), '*', MUST_EXIST);
+        $tempuser->email = $usernew->preference_newemail;
 
         $a = new stdClass();
         $a->url = $CFG->wwwroot . '/user/emailupdate.php?key=' . $usernew->preference_newemailkey . '&id=' . $user->id;
         $a->site = format_string($SITE->fullname, true, array('context' => context_course::instance(SITEID)));
-        $a->fullname = fullname($temp_user, true);
+        $a->fullname = fullname($tempuser, true);
 
         $emailupdatemessage = get_string('emailupdatemessage', 'auth', $a);
         $emailupdatetitle = get_string('emailupdatetitle', 'auth', $a);
 
-        //email confirmation directly rather than using messaging so they will definitely get an email
+        // Email confirmation directly rather than using messaging so they will definitely get an email.
         $supportuser = core_user::get_support_user();
-        if (!$mail_results = email_to_user($temp_user, $supportuser, $emailupdatetitle, $emailupdatemessage)) {
+        if (!$mailresults = email_to_user($tempuser, $supportuser, $emailupdatetitle, $emailupdatemessage)) {
             die("could not send email!");
         }
     }
 
     // Reload from db, we need new full name on this page if we do not redirect.
-    $user = $DB->get_record('user', array('id'=>$user->id), '*', MUST_EXIST);
+    $user = $DB->get_record('user', array('id' => $user->id), '*', MUST_EXIST);
 
     if ($USER->id == $user->id) {
-        // Override old $USER session variable if needed
+        // Override old $USER session variable if needed.
         foreach ((array)$user as $variable => $value) {
             if ($variable === 'description' or $variable === 'password') {
                 // These are not set for security nad perf reasons.
@@ -277,25 +276,25 @@ if ($usernew = $userform->get_data()) {
             }
             $USER->$variable = $value;
         }
-        // preload custom fields
+        // Preload custom fields.
         profile_load_custom_fields($USER);
     }
 
     if (is_siteadmin() and empty($SITE->shortname)) {
-        // fresh cli install - we need to finish site settings
+        // Fresh cli install - we need to finish site settings.
         redirect(new moodle_url('/admin/index.php'));
     }
 
-    if (!$email_changed || !$CFG->emailchangeconfirmation) {
+    if (!$emailchanged || !$CFG->emailchangeconfirmation) {
         redirect("$CFG->wwwroot/user/view.php?id=$user->id&course=$course->id");
     }
 }
 
-// make sure we really are on the https page when https login required
+// Make sure we really are on the https page when https login required.
 $PAGE->verify_https_required();
 
 
-/// Display page header
+// Display page header.
 $streditmyprofile = get_string('editmyprofile');
 $strparticipants  = get_string('participants');
 $userfullname     = fullname($user, true);
@@ -306,13 +305,13 @@ $PAGE->set_heading($course->fullname);
 echo $OUTPUT->header();
 echo $OUTPUT->heading($userfullname);
 
-if ($email_changed) {
-    echo $email_changed_html;
+if ($emailchanged) {
+    echo $emailchangedhtml;
 } else {
-/// Finally display THE form
+    // Finally display THE form.
     $userform->display();
 }
 
-/// and proper footer
+// And proper footer.
 echo $OUTPUT->footer();
 
index ad4aa3e..4c46d6b 100644 (file)
@@ -1,18 +1,48 @@
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Form to edit a users profile
+ *
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @package core_user
+ */
 
 if (!defined('MOODLE_INTERNAL')) {
-    die('Direct access to this script is forbidden.');    ///  It must be included from a Moodle page
+    die('Direct access to this script is forbidden.');    //  It must be included from a Moodle page.
 }
 
 require_once($CFG->dirroot.'/lib/formslib.php');
 
+/**
+ * Class user_edit_form.
+ *
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 class user_edit_form extends moodleform {
 
-    // Define the form
-    function definition () {
+    /**
+     * Define the form.
+     */
+    public function definition () {
         global $CFG, $COURSE, $USER;
 
-        $mform =& $this->_form;
+        $mform = $this->_form;
         $editoroptions = null;
         $filemanageroptions = null;
         $userid = $USER->id;
@@ -28,65 +58,67 @@ class user_edit_form extends moodleform {
                 $userid = $this->_customdata['userid'];
             }
         }
-        //Accessibility: "Required" is bad legend text.
+        // Accessibility: "Required" is bad legend text.
         $strgeneral  = get_string('general');
         $strrequired = get_string('required');
 
-        /// Add some extra hidden fields
+        // Add some extra hidden fields.
         $mform->addElement('hidden', 'id');
         $mform->setType('id', PARAM_INT);
         $mform->addElement('hidden', 'course', $COURSE->id);
         $mform->setType('course', PARAM_INT);
 
-        /// Print the required moodle fields first
+        // Print the required moodle fields first.
         $mform->addElement('header', 'moodle', $strgeneral);
 
-        /// shared fields
+        // Shared fields.
         useredit_shared_definition($mform, $editoroptions, $filemanageroptions);
 
-        /// extra settigs
+        // Extra settigs.
         if (!empty($CFG->disableuserimages)) {
             $mform->removeElement('deletepicture');
             $mform->removeElement('imagefile');
             $mform->removeElement('imagealt');
         }
 
-        /// Next the customisable profile fields
+        // Next the customisable profile fields.
         profile_definition($mform, $userid);
 
         $this->add_action_buttons(false, get_string('updatemyprofile'));
     }
 
-    function definition_after_data() {
+    /**
+     * Extend the form definition after the data has been parsed.
+     */
+    public function definition_after_data() {
         global $CFG, $DB, $OUTPUT;
 
-        $mform =& $this->_form;
+        $mform = $this->_form;
         $userid = $mform->getElementValue('id');
 
-        // if language does not exist, use site default lang
+        // If language does not exist, use site default lang.
         if ($langsel = $mform->getElementValue('lang')) {
             $lang = reset($langsel);
-            // check lang exists
+            // Check lang exists.
             if (!get_string_manager()->translation_exists($lang, false)) {
-                $lang_el =& $mform->getElement('lang');
-                $lang_el->setValue($CFG->lang);
+                $langel =& $mform->getElement('lang');
+                $langel->setValue($CFG->lang);
             }
         }
 
+        if ($user = $DB->get_record('user', array('id' => $userid))) {
 
-        if ($user = $DB->get_record('user', array('id'=>$userid))) {
-
-            // remove description
-            if (empty($user->description) && !empty($CFG->profilesforenrolledusersonly) && !$DB->record_exists('role_assignments', array('userid'=>$userid))) {
+            // Remove description.
+            if (empty($user->description) && !empty($CFG->profilesforenrolledusersonly) && !$DB->record_exists('role_assignments', array('userid' => $userid))) {
                 $mform->removeElement('description_editor');
             }
 
-            // print picture
+            // Print picture.
             $context = context_user::instance($user->id, MUST_EXIST);
             $fs = get_file_storage();
             $hasuploadedpicture = ($fs->file_exists($context->id, 'user', 'icon', 0, '/', 'f2.png') || $fs->file_exists($context->id, 'user', 'icon', 0, '/', 'f2.jpg'));
             if (!empty($user->picture) && $hasuploadedpicture) {
-                $imagevalue = $OUTPUT->user_picture($user, array('courseid' => SITEID, 'size'=>64));
+                $imagevalue = $OUTPUT->user_picture($user, array('courseid' => SITEID, 'size' => 64));
             } else {
                 $imagevalue = get_string('none');
             }
@@ -97,7 +129,7 @@ class user_edit_form extends moodleform {
                 $mform->removeElement('deletepicture');
             }
 
-            /// disable fields that are locked by auth plugins
+            // Disable fields that are locked by auth plugins.
             $fields = get_user_fieldnames();
             $authplugin = get_auth_plugin($user->auth);
             foreach ($fields as $field) {
@@ -116,7 +148,7 @@ class user_edit_form extends moodleform {
                 }
             }
 
-            /// Next the customisable profile fields
+            // Next the customisable profile fields.
             profile_definition_after_data($mform, $user->id);
 
         } else {
@@ -124,20 +156,26 @@ class user_edit_form extends moodleform {
         }
     }
 
-    function validation($usernew, $files) {
+    /**
+     * Validate incoming form data.
+     * @param array $usernew
+     * @param array $files
+     * @return array
+     */
+    public function validation($usernew, $files) {
         global $CFG, $DB;
 
         $errors = parent::validation($usernew, $files);
 
         $usernew = (object)$usernew;
-        $user    = $DB->get_record('user', array('id'=>$usernew->id));
+        $user    = $DB->get_record('user', array('id' => $usernew->id));
 
-        // validate email
+        // Validate email.
         if (!isset($usernew->email)) {
-            // mail not confirmed yet
+            // Mail not confirmed yet.
         } else if (!validate_email($usernew->email)) {
             $errors['email'] = get_string('invalidemail');
-        } else if (($usernew->email !== $user->email) and $DB->record_exists('user', array('email'=>$usernew->email, 'mnethostid'=>$CFG->mnet_localhost_id))) {
+        } else if (($usernew->email !== $user->email) and $DB->record_exists('user', array('email' => $usernew->email, 'mnethostid' => $CFG->mnet_localhost_id))) {
             $errors['email'] = get_string('emailexists');
         }
 
@@ -152,7 +190,7 @@ class user_edit_form extends moodleform {
             }
         }
 
-        /// Next the customisable profile fields
+        // Next the customisable profile fields.
         $errors += profile_validation($usernew, $files);
 
         return $errors;
index 08b428a..a70c110 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
@@ -20,7 +19,7 @@
  *
  * @copyright 1999 Martin Dougiamas  http://dougiamas.com
  * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- * @package user
+ * @package core_user
  */
 
 require_once('../config.php');
@@ -31,15 +30,15 @@ require_once($CFG->dirroot.'/user/editlib.php');
 require_once($CFG->dirroot.'/user/profile/lib.php');
 require_once($CFG->dirroot.'/user/lib.php');
 
-//HTTPS is required in this page when $CFG->loginhttps enabled
+// HTTPS is required in this page when $CFG->loginhttps enabled.
 $PAGE->https_required();
 
-$id     = optional_param('id', $USER->id, PARAM_INT);    // user id; -1 if creating new user
-$course = optional_param('course', SITEID, PARAM_INT);   // course id (defaults to Site)
+$id     = optional_param('id', $USER->id, PARAM_INT);    // User id; -1 if creating new user.
+$course = optional_param('course', SITEID, PARAM_INT);   // Course id (defaults to Site).
 
-$PAGE->set_url('/user/editadvanced.php', array('course'=>$course, 'id'=>$id));
+$PAGE->set_url('/user/editadvanced.php', array('course' => $course, 'id' => $id));
 
-$course = $DB->get_record('course', array('id'=>$course), '*', MUST_EXIST);
+$course = $DB->get_record('course', array('id' => $course), '*', MUST_EXIST);
 
 if (!empty($USER->newadminuser)) {
     $PAGE->set_course($SITE);
@@ -55,14 +54,14 @@ if (!empty($USER->newadminuser)) {
 }
 
 if ($course->id == SITEID) {
-    $coursecontext = context_system::instance();   // SYSTEM context
+    $coursecontext = context_system::instance();   // SYSTEM context.
 } else {
-    $coursecontext = context_course::instance($course->id);   // Course context
+    $coursecontext = context_course::instance($course->id);   // Course context.
 }
 $systemcontext = context_system::instance();
 
 if ($id == -1) {
-    // creating new user
+    // Creating new user.
     $user = new stdClass();
     $user->id = -1;
     $user->auth = 'manual';
@@ -71,9 +70,9 @@ if ($id == -1) {
     require_capability('moodle/user:create', $systemcontext);
     admin_externalpage_setup('addnewuser', '', array('id' => -1));
 } else {
-    // editing existing user
+    // Editing existing user.
     require_capability('moodle/user:update', $systemcontext);
-    $user = $DB->get_record('user', array('id'=>$id), '*', MUST_EXIST);
+    $user = $DB->get_record('user', array('id' => $id), '*', MUST_EXIST);
     $PAGE->set_context(context_user::instance($user->id));
     if ($user->id != $USER->id) {
         $PAGE->navigation->extend_for_user($user);
@@ -84,16 +83,16 @@ if ($id == -1) {
     }
 }
 
-// remote users cannot be edited
+// Remote users cannot be edited.
 if ($user->id != -1 and is_mnet_remote_user($user)) {
     redirect($CFG->wwwroot . "/user/view.php?id=$id&course={$course->id}");
 }
 
-if ($user->id != $USER->id and is_siteadmin($user) and !is_siteadmin($USER)) {  // Only admins may edit other admins
+if ($user->id != $USER->id and is_siteadmin($user) and !is_siteadmin($USER)) {  // Only admins may edit other admins.
     print_error('useradmineditadmin');
 }
 
-if (isguestuser($user->id)) { // the real guest user can not be edited
+if (isguestuser($user->id)) { // The real guest user can not be edited.
     print_error('guestnoeditprofileother');
 }
 
@@ -104,13 +103,13 @@ if ($user->deleted) {
     die;
 }
 
-//load user preferences
+// Load user preferences.
 useredit_load_preferences($user);
 
-//Load custom profile fields data
+// Load custom profile fields data.
 profile_load_data($user);
 
-//User interests
+// User interests.
 if (!empty($CFG->usetags)) {
     require_once($CFG->dirroot.'/tag/lib.php');
     $user->interests = tag_get_tags_array('user', $id);
@@ -129,12 +128,12 @@ if ($user->id !== -1) {
     $user = file_prepare_standard_editor($user, 'description', $editoroptions, $usercontext, 'user', 'profile', 0);
 } else {
     $usercontext = null;
-    // This is a new user, we don't want to add files here
+    // This is a new user, we don't want to add files here.
     $editoroptions = array(
-        'maxfiles'=>0,
-        'maxbytes'=>0,
-        'trusttext'=>false,
-        'forcehttps'=>false,
+        'maxfiles' => 0,
+        'maxbytes' => 0,
+        'trusttext' => false,
+        'forcehttps' => false,
         'context' => $coursecontext
     );
 }
@@ -148,7 +147,7 @@ $filemanageroptions = array('maxbytes'       => $CFG->maxbytes,
                              'accepted_types' => 'web_image');
 file_prepare_draft_area($draftitemid, $filemanagercontext->id, 'user', 'newicon', 0, $filemanageroptions);
 $user->imagefile = $draftitemid;
-//create form
+// Create form.
 $userform = new user_editadvanced_form(null, array(
     'editoroptions' => $editoroptions,
     'filemanageroptions' => $filemanageroptions,
@@ -158,9 +157,9 @@ $userform->set_data($user);
 if ($usernew = $userform->get_data()) {
 
     if (empty($usernew->auth)) {
-        //user editing self
+        // User editing self.
         $authplugin = get_auth_plugin($user->auth);
-        unset($usernew->auth); //can not change/remove
+        unset($usernew->auth); // Can not change/remove.
     } else {
         $authplugin = get_auth_plugin($usernew->auth);
     }
@@ -173,7 +172,7 @@ if ($usernew = $userform->get_data()) {
         $createpassword = !empty($usernew->createpassword);
         unset($usernew->createpassword);
         $usernew = file_postupdate_standard_editor($usernew, 'description', $editoroptions, null, 'user', 'profile', null);
-        $usernew->mnethostid = $CFG->mnet_localhost_id; // always local user
+        $usernew->mnethostid = $CFG->mnet_localhost_id; // Always local user.
         $usernew->confirmed  = 1;
         $usernew->timecreated = time();
         if ($authplugin->is_internal()) {
@@ -203,17 +202,17 @@ if ($usernew = $userform->get_data()) {
         }
         user_update_user($usernew, false);
 
-        //set new password if specified
+        // Set new password if specified.
         if (!empty($usernew->newpassword)) {
             if ($authplugin->can_change_password()) {
-                if (!$authplugin->user_update_password($usernew, $usernew->newpassword)){
+                if (!$authplugin->user_update_password($usernew, $usernew->newpassword)) {
                     print_error('cannotupdatepasswordonextauth', '', '', $usernew->auth);
                 }
-                unset_user_preference('create_password', $usernew); // prevent cron from generating the password
+                unset_user_preference('create_password', $usernew); // Prevent cron from generating the password.
             }
         }
 
-        // force logout if user just suspended
+        // Force logout if user just suspended.
         if (isset($usernew->suspended) and $usernew->suspended and !$user->suspended) {
             \core\session\manager::kill_user_sessions($user->id);
         }
@@ -221,30 +220,30 @@ if ($usernew = $userform->get_data()) {
 
     $usercontext = context_user::instance($usernew->id);
 
-    //update preferences
+    // Update preferences.
     useredit_update_user_preference($usernew);
 
-    // update tags
+    // Update tags.
     if (!empty($CFG->usetags) and empty($USER->newadminuser)) {
         useredit_update_interests($usernew, $usernew->interests);
     }
 
-    //update user picture
+    // Update user picture.
     if (empty($USER->newadminuser)) {
         useredit_update_picture($usernew, $userform, $filemanageroptions);
     }
 
-    // update mail bounces
+    // Update mail bounces.
     useredit_update_bounces($user, $usernew);
 
-    // update forum track preference
+    // Update forum track preference.
     useredit_update_trackforums($user, $usernew);
 
-    // save custom profile fields data
+    // Save custom profile fields data.
     profile_save_data($usernew);
 
-    // reload from db
-    $usernew = $DB->get_record('user', array('id'=>$usernew->id));
+    // Reload from db.
+    $usernew = $DB->get_record('user', array('id' => $usernew->id));
 
     if ($createpassword) {
         setnew_password_and_mail($usernew);
@@ -253,7 +252,7 @@ if ($usernew = $userform->get_data()) {
     }
 
     if ($user->id == $USER->id) {
-        // Override old $USER session variable
+        // Override old $USER session variable.
         foreach ((array)$usernew as $variable => $value) {
             if ($variable === 'description' or $variable === 'password') {
                 // These are not set for security nad perf reasons.
@@ -261,14 +260,14 @@ if ($usernew = $userform->get_data()) {
             }
             $USER->$variable = $value;
         }
-        // preload custom fields
+        // Preload custom fields.
         profile_load_custom_fields($USER);
 
         if (!empty($USER->newadminuser)) {
             unset($USER->newadminuser);
-            // apply defaults again - some of them might depend on admin user info, backup, roles, etc.
-            admin_apply_default_settings(NULL , false);
-            // redirect to admin/ to continue with installation
+            // Apply defaults again - some of them might depend on admin user info, backup, roles, etc.
+            admin_apply_default_settings(null , false);
+            // Redirect to admin/ to continue with installation.
             redirect("$CFG->wwwroot/$CFG->admin/");
         } else {
             redirect("$CFG->wwwroot/user/view.php?id=$USER->id&course=$course->id");
@@ -277,14 +276,14 @@ if ($usernew = $userform->get_data()) {
         \core\session\manager::gc(); // Remove stale sessions.
         redirect("$CFG->wwwroot/$CFG->admin/user.php");
     }
-    //never reached
+    // Never reached..
 }
 
-// make sure we really are on the https page when https login required
+// Make sure we really are on the https page when https login required.
 $PAGE->verify_https_required();
 
 
-/// Display page header
+// Display page header.
 if ($user->id == -1 or ($user->id != $USER->id)) {
     if ($user->id == -1) {
         echo $OUTPUT->header();
@@ -319,9 +318,9 @@ if ($user->id == -1 or ($user->id != $USER->id)) {
     echo $OUTPUT->heading($userfullname);
 }
 
-/// Finally display THE form
+// Finally display THE form.
 $userform->display();
 
-/// and proper footer
+// And proper footer.
 echo $OUTPUT->footer();
 
index 4f39442..ec598cc 100644 (file)
@@ -1,18 +1,48 @@
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Form for editing a users profile
+ *
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @package core_user
+ */
 
 if (!defined('MOODLE_INTERNAL')) {
-    die('Direct access to this script is forbidden.');    ///  It must be included from a Moodle page
+    die('Direct access to this script is forbidden.');    //  It must be included from a Moodle page.
 }
 
 require_once($CFG->dirroot.'/lib/formslib.php');
 
+/**
+ * Class user_editadvanced_form.
+ *
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 class user_editadvanced_form extends moodleform {
 
-    // Define the form
-    function definition() {
+    /**
+     * Define the form.
+     */
+    public function definition() {
         global $USER, $CFG, $COURSE;
 
-        $mform =& $this->_form;
+        $mform = $this->_form;
         $editoroptions = null;
         $filemanageroptions = null;
         $userid = $USER->id;
@@ -29,17 +59,17 @@ class user_editadvanced_form extends moodleform {
             }
         }
 
-        //Accessibility: "Required" is bad legend text.
+        // Accessibility: "Required" is bad legend text.
         $strgeneral  = get_string('general');
         $strrequired = get_string('required');
 
-        /// Add some extra hidden fields
+        // Add some extra hidden fields.
         $mform->addElement('hidden', 'id');
         $mform->setType('id', PARAM_INT);
         $mform->addElement('hidden', 'course', $COURSE->id);
         $mform->setType('course', PARAM_INT);
 
-        /// Print the required moodle fields first
+        // Print the required moodle fields first.
         $mform->addElement('header', 'moodle', $strgeneral);
 
         $mform->addElement('text', 'username', get_string('username'), 'size="20"');
@@ -49,7 +79,7 @@ class user_editadvanced_form extends moodleform {
         $auths = core_component::get_plugin_list('auth');
         $enabled = get_string('pluginenabled', 'core_plugin');
         $disabled = get_string('plugindisabled', 'core_plugin');
-        $auth_options = array($enabled=>array(), $disabled=>array());
+        $authoptions = array($enabled => array(), $disabled => array());
         $cannotchangepass = array();
         foreach ($auths as $auth => $unused) {
             $authinst = get_auth_plugin($auth);
@@ -63,21 +93,21 @@ class user_editadvanced_form extends moodleform {
                 }
             }
             if (is_enabled_auth($auth)) {
-                $auth_options[$enabled][$auth] = get_string('pluginname', "auth_{$auth}");
+                $authoptions[$enabled][$auth] = get_string('pluginname', "auth_{$auth}");
             } else {
-                $auth_options[$disabled][$auth] = get_string('pluginname', "auth_{$auth}");
+                $authoptions[$disabled][$auth] = get_string('pluginname', "auth_{$auth}");
             }
         }
-        $mform->addElement('selectgroups', 'auth', get_string('chooseauthmethod','auth'), $auth_options);
+        $mform->addElement('selectgroups', 'auth', get_string('chooseauthmethod', 'auth'), $authoptions);
         $mform->addHelpButton('auth', 'chooseauthmethod', 'auth');
 
-        $mform->addElement('advcheckbox', 'suspended', get_string('suspended','auth'));
+        $mform->addElement('advcheckbox', 'suspended', get_string('suspended', 'auth'));
         $mform->addHelpButton('suspended', 'suspended', 'auth');
 
-        $mform->addElement('checkbox', 'createpassword', get_string('createpassword','auth'));
+        $mform->addElement('checkbox', 'createpassword', get_string('createpassword', 'auth'));
         $mform->disabledIf('createpassword', 'auth', 'in', $cannotchangepass);
 
-        if (!empty($CFG->passwordpolicy)){
+        if (!empty($CFG->passwordpolicy)) {
             $mform->addElement('static', 'passwordpolicyinfo', '', print_password_policy());
         }
         $mform->addElement('passwordunmask', 'newpassword', get_string('newpassword'), 'size="20"');
@@ -91,10 +121,10 @@ class user_editadvanced_form extends moodleform {
         $mform->addHelpButton('preference_auth_forcepasswordchange', 'forcepasswordchange');
         $mform->disabledIf('preference_auth_forcepasswordchange', 'createpassword', 'checked');
 
-        /// shared fields
+        // Shared fields.
         useredit_shared_definition($mform, $editoroptions, $filemanageroptions);
 
-        /// Next the customisable profile fields
+        // Next the customisable profile fields.
         profile_definition($mform, $userid);
 
         if ($userid == -1) {
@@ -106,33 +136,36 @@ class user_editadvanced_form extends moodleform {
         $this->add_action_buttons(false, $btnstring);
     }
 
-    function definition_after_data() {
+    /**
+     * Extend the form definition after data has been parsed.
+     */
+    public function definition_after_data() {
         global $USER, $CFG, $DB, $OUTPUT;
 
-        $mform =& $this->_form;
+        $mform = $this->_form;
         if ($userid = $mform->getElementValue('id')) {
-            $user = $DB->get_record('user', array('id'=>$userid));
+            $user = $DB->get_record('user', array('id' => $userid));
         } else {
             $user = false;
         }
 
-        // if language does not exist, use site default lang
+        // If language does not exist, use site default lang.
         if ($langsel = $mform->getElementValue('lang')) {
             $lang = reset($langsel);
-            // check lang exists
+            // Check lang exists.
             if (!get_string_manager()->translation_exists($lang, false)) {
-                $lang_el =& $mform->getElement('lang');
-                $lang_el->setValue($CFG->lang);
+                $langel =& $mform->getElement('lang');
+                $langel->setValue($CFG->lang);
             }
         }
 
-        // user can not change own auth method
+        // User can not change own auth method.
         if ($userid == $USER->id) {
             $mform->hardFreeze('auth');
             $mform->hardFreeze('preference_auth_forcepasswordchange');
         }
 
-        // admin must choose some password and supply correct email
+        // Admin must choose some password and supply correct email.
         if (!empty($USER->newadminuser)) {
             $mform->addRule('newpassword', get_string('required'), 'required', null, 'client');
             if ($mform->elementExists('suspended')) {
@@ -140,7 +173,7 @@ class user_editadvanced_form extends moodleform {
             }
         }
 
-        // require password for new users
+        // Require password for new users.
         if ($userid > 0) {
             if ($mform->elementExists('createpassword')) {
                 $mform->removeElement('createpassword');
@@ -148,26 +181,26 @@ class user_editadvanced_form extends moodleform {
         }
 
         if ($user and is_mnet_remote_user($user)) {
-            // only local accounts can be suspended
+            // Only local accounts can be suspended.
             if ($mform->elementExists('suspended')) {
                 $mform->removeElement('suspended');
             }
         }
         if ($user and ($user->id == $USER->id or is_siteadmin($user))) {
-            // prevent self and admin mess ups
+            // Prevent self and admin mess ups.
             if ($mform->elementExists('suspended')) {
                 $mform->hardFreeze('suspended');
             }
         }
 
-        // print picture
+        // Print picture.
         if (empty($USER->newadminuser)) {
             if ($user) {
                 $context = context_user::instance($user->id, MUST_EXIST);
                 $fs = get_file_storage();
                 $hasuploadedpicture = ($fs->file_exists($context->id, 'user', 'icon', 0, '/', 'f2.png') || $fs->file_exists($context->id, 'user', 'icon', 0, '/', 'f2.jpg'));
                 if (!empty($user->picture) && $hasuploadedpicture) {
-                    $imagevalue = $OUTPUT->user_picture($user, array('courseid' => SITEID, 'size'=>64));
+                    $imagevalue = $OUTPUT->user_picture($user, array('courseid' => SITEID, 'size' => 64));
                 } else {
                     $imagevalue = get_string('none');
                 }
@@ -182,17 +215,23 @@ class user_editadvanced_form extends moodleform {
             }
         }
 
-        /// Next the customisable profile fields
+        // Next the customisable profile fields.
         profile_definition_after_data($mform, $userid);
     }
 
-    function validation($usernew, $files) {
+    /**
+     * Validate the form data.
+     * @param array $usernew
+     * @param array $files
+     * @return array|bool
+     */
+    public function validation($usernew, $files) {
         global $CFG, $DB;
 
         $usernew = (object)$usernew;
         $usernew->username = trim($usernew->username);
 
-        $user = $DB->get_record('user', array('id'=>$usernew->id));
+        $user = $DB->get_record('user', array('id' => $usernew->id));
         $err = array();
 
         if (!$user and !empty($usernew->createpassword)) {
@@ -216,14 +255,14 @@ class user_editadvanced_form extends moodleform {
         }
 
         if (empty($usernew->username)) {
-            //might be only whitespace
+            // Might be only whitespace.
             $err['username'] = get_string('required');
         } else if (!$user or $user->username !== $usernew->username) {
-            //check new username does not exist
-            if ($DB->record_exists('user', array('username'=>$usernew->username, 'mnethostid'=>$CFG->mnet_localhost_id))) {
+            // Check new username does not exist.
+            if ($DB->record_exists('user', array('username' => $usernew->username, 'mnethostid' => $CFG->mnet_localhost_id))) {
                 $err['username'] = get_string('usernameexists');
             }
-            //check allowed characters
+            // Check allowed characters.
             if ($usernew->username !== core_text::strtolower($usernew->username)) {
                 $err['username'] = get_string('usernamelowercase');
             } else {
@@ -236,15 +275,15 @@ class user_editadvanced_form extends moodleform {
         if (!$user or $user->email !== $usernew->email) {
             if (!validate_email($usernew->email)) {
                 $err['email'] = get_string('invalidemail');
-            } else if ($DB->record_exists('user', array('email'=>$usernew->email, 'mnethostid'=>$CFG->mnet_localhost_id))) {
+            } else if ($DB->record_exists('user', array('email' => $usernew->email, 'mnethostid' => $CFG->mnet_localhost_id))) {
                 $err['email'] = get_string('emailexists');
             }
         }
 
-        /// Next the customisable profile fields
+        // Next the customisable profile fields.
         $err += profile_validation($usernew, $files);
 
-        if (count($err) == 0){
+        if (count($err) == 0) {
             return true;
         } else {
             return $err;
index dde64e4..5f436c4 100644 (file)
@@ -1,31 +1,69 @@
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
+/**
+ * This file contains function used when editing a users profile and preferences.
+ *
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @package core_user
+ */
+
+/**
+ * Cancels the requirement for a user to update their email address.
+ *
+ * @param int $userid
+ */
 function cancel_email_update($userid) {
     unset_user_preference('newemail', $userid);
     unset_user_preference('newemailkey', $userid);
     unset_user_preference('newemailattemptsleft', $userid);
 }
 
+/**
+ * Loads the given users preferences into the given user object.
+ *
+ * @param stdClass $user The user object, modified by reference.
+ * @param bool $reload
+ */
 function useredit_load_preferences(&$user, $reload=true) {
     global $USER;
 
     if (!empty($user->id)) {
         if ($reload and $USER->id == $user->id) {
-            // reload preferences in case it was changed in other session
+            // Reload preferences in case it was changed in other session.
             unset($USER->preference);
         }
 
         if ($preferences = get_user_preferences(null, null, $user->id)) {
-            foreach($preferences as $name=>$value) {
+            foreach ($preferences as $name => $value) {
                 $user->{'preference_'.$name} = $value;
             }
         }
     }
 }
 
+/**
+ * Updates the user preferences for teh given user.
+ *
+ * @param stdClass|array $usernew
+ */
 function useredit_update_user_preference($usernew) {
     $ua = (array)$usernew;
-    foreach($ua as $key=>$value) {
+    foreach ($ua as $key => $value) {
         if (strpos($key, 'preference_') === 0) {
             $name = substr($key, strlen('preference_'));
             set_user_preference($name, $value, $usernew->id);
@@ -34,12 +72,12 @@ function useredit_update_user_preference($usernew) {
 }
 
 /**
- * Updates the provided users profile picture based upon the expected fields
- * returned from the edit or edit_advanced forms.
+ * Updates the provided users profile picture based upon the expected fields returned from the edit or edit_advanced forms.
  *
  * @global moodle_database $DB
  * @param stdClass $usernew An object that contains some information about the user being updated
  * @param moodleform $userform The form that was submitted to edit the form
+ * @param array $filemanageroptions
  * @return bool True if the user was updated, false if it stayed the same.
  */
 function useredit_update_picture(stdClass $usernew, moodleform $userform, $filemanageroptions = array()) {
@@ -47,33 +85,33 @@ function useredit_update_picture(stdClass $usernew, moodleform $userform, $filem
     require_once("$CFG->libdir/gdlib.php");
 
     $context = context_user::instance($usernew->id, MUST_EXIST);
-    $user = $DB->get_record('user', array('id'=>$usernew->id), 'id, picture', MUST_EXIST);
+    $user = $DB->get_record('user', array('id' => $usernew->id), 'id, picture', MUST_EXIST);
 
     $newpicture = $user->picture;
     // Get file_storage to process files.
     $fs = get_file_storage();
     if (!empty($usernew->deletepicture)) {
-        // The user has chosen to delete the selected users picture
-        $fs->delete_area_files($context->id, 'user', 'icon'); // drop all images in area
+        // The user has chosen to delete the selected users picture.
+        $fs->delete_area_files($context->id, 'user', 'icon'); // Drop all images in area.
         $newpicture = 0;
 
     } else {
         // Save newly uploaded file, this will avoid context mismatch for newly created users.
         file_save_draft_area_files($usernew->imagefile, $context->id, 'user', 'newicon', 0, $filemanageroptions);
         if (($iconfiles = $fs->get_area_files($context->id, 'user', 'newicon')) && count($iconfiles) == 2) {
-            // Get file which was uploaded in draft area
+            // Get file which was uploaded in draft area.
             foreach ($iconfiles as $file) {
                 if (!$file->is_directory()) {
                     break;
                 }
             }
-            // Copy file to temporary location and the send it for processing icon
+            // Copy file to temporary location and the send it for processing icon.
             if ($iconfile = $file->copy_content_to_temp()) {
-                // There is a new image that has been uploaded
+                // There is a new image that has been uploaded.
                 // Process the new image and set the user to make use of it.
-                // NOTE: Uploaded images always take over Gravatar
+                // NOTE: Uploaded images always take over Gravatar.
                 $newpicture = (int)process_new_icon($context, 'user', 'icon', 0, $iconfile);
-                // Delete temporary file
+                // Delete temporary file.
                 @unlink($iconfile);
                 // Remove uploaded file.
                 $fs->delete_area_files($context->id, 'user', 'newicon');
@@ -94,21 +132,33 @@ function useredit_update_picture(stdClass $usernew, moodleform $userform, $filem
     }
 }
 
+/**
+ * Updates the user email bounce + send counts when the user is edited.
+ *
+ * @param stdClass $user The current user object.
+ * @param stdClass $usernew The updated user object.
+ */
 function useredit_update_bounces($user, $usernew) {
     if (!isset($usernew->email)) {
-        //locked field
+        // Locked field.
         return;
     }
     if (!isset($user->email) || $user->email !== $usernew->email) {
-        set_bounce_count($usernew,true);
-        set_send_count($usernew,true);
+        set_bounce_count($usernew, true);
+        set_send_count($usernew, true);
     }
 }
 
+/**
+ * Updates the forums a user is tracking when the user is edited.
+ *
+ * @param stdClass $user The original user object.
+ * @param stdClass $usernew The updated user object.
+ */
 function useredit_update_trackforums($user, $usernew) {
     global $CFG;
     if (!isset($usernew->trackforums)) {
-        //locked field
+        // Locked field.
         return;
     }
     if ((!isset($user->trackforums) || ($usernew->trackforums != $user->trackforums)) and !$usernew->trackforums) {
@@ -117,10 +167,23 @@ function useredit_update_trackforums($user, $usernew) {
     }
 }
 
+/**
+ * Updates a users interests.
+ *
+ * @param stdClass $user
+ * @param array $interests
+ */
 function useredit_update_interests($user, $interests) {
     tag_set('user', $user->id, $interests);
 }
 
+/**
+ * Powerful function that is used by edit and editadvanced to add common form elements/rules/etc.
+ *
+ * @param moodleform $mform
+ * @param array|null $editoroptions
+ * @param array|null $filemanageroptions
+ */
 function useredit_shared_definition(&$mform, $editoroptions = null, $filemanageroptions = null) {
     global $CFG, $USER, $DB;
 
@@ -143,7 +206,7 @@ function useredit_shared_definition(&$mform, $editoroptions = null, $filemanager
         $mform->setType($addname, PARAM_NOTAGS);
     }
 
-    // Do not show email field if change confirmation is pending
+    // Do not show email field if change confirmation is pending.
     if (!empty($CFG->emailchangeconfirmation) and !empty($user->preference_newemail)) {
         $notice = get_string('emailchangepending', 'auth', $user);
         $notice .= '<br /><a href="edit.php?cancelemailchange=1&amp;id='.$user->id.'">'
@@ -228,7 +291,7 @@ function useredit_shared_definition(&$mform, $editoroptions = null, $filemanager
     }
 
     $choices = get_string_manager()->get_list_of_countries();
-    $choices= array(''=>get_string('selectacountry').'...') + $choices;
+    $choices = array('' => get_string('selectacountry') . '...') + $choices;
     $mform->addElement('select', 'country', get_string('selectacountry'), $choices);
     if (!empty($CFG->country)) {
         $mform->setDefault('country', $CFG->country);
@@ -258,7 +321,7 @@ function useredit_shared_definition(&$mform, $editoroptions = null, $filemanager
         $choices = array();
         $choices[''] = get_string('default');
         $themes = get_list_of_themes();
-        foreach ($themes as $key=>$theme) {
+        foreach ($themes as $key => $theme) {
             if (empty($theme->hidefromselector)) {
                 $choices[$key] = get_string('pluginname', 'theme_'.$theme->name);
             }
@@ -306,7 +369,7 @@ function useredit_shared_definition(&$mform, $editoroptions = null, $filemanager
         $mform->addHelpButton('interests', 'interestslist');
     }
 
-    /// Moodle optional fields
+    // Moodle optional fields.
     $mform->addElement('header', 'moodle_optional', get_string('optional', 'form'));
 
     $mform->addElement('text', 'url', get_string('webpage'), 'maxlength="255" size="50"');
@@ -344,8 +407,6 @@ function useredit_shared_definition(&$mform, $editoroptions = null, $filemanager
 
     $mform->addElement('text', 'address', get_string('address'), 'maxlength="255" size="25"');
     $mform->setType('address', PARAM_TEXT);
-
-
 }
 
 /**
index 256af0f..7adb835 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
@@ -20,7 +19,7 @@
  *
  * @copyright 1999 Martin Dougiamas  http://dougiamas.com
  * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- * @package user
+ * @package core_user
  */
 
 require_once('../config.php');
@@ -31,7 +30,7 @@ require_once($CFG->dirroot.'/user/lib.php');
 $key = required_param('key', PARAM_ALPHANUM);
 $id  = required_param('id', PARAM_INT);
 
-$PAGE->set_url('/user/emailupdate.php', array('id'=>$id, 'key'=>$key));
+$PAGE->set_url('/user/emailupdate.php', array('id' => $id, 'key' => $key));
 $PAGE->set_context(context_system::instance());
 
 if (!$user = $DB->get_record('user', array('id' => $id))) {
@@ -51,12 +50,12 @@ echo $OUTPUT->header();
 if (empty($preferences['newemailattemptsleft'])) {
     redirect("$CFG->wwwroot/user/view.php?id=$user->id");
 
-} elseif ($preferences['newemailattemptsleft'] < 1) {
+} else if ($preferences['newemailattemptsleft'] < 1) {
     cancel_email_update($user->id);
     $stroutofattempts = get_string('auth_outofnewemailupdateattempts', 'auth');
     echo $OUTPUT->box($stroutofattempts, 'center');
 
-} elseif ($key == $preferences['newemailkey']) {
+} else if ($key == $preferences['newemailkey']) {
     $olduser = clone($user);
     cancel_email_update($user->id);
     $user->email = $preferences['newemail'];
index ae028ae..506b629 100644 (file)
@@ -14,7 +14,6 @@
 // You should have received a copy of the GNU General Public License
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
-
 /**
  * External user API
  *
@@ -51,26 +50,52 @@ class core_user_external extends external_api {
                 'users' => new external_multiple_structure(
                     new external_single_structure(
                         array(
-                            'username'            => new external_value(PARAM_USERNAME, 'Username policy is defined in Moodle security config.'),
-                            'password'            => new external_value(PARAM_RAW, 'Plain text password consisting of any characters'),
-                            'firstname'           => new external_value(PARAM_NOTAGS, 'The first name(s) of the user'),
-                            'lastname'            => new external_value(PARAM_NOTAGS, 'The family name of the user'),
-                            'email'               => new external_value(PARAM_EMAIL, 'A valid and unique email address'),
-                            'auth'                => new external_value(PARAM_PLUGIN, 'Auth plugins include manual, ldap, imap, etc', VALUE_DEFAULT, 'manual', NULL_NOT_ALLOWED),
-                            'idnumber'            => new external_value(PARAM_RAW, 'An arbitrary ID code number perhaps from the institution', VALUE_DEFAULT, ''),
-                            'lang'                => new external_value(PARAM_SAFEDIR, 'Language code such as "en", must exist on server', VALUE_DEFAULT, $CFG->lang, NULL_NOT_ALLOWED),
-                            'calendartype'        => new external_value(PARAM_PLUGIN, 'Calendar type such as "gregorian", must exist on server', VALUE_DEFAULT, $CFG->calendartype, VALUE_OPTIONAL),
-                            'theme'               => new external_value(PARAM_PLUGIN, 'Theme name such as "standard", must exist on server', VALUE_OPTIONAL),
-                            'timezone'            => new external_value(PARAM_TIMEZONE, 'Timezone code such as Australia/Perth, or 99 for default', VALUE_OPTIONAL),
-                            'mailformat'          => new external_value(PARAM_INT, 'Mail format code is 0 for plain text, 1 for HTML etc', VALUE_OPTIONAL),
-                            'description'         => new external_value(PARAM_TEXT, 'User profile description, no HTML', VALUE_OPTIONAL),
-                            'city'                => new external_value(PARAM_NOTAGS, 'Home city of the user', VALUE_OPTIONAL),
-                            'country'             => new external_value(PARAM_ALPHA, 'Home country code of the user, such as AU or CZ', VALUE_OPTIONAL),
-                            'firstnamephonetic'   => new external_value(PARAM_NOTAGS, 'The first name(s) phonetically of the user', VALUE_OPTIONAL),
-                            'lastnamephonetic'    => new external_value(PARAM_NOTAGS, 'The family name phonetically of the user', VALUE_OPTIONAL),
-                            'middlename'          => new external_value(PARAM_NOTAGS, 'The middle name of the user', VALUE_OPTIONAL),
-                            'alternatename'       => new external_value(PARAM_NOTAGS, 'The alternate name of the user', VALUE_OPTIONAL),
-                            'preferences'         => new external_multiple_structure(
+                            'username' =>
+                                new external_value(PARAM_USERNAME, 'Username policy is defined in Moodle security config.'),
+                            'password' =>
+                                new external_value(PARAM_RAW, 'Plain text password consisting of any characters'),
+                            'firstname' =>
+                                new external_value(PARAM_NOTAGS, 'The first name(s) of the user'),
+                            'lastname' =>
+                                new external_value(PARAM_NOTAGS, 'The family name of the user'),
+                            'email' =>
+                                new external_value(PARAM_EMAIL, 'A valid and unique email address'),
+                            'auth' =>
+                                new external_value(PARAM_PLUGIN, 'Auth plugins include manual, ldap, imap, etc', VALUE_DEFAULT,
+                                    'manual', NULL_NOT_ALLOWED),
+                            'idnumber' =>
+                                new external_value(PARAM_RAW, 'An arbitrary ID code number perhaps from the institution',
+                                    VALUE_DEFAULT, ''),
+                            'lang' =>
+                                new external_value(PARAM_SAFEDIR, 'Language code such as "en", must exist on server', VALUE_DEFAULT,
+                                    $CFG->lang, NULL_NOT_ALLOWED),
+                            'calendartype' =>
+                                new external_value(PARAM_PLUGIN, 'Calendar type such as "gregorian", must exist on server',
+                                    VALUE_DEFAULT, $CFG->calendartype, VALUE_OPTIONAL),
+                            'theme' =>
+                                new external_value(PARAM_PLUGIN, 'Theme name such as "standard", must exist on server',
+                                    VALUE_OPTIONAL),
+                            'timezone' =>
+                                new external_value(PARAM_TIMEZONE, 'Timezone code such as Australia/Perth, or 99 for default',
+                                    VALUE_OPTIONAL),
+                            'mailformat' =>
+                                new external_value(PARAM_INT, 'Mail format code is 0 for plain text, 1 for HTML etc',
+                                    VALUE_OPTIONAL),
+                            'description' =>
+                                new external_value(PARAM_TEXT, 'User profile description, no HTML', VALUE_OPTIONAL),
+                            'city' =>
+                                new external_value(PARAM_NOTAGS, 'Home city of the user', VALUE_OPTIONAL),
+                            'country' =>
+                                new external_value(PARAM_ALPHA, 'Home country code of the user, such as AU or CZ', VALUE_OPTIONAL),
+                            'firstnamephonetic' =>
+                                new external_value(PARAM_NOTAGS, 'The first name(s) phonetically of the user', VALUE_OPTIONAL),
+                            'lastnamephonetic' =>
+                                new external_value(PARAM_NOTAGS, 'The family name phonetically of the user', VALUE_OPTIONAL),
+                            'middlename' =>
+                                new external_value(PARAM_NOTAGS, 'The middle name of the user', VALUE_OPTIONAL),
+                            'alternatename' =>
+                                new external_value(PARAM_NOTAGS, 'The alternate name of the user', VALUE_OPTIONAL),
+                            'preferences' => new external_multiple_structure(
                                 new external_single_structure(
                                     array(
                                         'type'  => new external_value(PARAM_ALPHANUMEXT, 'The name of the preference'),
@@ -92,8 +117,9 @@ class core_user_external extends external_api {
     }
 
     /**
-     * Create one or more users
+     * Create one or more users.
      *
+     * @throws invalid_parameter_exception
      * @param array $users An array of users to create.
      * @return array An array of arrays
      * @since Moodle 2.2
@@ -102,20 +128,20 @@ class core_user_external extends external_api {
         global $CFG, $DB;
         require_once($CFG->dirroot."/lib/weblib.php");
         require_once($CFG->dirroot."/user/lib.php");
-        require_once($CFG->dirroot."/user/profile/lib.php"); //required for customfields related function
+        require_once($CFG->dirroot."/user/profile/lib.php"); // Required for customfields related function.
 
-        // Ensure the current user is allowed to run this function
+        // Ensure the current user is allowed to run this function.
         $context = context_system::instance();
         self::validate_context($context);
         require_capability('moodle/user:create', $context);
 
-        // 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::create_users_parameters(), array('users'=>$users));
+        // 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::create_users_parameters(), array('users' => $users));
 
         $availableauths  = core_component::get_plugin_list('auth');
-        unset($availableauths['mnet']);       // these would need mnethostid too
-        unset($availableauths['webservice']); // we do not want new webservice users for now
+        unset($availableauths['mnet']);       // These would need mnethostid too.
+        unset($availableauths['webservice']); // We do not want new webservice users for now.
 
         $availablethemes = core_component::get_plugin_list('theme');
         $availablelangs  = get_string_manager()->get_list_of_translations();
@@ -124,26 +150,26 @@ class core_user_external extends external_api {
 
         $userids = array();
         foreach ($params['users'] as $user) {
-            // Make sure that the username doesn't already exist
-            if ($DB->record_exists('user', array('username'=>$user['username'], 'mnethostid'=>$CFG->mnet_localhost_id))) {
+            // Make sure that the username doesn't already exist.
+            if ($DB->record_exists('user', array('username' => $user['username'], 'mnethostid' => $CFG->mnet_localhost_id))) {
                 throw new invalid_parameter_exception('Username already exists: '.$user['username']);
             }
 
-            // Make sure auth is valid
+            // Make sure auth is valid.
             if (empty($availableauths[$user['auth']])) {
                 throw new invalid_parameter_exception('Invalid authentication type: '.$user['auth']);
             }
 
-            // Make sure lang is valid
+            // Make sure lang is valid.
             if (empty($availablelangs[$user['lang']])) {
                 throw new invalid_parameter_exception('Invalid language code: '.$user['lang']);
             }
 
-            // Make sure lang is valid
-            if (!empty($user['theme']) && empty($availablethemes[$user['theme']])) { //theme is VALUE_OPTIONAL,
-                                                                                     // so no default value.
+            // Make sure lang is valid.
+            if (!empty($user['theme']) && empty($availablethemes[$user['theme']])) { // Theme is VALUE_OPTIONAL,
+                                                                                     // so no default value
                                                                                      // We need to test if the client sent it
-                                                                                     // => !empty($user['theme'])
+                                                                                     // => !empty($user['theme']).
                 throw new invalid_parameter_exception('Invalid theme: '.$user['theme']);
             }
 
@@ -151,35 +177,35 @@ class core_user_external extends external_api {
             $user['mnethostid'] = $CFG->mnet_localhost_id;
 
             // Start of user info validation.
-            // Lets make sure we validate current user info as handled by current GUI. see user/editadvanced_form.php function validation()
+            // Make sure we validate current user info as handled by current GUI. See user/editadvanced_form.php func validation().
             if (!validate_email($user['email'])) {
                 throw new invalid_parameter_exception('Email address is invalid: '.$user['email']);
-            } else if ($DB->record_exists('user', array('email'=>$user['email'], 'mnethostid'=>$user['mnethostid']))) {
+            } else if ($DB->record_exists('user', array('email' => $user['email'], 'mnethostid' => $user['mnethostid']))) {
                 throw new invalid_parameter_exception('Email address already exists: '.$user['email']);
             }
             // End of user info validation.
 
-            // create the user data now!
+            // Create the user data now!
             $user['id'] = user_create_user($user);
 
-            // custom fields
-            if(!empty($user['customfields'])) {
-                foreach($user['customfields'] as $customfield) {
-                    $user["profile_field_".$customfield['type']] = $customfield['value']; //profile_save_data() saves profile file
-                                                                                            //it's expecting a user with the correct id,
-                                                                                            //and custom field to be named profile_field_"shortname"
+            // Custom fields.
+            if (!empty($user['customfields'])) {
+                foreach ($user['customfields'] as $customfield) {
+                    // Profile_save_data() saves profile file it's expecting a user with the correct id,
+                    // and custom field to be named profile_field_"shortname".
+                    $user["profile_field_".$customfield['type']] = $customfield['value'];
                 }
                 profile_save_data((object) $user);
             }
 
-            //preferences
+            // Preferences.
             if (!empty($user['preferences'])) {
-                foreach($user['preferences'] as $preference) {
-                    set_user_preference($preference['type'], $preference['value'],$user['id']);
+                foreach ($user['preferences'] as $preference) {
+                    set_user_preference($preference['type'], $preference['value'], $user['id']);
                 }
             }
 
-            $userids[] = array('id'=>$user['id'], 'username'=>$user['username']);
+            $userids[] = array('id' => $user['id'], 'username' => $user['username']);
         }
 
         $transaction->allow_commit();
@@ -187,7 +213,7 @@ class core_user_external extends external_api {
         return $userids;
     }
 
-   /**
+    /**
      * Returns description of method result value
      *
      * @return external_description
@@ -222,6 +248,7 @@ class core_user_external extends external_api {
     /**
      * Delete users
      *
+     * @throws moodle_exception
      * @param array $userids
      * @return null
      * @since Moodle 2.2
@@ -230,18 +257,18 @@ class core_user_external extends external_api {
         global $CFG, $DB, $USER;
         require_once($CFG->dirroot."/user/lib.php");
 
-        // Ensure the current user is allowed to run this function
+        // Ensure the current user is allowed to run this function.
         $context = context_system::instance();
         require_capability('moodle/user:delete', $context);
         self::validate_context($context);
 
-        $params = self::validate_parameters(self::delete_users_parameters(), array('userids'=>$userids));
+        $params = self::validate_parameters(self::delete_users_parameters(), array('userids' => $userids));
 
         $transaction = $DB->start_delegated_transaction();
 
         foreach ($params['userids'] as $userid) {
-            $user = $DB->get_record('user', array('id'=>$userid, 'deleted'=>0), '*', MUST_EXIST);
-            // must not allow deleting of admins or self!!!
+            $user = $DB->get_record('user', array('id' => $userid, 'deleted' => 0), '*', MUST_EXIST);
+            // Must not allow deleting of admins or self!!!
             if (is_siteadmin($user)) {
                 throw new moodle_exception('useradminodelete', 'error');
             }
@@ -256,7 +283,7 @@ class core_user_external extends external_api {
         return null;
     }
 
-   /**
+    /**
      * Returns description of method result value
      *
      * @return null
@@ -279,27 +306,58 @@ class core_user_external extends external_api {
                 'users' => new external_multiple_structure(
                     new external_single_structure(
                         array(
-                            'id'    => new external_value(PARAM_INT, 'ID of the user'),
-                            'username'            => new external_value(PARAM_USERNAME, 'Username policy is defined in Moodle security config.', VALUE_OPTIONAL, '',NULL_NOT_ALLOWED),
-                            'password'            => new external_value(PARAM_RAW, 'Plain text password consisting of any characters', VALUE_OPTIONAL, '',NULL_NOT_ALLOWED),
-                            'firstname'           => new external_value(PARAM_NOTAGS, 'The first name(s) of the user', VALUE_OPTIONAL, '',NULL_NOT_ALLOWED),
-                            'lastname'            => new external_value(PARAM_NOTAGS, 'The family name of the user', VALUE_OPTIONAL),
-                            'email'               => new external_value(PARAM_EMAIL, 'A valid and unique email address', VALUE_OPTIONAL, '',NULL_NOT_ALLOWED),
-                            'auth'                => new external_value(PARAM_PLUGIN, 'Auth plugins include manual, ldap, imap, etc', VALUE_OPTIONAL, '', NULL_NOT_ALLOWED),
-                            'idnumber'            => new external_value(PARAM_RAW, 'An arbitrary ID code number perhaps from the institution', VALUE_OPTIONAL),
-                            'lang'                => new external_value(PARAM_SAFEDIR, 'Language code such as "en", must exist on server', VALUE_OPTIONAL, '', NULL_NOT_ALLOWED),
-                            'calendartype'        => new external_value(PARAM_PLUGIN, 'Calendar type such as "gregorian", must exist on server', VALUE_OPTIONAL, '', NULL_NOT_ALLOWED),
-                            'theme'               => new external_value(PARAM_PLUGIN, 'Theme name such as "standard", must exist on server', VALUE_OPTIONAL),
-                            'timezone'            => new external_value(PARAM_TIMEZONE, 'Timezone code such as Australia/Perth, or 99 for default', VALUE_OPTIONAL),
-                            'mailformat'          => new external_value(PARAM_INT, 'Mail format code is 0 for plain text, 1 for HTML etc', VALUE_OPTIONAL),
-                            'description'         => new external_value(PARAM_TEXT, 'User profile description, no HTML', VALUE_OPTIONAL),
-                            'city'                => new external_value(PARAM_NOTAGS, 'Home city of the user', VALUE_OPTIONAL),
-                            'country'             => new external_value(PARAM_ALPHA, 'Home country code of the user, such as AU or CZ', VALUE_OPTIONAL),
-                            'firstnamephonetic'   => new external_value(PARAM_NOTAGS, 'The first name(s) phonetically of the user', VALUE_OPTIONAL),
-                            'lastnamephonetic'    => new external_value(PARAM_NOTAGS, 'The family name phonetically of the user', VALUE_OPTIONAL),
-                            'middlename'          => new external_value(PARAM_NOTAGS, 'The middle name of the user', VALUE_OPTIONAL),
-                            'alternatename'       => new external_value(PARAM_NOTAGS, 'The alternate name of the user', VALUE_OPTIONAL),
-                            'customfields'        => new external_multiple_structure(
+                            'id' =>
+                                new external_value(PARAM_INT, 'ID of the user'),
+                            'username' =>
+                                new external_value(PARAM_USERNAME, 'Username policy is defined in Moodle security config.',
+                                    VALUE_OPTIONAL, '', NULL_NOT_ALLOWED),
+                            'password' =>
+                                new external_value(PARAM_RAW, 'Plain text password consisting of any characters', VALUE_OPTIONAL,
+                                    '', NULL_NOT_ALLOWED),
+                            'firstname' =>
+                                new external_value(PARAM_NOTAGS, 'The first name(s) of the user', VALUE_OPTIONAL, '',
+                                    NULL_NOT_ALLOWED),
+                            'lastname' =>
+                                new external_value(PARAM_NOTAGS, 'The family name of the user', VALUE_OPTIONAL),
+                            'email' =>
+                                new external_value(PARAM_EMAIL, 'A valid and unique email address', VALUE_OPTIONAL, '',
+                                    NULL_NOT_ALLOWED),
+                            'auth' =>
+                                new external_value(PARAM_PLUGIN, 'Auth plugins include manual, ldap, imap, etc', VALUE_OPTIONAL, '',
+                                    NULL_NOT_ALLOWED),
+                            'idnumber' =>
+                                new external_value(PARAM_RAW, 'An arbitrary ID code number perhaps from the institution',
+                                    VALUE_OPTIONAL),
+                            'lang' =>
+                                new external_value(PARAM_SAFEDIR, 'Language code such as "en", must exist on server',
+                                    VALUE_OPTIONAL, '', NULL_NOT_ALLOWED),
+                            'calendartype' =>
+                                new external_value(PARAM_PLUGIN, 'Calendar type such as "gregorian", must exist on server',
+                                    VALUE_OPTIONAL, '', NULL_NOT_ALLOWED),
+                            'theme' =>
+                                new external_value(PARAM_PLUGIN, 'Theme name such as "standard", must exist on server',
+                                    VALUE_OPTIONAL),
+                            'timezone' =>
+                                new external_value(PARAM_TIMEZONE, 'Timezone code such as Australia/Perth, or 99 for default',
+                                    VALUE_OPTIONAL),
+                            'mailformat' =>
+                                new external_value(PARAM_INT, 'Mail format code is 0 for plain text, 1 for HTML etc',
+                                    VALUE_OPTIONAL),
+                            'description' =>
+                                new external_value(PARAM_TEXT, 'User profile description, no HTML', VALUE_OPTIONAL),
+                            'city' =>
+                                new external_value(PARAM_NOTAGS, 'Home city of the user', VALUE_OPTIONAL),
+                            'country' =>
+                                new external_value(PARAM_ALPHA, 'Home country code of the user, such as AU or CZ', VALUE_OPTIONAL),
+                            'firstnamephonetic' =>
+                                new external_value(PARAM_NOTAGS, 'The first name(s) phonetically of the user', VALUE_OPTIONAL),
+                            'lastnamephonetic' =>
+                                new external_value(PARAM_NOTAGS, 'The family name phonetically of the user', VALUE_OPTIONAL),
+                            'middlename' =>
+                                new external_value(PARAM_NOTAGS, 'The middle name of the user', VALUE_OPTIONAL),
+                            'alternatename' =>
+                                new external_value(PARAM_NOTAGS, 'The alternate name of the user', VALUE_OPTIONAL),
+                            'customfields' => new external_multiple_structure(
                                 new external_single_structure(
                                     array(
                                         'type'  => new external_value(PARAM_ALPHANUMEXT, 'The name of the custom field'),
@@ -330,34 +388,34 @@ class core_user_external extends external_api {
     public static function update_users($users) {
         global $CFG, $DB;
         require_once($CFG->dirroot."/user/lib.php");
-        require_once($CFG->dirroot."/user/profile/lib.php"); //required for customfields related function
+        require_once($CFG->dirroot."/user/profile/lib.php"); // Required for customfields related function.
 
-        // Ensure the current user is allowed to run this function
+        // Ensure the current user is allowed to run this function.
         $context = context_system::instance();
         require_capability('moodle/user:update', $context);
         self::validate_context($context);
 
-        $params = self::validate_parameters(self::update_users_parameters(), array('users'=>$users));
+        $params = self::validate_parameters(self::update_users_parameters(), array('users' => $users));
 
         $transaction = $DB->start_delegated_transaction();
 
         foreach ($params['users'] as $user) {
             user_update_user($user);
-            //update user custom fields
-            if(!empty($user['customfields'])) {
+            // Update user custom fields.
+            if (!empty($user['customfields'])) {
 
-                foreach($user['customfields'] as $customfield) {
-                    $user["profile_field_".$customfield['type']] = $customfield['value']; //profile_save_data() saves profile file
-                                                                                            //it's expecting a user with the correct id,
-                                                                                            //and custom field to be named profile_field_"shortname"
+                foreach ($user['customfields'] as $customfield) {
+                    // Profile_save_data() saves profile file it's expecting a user with the correct id,
+                    // and custom field to be named profile_field_"shortname".
+                    $user["profile_field_".$customfield['type']] = $customfield['value'];
                 }
                 profile_save_data((object) $user);
             }
 
-            //preferences
+            // Preferences.
             if (!empty($user['preferences'])) {
-                foreach($user['preferences'] as $preference) {
-                    set_user_preference($preference['type'], $preference['value'],$user['id']);
+                foreach ($user['preferences'] as $preference) {
+                    set_user_preference($preference['type'], $preference['value'], $user['id']);
                 }
             }
         }
@@ -367,7 +425,7 @@ class core_user_external extends external_api {
         return null;
     }
 
-   /**
+    /**
      * Returns description of method result value
      *
      * @return null
@@ -377,12 +435,12 @@ class core_user_external extends external_api {
         return null;
     }
 
-   /**
-   * Returns description of method parameters
-   *
-   * @return external_function_parameters
-   * @since Moodle 2.4
-   */
+    /**
+     * Returns description of method parameters
+     *
+     * @return external_function_parameters
+     * @since Moodle 2.4
+     */
     public static function get_users_by_field_parameters() {
         return new external_function_parameters(
             array(
@@ -397,6 +455,8 @@ class core_user_external extends external_api {
     /**
      * Get user information for a unique field.
      *
+     * @throws coding_exception
+     * @throws invalid_parameter_exception
      * @param string $field
      * @param array $values
      * @return array An array of arrays containg user profiles.
@@ -431,7 +491,7 @@ class core_user_external extends external_api {
                         'The search field \'' . $field . '\' is not supported, look at the web service documentation');
         }
 
-        // Clean the values
+        // Clean the values.
         foreach ($values as $value) {
             $cleanedvalue = clean_param($value, $paramtype);
             if ( $value != $cleanedvalue) {
@@ -441,16 +501,16 @@ class core_user_external extends external_api {
             $cleanedvalues[] = $cleanedvalue;
         }
 
-        // Retrieve the users
+        // Retrieve the users.
         $users = $DB->get_records_list('user', $field, $cleanedvalues, 'id');
 
-        // Finally retrieve each users information
+        // Finally retrieve each users information.
         $returnedusers = array();
         foreach ($users as $user) {
             $userdetails = user_get_user_details_courses($user);
 
-            // Return the user only if the searched field is returned
-            // Otherwise it means that the $USER was not allowed to search the returned user
+            // Return the user only if the searched field is returned.
+            // Otherwise it means that the $USER was not allowed to search the returned user.
             if (!empty($userdetails) and !empty($userdetails[$field])) {
                 $returnedusers[] = $userdetails;
             }
@@ -507,6 +567,7 @@ class core_user_external extends external_api {
     /**
      * Retrieve matching user.
      *
+     * @throws moodle_exception
      * @param array $criteria the allowed array keys are id/lastname/firstname/idnumber/username/email/auth.
      * @return array An array of arrays containing user profiles.
      * @since Moodle 2.5
@@ -567,7 +628,8 @@ class core_user_external extends external_api {
                     $warnings[] = array(
                         'item' => $criteria['key'],
                         'warningcode' => 'invalidfieldparameter',
-                        'message' => 'The search key \'' . $criteria['key'] . '\' is not supported, look at the web service documentation'
+                        'message' =>
+                            'The search key \'' . $criteria['key'] . '\' is not supported, look at the web service documentation'
                     );
                     // Do not add this invalid criteria to the created SQL request.
                     $invalidcriteria = true;
@@ -613,7 +675,7 @@ class core_user_external extends external_api {
             if (!empty($userdetails)) {
                 $validuser = true;
 
-                foreach($params['criteria'] as $criteria) {
+                foreach ($params['criteria'] as $criteria) {
                     if (empty($userdetails[$criteria['key']])) {
                         $validuser = false;
                     }
@@ -654,9 +716,9 @@ class core_user_external extends external_api {
      */
     public static function get_users_by_id_parameters() {
         return new external_function_parameters(
-                array(
-                    'userids' => new external_multiple_structure(new external_value(PARAM_INT, 'user ID')),
-                )
+            array(
+                'userids' => new external_multiple_structure(new external_value(PARAM_INT, 'user ID')),
+            )
         );
     }
 
@@ -677,7 +739,7 @@ class core_user_external extends external_api {
         require_once($CFG->dirroot . "/user/lib.php");
 
         $params = self::validate_parameters(self::get_users_by_id_parameters(),
-                array('userids'=>$userids));
+                array('userids' => $userids));
 
         list($sqluserids, $params) = $DB->get_in_or_equal($userids, SQL_PARAMS_NAMED);
         $uselect = ', ' . context_helper::get_preload_record_columns_sql('ctx');
@@ -700,7 +762,7 @@ class core_user_external extends external_api {
             $currentuser = ($user->id == $USER->id);
 
             if ($userarray  = user_get_user_details($user)) {
-                //fields matching permissions from /user/editadvanced.php
+                // Fields matching permissions from /user/editadvanced.php.
                 if ($currentuser or $hasuserupdatecap) {
                     $userarray['auth']       = $user->auth;
                     $userarray['confirmed']  = $user->confirmed;
@@ -770,7 +832,7 @@ class core_user_external extends external_api {
     public static function get_course_user_profiles($userlist) {
         global $CFG, $USER, $DB;
         require_once($CFG->dirroot . "/user/lib.php");
-        $params = self::validate_parameters(self::get_course_user_profiles_parameters(), array('userlist'=>$userlist));
+        $params = self::validate_parameters(self::get_course_user_profiles_parameters(), array('userlist' => $userlist));
 
         $userids = array();
         $courseids = array();
@@ -779,7 +841,7 @@ class core_user_external extends external_api {
             $courseids[$value['userid']] = $value['courseid'];
         }
 
-        // cache all courses
+        // Cache all courses.
         $courses = array();
         list($sqlcourseids, $params) = $DB->get_in_or_equal(array_unique($courseids), SQL_PARAMS_NAMED);
         $cselect = ', ' . context_helper::get_preload_record_columns_sql('ctx');
@@ -790,9 +852,9 @@ class core_user_external extends external_api {
                        WHERE c.id $sqlcourseids";
         $rs = $DB->get_recordset_sql($coursesql, $params);
         foreach ($rs as $course) {
-            // adding course contexts to cache
+            // Adding course contexts to cache.
             context_helper::preload_from_record($course);
-            // cache courses
+            // Cache courses.
             $courses[$course->id] = $course;
         }
         $rs->close();
@@ -832,33 +894,33 @@ class core_user_external extends external_api {
      */
     public static function get_course_user_profiles_returns() {
         $additionalfields = array(
-                    'groups' => new external_multiple_structure(
-                        new external_single_structure(
-                            array(
-                                'id'  => new external_value(PARAM_INT, 'group id'),
-                                'name' => new external_value(PARAM_RAW, 'group name'),
-                                'description' => new external_value(PARAM_RAW, 'group description'),
-                                'descriptionformat' => new external_format_value('description'),
-                            )
-                        ), 'user groups', VALUE_OPTIONAL),
-                    'roles' => new external_multiple_structure(
-                        new external_single_structure(
-                            array(
-                                'roleid'       => new external_value(PARAM_INT, 'role id'),
-                                'name'         => new external_value(PARAM_RAW, 'role name'),
-                                'shortname'    => new external_value(PARAM_ALPHANUMEXT, 'role shortname'),
-                                'sortorder'    => new external_value(PARAM_INT, 'role sortorder')
-                            )
-                        ), 'user roles', VALUE_OPTIONAL),
-                    'enrolledcourses' => new external_multiple_structure(
-                        new external_single_structure(
-                            array(
-                                'id'  => new external_value(PARAM_INT, 'Id of the course'),
-                                'fullname'  => new external_value(PARAM_RAW, 'Fullname of the course'),
-                                'shortname' => new external_value(PARAM_RAW, 'Shortname of the course')
-                            )
-                        ), 'Courses where the user is enrolled - limited by which courses the user is able to see', VALUE_OPTIONAL)
-                    );
+            'groups' => new external_multiple_structure(
+                new external_single_structure(
+                    array(
+                        'id'  => new external_value(PARAM_INT, 'group id'),
+                        'name' => new external_value(PARAM_RAW, 'group name'),
+                        'description' => new external_value(PARAM_RAW, 'group description'),
+                        'descriptionformat' => new external_format_value('description'),
+                    )
+                ), 'user groups', VALUE_OPTIONAL),
+            'roles' => new external_multiple_structure(
+                new external_single_structure(
+                    array(
+                        'roleid'       => new external_value(PARAM_INT, 'role id'),
+                        'name'         => new external_value(PARAM_RAW, 'role name'),
+                        'shortname'    => new external_value(PARAM_ALPHANUMEXT, 'role shortname'),
+                        'sortorder'    => new external_value(PARAM_INT, 'role sortorder')
+                    )
+                ), 'user roles', VALUE_OPTIONAL),
+            'enrolledcourses' => new external_multiple_structure(
+                new external_single_structure(
+                    array(
+                        'id'  => new external_value(PARAM_INT, 'Id of the course'),
+                        'fullname'  => new external_value(PARAM_RAW, 'Fullname of the course'),
+                        'shortname' => new external_value(PARAM_RAW, 'Shortname of the course')
+                    )
+                ), 'Courses where the user is enrolled - limited by which courses the user is able to see', VALUE_OPTIONAL)
+        );
 
         return new external_multiple_structure(self::user_description($additionalfields));
     }
@@ -871,57 +933,57 @@ class core_user_external extends external_api {
      */
     public static function user_description($additionalfields = array()) {
         $userfields = array(
-                    'id'    => new external_value(PARAM_INT, 'ID of the user'),
-                    'username'    => new external_value(PARAM_RAW, 'The username', VALUE_OPTIONAL),
-                    'firstname'   => new external_value(PARAM_NOTAGS, 'The first name(s) of the user', VALUE_OPTIONAL),
-                    'lastname'    => new external_value(PARAM_NOTAGS, 'The family name of the user', VALUE_OPTIONAL),
-                    'fullname'    => new external_value(PARAM_NOTAGS, 'The fullname of the user'),
-                    'email'       => new external_value(PARAM_TEXT, 'An email address - allow email as root@localhost', VALUE_OPTIONAL),
-                    'address'     => new external_value(PARAM_TEXT, 'Postal address', VALUE_OPTIONAL),
-                    'phone1'      => new external_value(PARAM_NOTAGS, 'Phone 1', VALUE_OPTIONAL),
-                    'phone2'      => new external_value(PARAM_NOTAGS, 'Phone 2', VALUE_OPTIONAL),
-                    'icq'         => new external_value(PARAM_NOTAGS, 'icq number', VALUE_OPTIONAL),
-                    'skype'       => new external_value(PARAM_NOTAGS, 'skype id', VALUE_OPTIONAL),
-                    'yahoo'       => new external_value(PARAM_NOTAGS, 'yahoo id', VALUE_OPTIONAL),
-                    'aim'         => new external_value(PARAM_NOTAGS, 'aim id', VALUE_OPTIONAL),
-                    'msn'         => new external_value(PARAM_NOTAGS, 'msn number', VALUE_OPTIONAL),
-                    'department'  => new external_value(PARAM_TEXT, 'department', VALUE_OPTIONAL),
-                    'institution' => new external_value(PARAM_TEXT, 'institution', VALUE_OPTIONAL),
-                    'idnumber'    => new external_value(PARAM_RAW, 'An arbitrary ID code number perhaps from the institution', VALUE_OPTIONAL),
-                    'interests'   => new external_value(PARAM_TEXT, 'user interests (separated by commas)', VALUE_OPTIONAL),
-                    'firstaccess' => new external_value(PARAM_INT, 'first access to the site (0 if never)', VALUE_OPTIONAL),
-                    'lastaccess'  => new external_value(PARAM_INT, 'last access to the site (0 if never)', VALUE_OPTIONAL),
-                    'auth'        => new external_value(PARAM_PLUGIN, 'Auth plugins include manual, ldap, imap, etc', VALUE_OPTIONAL),
-                    'confirmed'   => new external_value(PARAM_INT, 'Active user: 1 if confirmed, 0 otherwise', VALUE_OPTIONAL),
-                    'lang'        => new external_value(PARAM_SAFEDIR, 'Language code such as "en", must exist on server', VALUE_OPTIONAL),
-                    'calendartype' => new external_value(PARAM_PLUGIN, 'Calendar type such as "gregorian", must exist on server', VALUE_OPTIONAL),
-                    'theme'       => new external_value(PARAM_PLUGIN, 'Theme name such as "standard", must exist on server', VALUE_OPTIONAL),
-                    'timezone'    => new external_value(PARAM_TIMEZONE, 'Timezone code such as Australia/Perth, or 99 for default', VALUE_OPTIONAL),
-                    'mailformat'  => new external_value(PARAM_INT, 'Mail format code is 0 for plain text, 1 for HTML etc', VALUE_OPTIONAL),
-                    'description' => new external_value(PARAM_RAW, 'User profile description', VALUE_OPTIONAL),
-                    'descriptionformat' => new external_format_value('description', VALUE_OPTIONAL),
-                    'city'        => new external_value(PARAM_NOTAGS, 'Home city of the user', VALUE_OPTIONAL),
-                    'url'         => new external_value(PARAM_URL, 'URL of the user', VALUE_OPTIONAL),
-                    'country'     => new external_value(PARAM_ALPHA, 'Home country code of the user, such as AU or CZ', VALUE_OPTIONAL),
-                    'profileimageurlsmall' => new external_value(PARAM_URL, 'User image profile URL - small version'),
-                    'profileimageurl' => new external_value(PARAM_URL, 'User image profile URL - big version'),
-                    'customfields' => new external_multiple_structure(
-                        new external_single_structure(
-                            array(
-                                'type'  => new external_value(PARAM_ALPHANUMEXT, 'The type of the custom field - text field, checkbox...'),
-                                'value' => new external_value(PARAM_RAW, 'The value of the custom field'),
-                                'name' => new external_value(PARAM_RAW, 'The name of the custom field'),
-                                'shortname' => new external_value(PARAM_RAW, 'The shortname of the custom field - to be able to build the field class in the code'),
-                            )
-                        ), 'User custom fields (also known as user profile fields)', VALUE_OPTIONAL),
-                    'preferences' => new external_multiple_structure(
-                        new external_single_structure(
-                            array(
-                                'name'  => new external_value(PARAM_ALPHANUMEXT, 'The name of the preferences'),
-                                'value' => new external_value(PARAM_RAW, 'The value of the custom field'),
-                            )
-                    ), 'Users preferences', VALUE_OPTIONAL)
-                );
+            'id'    => new external_value(PARAM_INT, 'ID of the user'),
+            'username'    => new external_value(PARAM_RAW, 'The username', VALUE_OPTIONAL),
+            'firstname'   => new external_value(PARAM_NOTAGS, 'The first name(s) of the user', VALUE_OPTIONAL),
+            'lastname'    => new external_value(PARAM_NOTAGS, 'The family name of the user', VALUE_OPTIONAL),
+            'fullname'    => new external_value(PARAM_NOTAGS, 'The fullname of the user'),
+            'email'       => new external_value(PARAM_TEXT, 'An email address - allow email as root@localhost', VALUE_OPTIONAL),
+            'address'     => new external_value(PARAM_TEXT, 'Postal address', VALUE_OPTIONAL),
+            'phone1'      => new external_value(PARAM_NOTAGS, 'Phone 1', VALUE_OPTIONAL),
+            'phone2'      => new external_value(PARAM_NOTAGS, 'Phone 2', VALUE_OPTIONAL),
+            'icq'         => new external_value(PARAM_NOTAGS, 'icq number', VALUE_OPTIONAL),
+            'skype'       => new external_value(PARAM_NOTAGS, 'skype id', VALUE_OPTIONAL),
+            'yahoo'       => new external_value(PARAM_NOTAGS, 'yahoo id', VALUE_OPTIONAL),
+            'aim'         => new external_value(PARAM_NOTAGS, 'aim id', VALUE_OPTIONAL),
+            'msn'         => new external_value(PARAM_NOTAGS, 'msn number', VALUE_OPTIONAL),
+            'department'  => new external_value(PARAM_TEXT, 'department', VALUE_OPTIONAL),
+            'institution' => new external_value(PARAM_TEXT, 'institution', VALUE_OPTIONAL),
+            'idnumber'    => new external_value(PARAM_RAW, 'An arbitrary ID code number perhaps from the institution', VALUE_OPTIONAL),
+            'interests'   => new external_value(PARAM_TEXT, 'user interests (separated by commas)', VALUE_OPTIONAL),
+            'firstaccess' => new external_value(PARAM_INT, 'first access to the site (0 if never)', VALUE_OPTIONAL),
+            'lastaccess'  => new external_value(PARAM_INT, 'last access to the site (0 if never)', VALUE_OPTIONAL),
+            'auth'        => new external_value(PARAM_PLUGIN, 'Auth plugins include manual, ldap, imap, etc', VALUE_OPTIONAL),
+            'confirmed'   => new external_value(PARAM_INT, 'Active user: 1 if confirmed, 0 otherwise', VALUE_OPTIONAL),
+            'lang'        => new external_value(PARAM_SAFEDIR, 'Language code such as "en", must exist on server', VALUE_OPTIONAL),
+            'calendartype' => new external_value(PARAM_PLUGIN, 'Calendar type such as "gregorian", must exist on server', VALUE_OPTIONAL),
+            'theme'       => new external_value(PARAM_PLUGIN, 'Theme name such as "standard", must exist on server', VALUE_OPTIONAL),
+            'timezone'    => new external_value(PARAM_TIMEZONE, 'Timezone code such as Australia/Perth, or 99 for default', VALUE_OPTIONAL),
+            'mailformat'  => new external_value(PARAM_INT, 'Mail format code is 0 for plain text, 1 for HTML etc', VALUE_OPTIONAL),
+            'description' => new external_value(PARAM_RAW, 'User profile description', VALUE_OPTIONAL),
+            'descriptionformat' => new external_format_value('description', VALUE_OPTIONAL),
+            'city'        => new external_value(PARAM_NOTAGS, 'Home city of the user', VALUE_OPTIONAL),
+            'url'         => new external_value(PARAM_URL, 'URL of the user', VALUE_OPTIONAL),
+            'country'     => new external_value(PARAM_ALPHA, 'Home country code of the user, such as AU or CZ', VALUE_OPTIONAL),
+            'profileimageurlsmall' => new external_value(PARAM_URL, 'User image profile URL - small version'),
+            'profileimageurl' => new external_value(PARAM_URL, 'User image profile URL - big version'),
+            'customfields' => new external_multiple_structure(
+                new external_single_structure(
+                    array(
+                        'type'  => new external_value(PARAM_ALPHANUMEXT, 'The type of the custom field - text field, checkbox...'),
+                        'value' => new external_value(PARAM_RAW, 'The value of the custom field'),
+                        'name' => new external_value(PARAM_RAW, 'The name of the custom field'),
+                        'shortname' => new external_value(PARAM_RAW, 'The shortname of the custom field - to be able to build the field class in the code'),
+                    )
+                ), 'User custom fields (also known as user profile fields)', VALUE_OPTIONAL),
+            'preferences' => new external_multiple_structure(
+                new external_single_structure(
+                    array(
+                        'name'  => new external_value(PARAM_ALPHANUMEXT, 'The name of the preferences'),
+                        'value' => new external_value(PARAM_RAW, 'The value of the custom field'),
+                    )
+            ), 'Users preferences', VALUE_OPTIONAL)
+        );
         if (!empty($additionalfields)) {
             $userfields = array_merge($userfields, $additionalfields);
         }
@@ -945,6 +1007,7 @@ class core_user_external extends external_api {
     /**
      * Copy files from a draft area to users private files area.
      *
+     * @throws invalid_parameter_exception
      * @param int $draftid Id of a draft area containing files.
      * @return array An array of warnings
      * @since Moodle 2.6
@@ -953,7 +1016,7 @@ class core_user_external extends external_api {
         global $CFG, $USER, $DB;
 
         require_once($CFG->dirroot . "/user/lib.php");
-        $params = self::validate_parameters(self::add_user_private_files_parameters(), array('draftid'=>$draftid));
+        $params = self::validate_parameters(self::add_user_private_files_parameters(), array('draftid' => $draftid));
 
         if (isguestuser()) {
             throw new invalid_parameter_exception('Guest users cannot upload files');
@@ -1013,6 +1076,7 @@ class core_user_external extends external_api {
     /**
      * Add a user device in Moodle database (for PUSH notifications usually).
      *
+     * @throws moodle_exception
      * @param string $appid The app id, usually something like com.moodle.moodlemobile.
      * @param string $name The device name, occam or iPhone etc.
      * @param string $model The device model Nexus4 or iPad1.1 etc.
@@ -1093,15 +1157,15 @@ class core_user_external extends external_api {
 }
 
  /**
- * Deprecated user external functions
- *
- * @package    core_user
- * @copyright  2009 Petr Skodak
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- * @since Moodle 2.0
- * @deprecated Moodle 2.2 MDL-29106 - Please do not use this class any more.
- * @see core_user_external
- */
 * Deprecated user external functions
 *
 * @package    core_user
 * @copyright  2009 Petr Skodak
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @since Moodle 2.0
 * @deprecated Moodle 2.2 MDL-29106 - Please do not use this class any more.
 * @see core_user_external
 */
 class moodle_user_external extends external_api {
 
     /**
@@ -1129,7 +1193,7 @@ class moodle_user_external extends external_api {
         return core_user_external::create_users($users);
     }
 
-   /**
+    /**
      * Returns description of method result value
      *
      * @return external_description
@@ -1167,7 +1231,7 @@ class moodle_user_external extends external_api {
         return core_user_external::delete_users($userids);
     }
 
-   /**
+    /**
      * Returns description of method result value
      *
      * @return null
@@ -1205,7 +1269,7 @@ class moodle_user_external extends external_api {
         return core_user_external::update_users($users);
     }
 
-   /**
+    /**
      * Returns description of method result value
      *
      * @return null
index 9305cab..f1f03b7 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,7 +17,8 @@
 /**
  * Manage files in folder in private area.
  *
- * @package   core_files
+ * @package   core_user
+ * @category  files
  * @copyright 2010 Petr Skoda (http://skodak.org)
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
@@ -64,7 +64,7 @@ $options = array('subdirs' => 1, 'maxbytes' => $maxbytes, 'maxfiles' => -1, 'acc
         'areamaxbytes' => $maxareabytes);
 file_prepare_standard_filemanager($data, 'files', $options, $context, 'user', 'private', 0);
 
-$mform = new user_files_form(null, array('data'=>$data, 'options'=>$options));
+$mform = new user_files_form(null, array('data' => $data, 'options' => $options));
 
 if ($mform->is_cancelled()) {
     redirect($returnurl);
index bbbd841..9c0947e 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,7 +17,8 @@
 /**
  * minimalistic edit form
  *
- * @package   block_private_files
+ * @package   core_user
+ * @category  files
  * @copyright 2010 Petr Skoda (http://skodak.org)
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
@@ -27,12 +27,21 @@ defined('MOODLE_INTERNAL') || die();
 
 require_once("$CFG->libdir/formslib.php");
 
+/**
+ * Class user_files_form
+ * @copyright 2010 Petr Skoda (http://skodak.org)
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 class user_files_form extends moodleform {
-    function definition() {
+
+    /**
+     * Add elements to this form.
+     */
+    public function definition() {
         $mform = $this->_form;
 
-        $data           = $this->_customdata['data'];
-        $options        = $this->_customdata['options'];
+        $data = $this->_customdata['data'];
+        $options = $this->_customdata['options'];
 
         $mform->addElement('filemanager', 'files_filemanager', get_string('files'), null, $options);
         $mform->addElement('hidden', 'returnurl', $data->returnurl);
@@ -42,9 +51,15 @@ class user_files_form extends moodleform {
 
         $this->set_data($data);
     }
-    function validation($data, $files) {
-        global $CFG;
 
+    /**
+     * Validate incoming data.
+     *
+     * @param array $data
+     * @param array $files
+     * @return array
+     */
+    public function validation($data, $files) {
         $errors = array();
         $draftitemid = $data['files_filemanager'];
         if (file_is_draft_area_limit_reached($draftitemid, $this->_customdata['options']['areamaxbytes'])) {
index 34ad747..8567e13 100644 (file)
  * This will create generic filter with checkbox option and can be used for
  * disabling other elements for specific condition.
  *
- * @package    user
- * @copyright  2011 Rajesh Taneja
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @package   core_user
+ * @category  user
+ * @copyright 2011 Rajesh Taneja
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
 defined('MOODLE_INTERNAL') || die();
@@ -31,6 +32,8 @@ require_once($CFG->dirroot.'/user/filters/lib.php');
 
 /**
  * Generic filter based for checkbox and can be used for disabling items
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class user_filter_checkbox extends user_filter_type {
     /**
@@ -81,7 +84,7 @@ class user_filter_checkbox extends user_filter_type {
         if ($this->_advanced) {
             $mform->setAdvanced($this->_name.'_grp');
         }
-        //Check if disable if options are set. if yes then set rules
+        // Check if disable if options are set. if yes then set rules.
         if (!empty($this->disableelements) && is_array($this->disableelements)) {
             foreach ($this->disableelements as $disableelement) {
                 $mform->disabledIf($disableelement, $this->_name, 'checked');
@@ -97,7 +100,7 @@ class user_filter_checkbox extends user_filter_type {
      */
     public function check_data($formdata) {
         $field = $this->_name;
-        //Check if disable if options are set. if yes then don't add this.
+        // Check if disable if options are set. if yes then don't add this..
         if (!empty($this->disableelements) && is_array($this->disableelements)) {
             foreach ($this->disableelements as $disableelement) {
                 if (array_key_exists($disableelement, $formdata)) {
index 8b2f7f3..af97cb2 100644 (file)
@@ -1,4 +1,27 @@
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Cohort filter.
+ *
+ * @package   core_user
+ * @category  user
+ * @copyright 2011 Petr Skoda
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
 defined('MOODLE_INTERNAL') || die();
 
@@ -6,13 +29,15 @@ require_once($CFG->dirroot.'/user/filters/lib.php');
 
 /**
  * Generic filter for cohort membership.
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class user_filter_cohort extends user_filter_type {
     /**
      * Constructor
      * @param boolean $advanced advanced form element flag
      */
-    function user_filter_cohort($advanced) {
+    public function user_filter_cohort($advanced) {
         parent::user_filter_type('cohort', get_string('idnumber', 'core_cohort'), $advanced);
     }
 
@@ -20,22 +45,22 @@ class user_filter_cohort extends user_filter_type {
      * Returns an array of comparison operators
      * @return array of comparison operators
      */
-    function getOperators() {
+    public function getOperators() {
         return array(0 => get_string('contains', 'filters'),
-                     1 => get_string('doesnotcontain','filters'),
-                     2 => get_string('isequalto','filters'),
-                     3 => get_string('startswith','filters'),
-                     4 => get_string('endswith','filters'));
+                     1 => get_string('doesnotcontain', 'filters'),
+                     2 => get_string('isequalto', 'filters'),
+                     3 => get_string('startswith', 'filters'),
+                     4 => get_string('endswith', 'filters'));
     }
 
     /**
      * Adds controls specific to this filter in the form.
      * @param object $mform a MoodleForm object to setup
      */
-    function setupForm(&$mform) {
+    public function setupForm(&$mform) {
         $objs = array();
-        $objs[] =& $mform->createElement('select', $this->_name.'_op', null, $this->getOperators());
-        $objs[] =& $mform->createElement('text', $this->_name, null);
+        $objs[] = $mform->createElement('select', $this->_name.'_op', null, $this->getOperators());
+        $objs[] = $mform->createElement('text', $this->_name, null);
         $grp =& $mform->addElement('group', $this->_name.'_grp', $this->_label, $objs, '', false);
         $mform->setType($this->_name, PARAM_RAW);
         $mform->disabledIf($this->_name, $this->_name.'_op', 'eq', 5);
@@ -50,7 +75,7 @@ class user_filter_cohort extends user_filter_type {
      * @param object $formdata data submited with the form
      * @return mixed array filter data or false when filter not set
      */
-    function check_data($formdata) {
+    public function check_data($formdata) {
         $field    = $this->_name;
         $operator = $field.'_op';
 
@@ -58,7 +83,7 @@ class user_filter_cohort extends user_filter_type {
             if ($formdata->$field == '') {
                 return false;
             }
-            return array('operator'=>(int)$formdata->$operator, 'value'=>$formdata->$field);
+            return array('operator' => (int)$formdata->$operator, 'value' => $formdata->$field);
         }
 
         return false;
@@ -69,7 +94,7 @@ class user_filter_cohort extends user_filter_type {
      * @param array $data filter settings
      * @return array sql string and $params
      */
-    function get_sql_filter($data) {
+    public function get_sql_filter($data) {
         global $DB;
         static $counter = 0;
         $name = 'ex_cohort'.$counter++;
@@ -84,23 +109,23 @@ class user_filter_cohort extends user_filter_type {
         }
 
         switch($operator) {
-            case 0: // contains
+            case 0: // Contains.
                 $res = $DB->sql_like('idnumber', ":$name", false, false);
                 $params[$name] = "%$value%";
                 break;
-            case 1: // does not contain
+            case 1: // Does not contain.
                 $res = $DB->sql_like('idnumber', ":$name", false, false, true);
                 $params[$name] = "%$value%";
                 break;
-            case 2: // equal to
+            case 2: // Equal to.
                 $res = $DB->sql_like('idnumber', ":$name", false, false);
                 $params[$name] = "$value";
                 break;
-            case 3: // starts with
+            case 3: // Starts with.
                 $res = $DB->sql_like('idnumber', ":$name", false, false);
                 $params[$name] = "$value%";
                 break;
-            case 4: // ends with
+            case 4: // Ends with.
                 $res = $DB->sql_like('idnumber', ":$name", false, false);
                 $params[$name] = "%$value";
                 break;
@@ -121,7 +146,7 @@ class user_filter_cohort extends user_filter_type {
      * @param array $data filter settings
      * @return string active filter label
      */
-    function get_label($data) {
+    public function get_label($data) {
         $operator  = $data['operator'];
         $value     = $data['value'];
         $operators = $this->getOperators();
@@ -131,13 +156,12 @@ class user_filter_cohort extends user_filter_type {
         $a->value    = '"'.s($value).'"';
         $a->operator = $operators[$operator];
 
-
         switch ($operator) {
-            case 0: // contains
-            case 1: // doesn't contain
-            case 2: // equal to
-            case 3: // starts with
-            case 4: // ends with
+            case 0: // Contains.
+            case 1: // Doesn't contain.
+            case 2: // Equal to.
+            case 3: // Starts with.
+            case 4: // Ends with.
                 return get_string('textlabel', 'filters', $a);
         }
 
index 09d3d7f..043df03 100644 (file)
@@ -1,9 +1,34 @@
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Course role filter
+ *
+ * @package   core_user
+ * @category  user
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
 require_once($CFG->dirroot .'/user/filters/lib.php');
 
 /**
  * User filter based on roles in a course identified by its shortname.
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class user_filter_courserole extends user_filter_type {
     /**
@@ -12,7 +37,7 @@ class user_filter_courserole extends user_filter_type {
      * @param string $label the label of the filter instance
      * @param boolean $advanced advanced form element flag
      */
-    function user_filter_courserole($name, $label, $advanced) {
+    public function user_filter_courserole($name, $label, $advanced) {
         parent::user_filter_type($name, $label, $advanced);
     }
 
@@ -20,9 +45,9 @@ class user_filter_courserole extends user_filter_type {
      * Returns an array of available roles
      * @return array of availble roles
      */
-    function get_roles() {
+    public function get_roles() {
         $context = context_system::instance();
-        $roles = array(0=> get_string('anyrole','filters')) + get_default_enrol_roles($context);
+        $roles = array(0 => get_string('anyrole', 'filters')) + get_default_enrol_roles($context);
         return $roles;
     }
 
@@ -30,21 +55,21 @@ class user_filter_courserole extends user_filter_type {
      * Returns an array of course categories
      * @return array of course categories
      */
-    function get_course_categories() {
+    public function get_course_categories() {
         global $CFG;
         require_once($CFG->libdir.'/coursecatlib.php');
-        return array(0=> get_string('anycategory', 'filters')) + coursecat::make_categories_list();
+        return array(0 => get_string('anycategory', 'filters')) + coursecat::make_categories_list();
     }
 
     /**
      * Adds controls specific to this filter in the form.
-     * @param object $mform a MoodleForm object to setup
+     * @param moodleform $mform a MoodleForm object to setup
      */
-    function setupForm(&$mform) {
+    public function setupForm(&$mform) {
         $objs = array();
-        $objs[] =& $mform->createElement('select', $this->_name .'_rl', null, $this->get_roles());
-        $objs[] =& $mform->createElement('select', $this->_name .'_ct', null, $this->get_course_categories());
-        $objs[] =& $mform->createElement('text', $this->_name, null);
+        $objs[] = $mform->createElement('select', $this->_name .'_rl', null, $this->get_roles());
+        $objs[] = $mform->createElement('select', $this->_name .'_ct', null, $this->get_course_categories());
+        $objs[] = $mform->createElement('text', $this->_name, null);
         $grp =& $mform->addElement('group', $this->_name.'_grp', $this->_label, $objs, '', false);
         $mform->setType($this->_name, PARAM_ALPHANUMEXT);
         if ($this->_advanced) {
@@ -54,17 +79,17 @@ class user_filter_courserole extends user_filter_type {
 
     /**
      * Retrieves data from the form data
-     * @param object $formdata data submited with the form
+     * @param stdClass $formdata data submited with the form
      * @return mixed array filter data or false when filter not set
      */
-    function check_data($formdata) {
+    public function check_data($formdata) {
         $field    = $this->_name;
         $role     = $field .'_rl';
         $category = $field .'_ct';
 
         if (array_key_exists($field, $formdata)) {
             if (empty($formdata->$field) and empty($formdata->$role) and empty($formdata->$category)) {
-                // nothing selected
+                // Nothing selected.
                 return false;
             }
             return array('value'      => (string)$formdata->$field,
@@ -79,7 +104,7 @@ class user_filter_courserole extends user_filter_type {
      * @param array $data filter settings
      * @return array sql string and $params
      */
-    function get_sql_filter($data) {
+    public function get_sql_filter($data) {
         global $CFG, $DB;
         static $counter = 0;
         $pref = 'ex_courserole'.($counter++).'_';
@@ -119,7 +144,7 @@ class user_filter_courserole extends user_filter_type {
      * @param array $data filter settings
      * @return string active filter label
      */
-    function get_label($data) {
+    public function get_label($data) {
         global $DB;
 
         $value      = $data['value'];
@@ -130,14 +155,14 @@ class user_filter_courserole extends user_filter_type {
         $a->label = $this->_label;
 
         if ($roleid) {
-            $role = $DB->get_record('role', array('id'=>$roleid));
+            $role = $DB->get_record('role', array('id' => $roleid));
             $a->rolename = '"'.role_get_name($role).'"';
         } else {
             $a->rolename = get_string('anyrole', 'filters');
         }
 
         if ($categoryid) {
-            $catname = $DB->get_field('course_categories', 'name', array('id'=>$categoryid));
+            $catname = $DB->get_field('course_categories', 'name', array('id' => $categoryid));
             $a->categoryname = '"'.format_string($catname).'"';
         } else {
             $a->categoryname = get_string('anycategory', 'filters');
@@ -145,7 +170,7 @@ class user_filter_courserole extends user_filter_type {
 
         if ($value) {
             $a->coursename = '"'.s($value).'"';
-            if (!$DB->record_exists('course', array('shortname'=>$value))) {
+            if (!$DB->record_exists('course', array('shortname' => $value))) {
                 return '<span class="notifyproblem">'.get_string('courserolelabelerror', 'filters', $a).'</span>';
             }
         } else {
index 5b9ebe8..ab50f98 100644 (file)
@@ -1,15 +1,41 @@
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Date filter
+ *
+ * @package   core_user
+ * @category  user
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
 require_once($CFG->dirroot.'/user/filters/lib.php');
 
 /**
  * Generic filter based on a date.
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class user_filter_date extends user_filter_type {
     /**
      * the fields available for comparisson
+     * @var string
      */
-    var $_field;
+    public $_field;
 
     /**
      * Constructor
@@ -18,7 +44,7 @@ class user_filter_date extends user_filter_type {
      * @param boolean $advanced advanced form element flag
      * @param string $field user table filed name
      */
-    function user_filter_date($name, $label, $advanced, $field) {
+    public function user_filter_date($name, $label, $advanced, $field) {
         parent::user_filter_type($name, $label, $advanced);
         $this->_field = $field;
     }
@@ -27,14 +53,14 @@ class user_filter_date extends user_filter_type {
      * Adds controls specific to this filter in the form.
      * @param object $mform a MoodleForm object to setup
      */
-    function setupForm(&$mform) {
+    public function setupForm(&$mform) {
         $objs = array();
 
-        $objs[] =& $mform->createElement('static', $this->_name.'_sck', null, get_string('isafter', 'filters'));
-        $objs[] =& $mform->createElement('date_selector', $this->_name.'_sdt', null, array('optional' => true));
-        $objs[] =& $mform->createElement('static', $this->_name.'_break', null, '<br/>');
-        $objs[] =& $mform->createElement('static', $this->_name.'_edk', null, get_string('isbefore', 'filters'));
-        $objs[] =& $mform->createElement('date_selector', $this->_name.'_edt', null, array('optional' => true));
+        $objs[] = $mform->createElement('static', $this->_name.'_sck', null, get_string('isafter', 'filters'));
+        $objs[] = $mform->createElement('date_selector', $this->_name.'_sdt', null, array('optional' => true));
+        $objs[] = $mform->createElement('static', $this->_name.'_break', null, '<br/>');
+        $objs[] = $mform->createElement('static', $this->_name.'_edk', null, get_string('isbefore', 'filters'));
+        $objs[] = $mform->createElement('date_selector', $this->_name.'_edt', null, array('optional' => true));
 
         $grp =& $mform->addElement('group', $this->_name.'_grp', $this->_label, $objs, '', false);
 
@@ -48,7 +74,7 @@ class user_filter_date extends user_filter_type {
      * @param object $formdata data submited with the form
      * @return mixed array filter data or false when filter not set
      */
-    function check_data($formdata) {
+    public function check_data($formdata) {
         $sdt = $this->_name.'_sdt';
         $edt = $this->_name.'_edt';
 
@@ -68,7 +94,7 @@ class user_filter_date extends user_filter_type {
      * @param array $data filter settings
      * @return array sql string and $params
      */
-    function get_sql_filter($data) {
+    public function get_sql_filter($data) {
         $after  = (int)$data['after'];
         $before = (int)$data['before'];
 
@@ -78,7 +104,7 @@ class user_filter_date extends user_filter_type {
             return array('', array());
         }
 
-        $res = " $field >= 0 " ;
+        $res = " $field >= 0 ";
 
         if ($after) {
             $res .= " AND $field >= $after";
@@ -95,7 +121,7 @@ class user_filter_date extends user_filter_type {
      * @param array $data filter settings
      * @return string active filter label
      */
-    function get_label($data) {
+    public function get_label($data) {
         $after  = $data['after'];
         $before = $data['before'];
         $field  = $this->_field;
index ed33453..76a49a3 100644 (file)
@@ -1,9 +1,34 @@
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Global role filter
+ *
+ * @package   core_user
+ * @category  user
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
 require_once($CFG->dirroot.'/user/filters/lib.php');
 
 /**
  * User filter based on global roles.
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class user_filter_globalrole extends user_filter_type {
 
@@ -13,7 +38,7 @@ class user_filter_globalrole extends user_filter_type {
      * @param string $label the label of the filter instance
      * @param boolean $advanced advanced form element flag
      */
-    function user_filter_globalrole($name, $label, $advanced) {
+    public function user_filter_globalrole($name, $label, $advanced) {
         parent::user_filter_type($name, $label, $advanced);
     }
 
@@ -21,9 +46,9 @@ class user_filter_globalrole extends user_filter_type {
      * Returns an array of available roles
      * @return array of availble roles
      */
-    function get_roles() {
+    public function get_roles() {
         $context = context_system::instance();
-        $roles = array(0=> get_string('anyrole','filters')) + get_assignable_roles($context);
+        $roles = array(0 => get_string('anyrole', 'filters')) + get_assignable_roles($context);
         return $roles;
     }
 
@@ -31,7 +56,7 @@ class user_filter_globalrole extends user_filter_type {
      * Adds controls specific to this filter in the form.
      * @param object $mform a MoodleForm object to setup
      */
-    function setupForm(&$mform) {
+    public function setupForm(&$mform) {
         $obj =& $mform->addElement('select', $this->_name, $this->_label, $this->get_roles());
         $mform->setDefault($this->_name, 0);
         if ($this->_advanced) {
@@ -44,7 +69,7 @@ class user_filter_globalrole extends user_filter_type {
      * @param object $formdata data submited with the form
      * @return mixed array filter data or false when filter not set
      */
-    function check_data($formdata) {
+    public function check_data($formdata) {
         $field = $this->_name;
 
         if (array_key_exists($field, $formdata) and !empty($formdata->$field)) {
@@ -58,7 +83,7 @@ class user_filter_globalrole extends user_filter_type {
      * @param array $data filter settings
      * @return array sql string and $params
      */
-    function get_sql_filter($data) {
+    public function get_sql_filter($data) {
         global $CFG;
         $value = (int)$data['value'];
 
@@ -75,11 +100,10 @@ class user_filter_globalrole extends user_filter_type {
      * @param array $data filter settings
      * @return string active filter label
      */
-    function get_label($data) {
+    public function get_label($data) {
         global $DB;
 
-        $role = $DB->get_record('role', array('id'=>$data['value']));
-
+        $role = $DB->get_record('role', array('id' => $data['value']));
 
         $a = new stdClass();
         $a->label = $this->_label;
index 8afe265..342199e 100644 (file)
@@ -1,4 +1,27 @@
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * This file contains the User Filter API.
+ *
+ * @package   core_user
+ * @category  user
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
 require_once($CFG->dirroot.'/user/filters/text.php');
 require_once($CFG->dirroot.'/user/filters/date.php');
@@ -14,19 +37,25 @@ require_once($CFG->dirroot.'/user/filters/checkbox.php');
 
 /**
  * User filtering wrapper class.
+ *
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class user_filtering {
-    var $_fields;
-    var $_addform;
-    var $_activeform;
+    /** @var array */
+    public $_fields;
+    /** @var \user_add_filter_form */
+    public $_addform;
+    /** @var \user_active_filter_form */
+    public $_activeform;
 
     /**
      * Contructor
-     * @param array array of visible user fields
-     * @param string base url used for submission/return, null if the same of current page
-     * @param array extra page parameters
+     * @param array $fieldnames array of visible user fields
+     * @param string $baseurl base url used for submission/return, null if the same of current page
+     * @param array $extraparams extra page parameters
      */
-    function user_filtering($fieldnames=null, $baseurl=null, $extraparams=null) {
+    public function user_filtering($fieldnames = null, $baseurl = null, $extraparams = null) {
         global $SESSION;
 
         if (!isset($SESSION->user_filtering)) {
@@ -34,47 +63,47 @@ class user_filtering {
         }
 
         if (empty($fieldnames)) {
-            $fieldnames = array('realname'=>0, 'lastname'=>1, 'firstname'=>1, 'email'=>1, 'city'=>1, 'country'=>1,
-                                'confirmed'=>1, 'suspended'=>1, 'profile'=>1, 'courserole'=>1, 'systemrole'=>1, 'cohort'=>1,
-                                'firstaccess'=>1, 'lastaccess'=>1, 'neveraccessed'=>1, 'timemodified'=>1,
-                                'nevermodified'=>1, 'username'=>1, 'auth'=>1, 'mnethostid'=>1);
+            $fieldnames = array('realname' => 0, 'lastname' => 1, 'firstname' => 1, 'email' => 1, 'city' => 1, 'country' => 1,
+                                'confirmed' => 1, 'suspended' => 1, 'profile' => 1, 'courserole' => 1, 'systemrole' => 1,
+                                'cohort' => 1, 'firstaccess' => 1, 'lastaccess' => 1, 'neveraccessed' => 1, 'timemodified' => 1,
+                                'nevermodified' => 1, 'username' => 1, 'auth' => 1, 'mnethostid' => 1);
         }
 
         $this->_fields  = array();
 
-        foreach ($fieldnames as $fieldname=>$advanced) {
+        foreach ($fieldnames as $fieldname => $advanced) {
             if ($field = $this->get_field($fieldname, $advanced)) {
                 $this->_fields[$fieldname] = $field;
             }
         }
 
-        // fist the new filter form
-        $this->_addform = new user_add_filter_form($baseurl, array('fields'=>$this->_fields, 'extraparams'=>$extraparams));
+        // Fist the new filter form.
+        $this->_addform = new user_add_filter_form($baseurl, array('fields' => $this->_fields, 'extraparams' => $extraparams));
         if ($adddata = $this->_addform->get_data()) {
-            foreach($this->_fields as $fname=>$field) {
+            foreach ($this->_fields as $fname => $field) {
                 $data = $field->check_data($adddata);
                 if ($data === false) {
-                    continue; // nothing new
+                    continue; // Nothing new.
                 }
                 if (!array_key_exists($fname, $SESSION->user_filtering)) {
                     $SESSION->user_filtering[$fname] = array();
                 }
                 $SESSION->user_filtering[$fname][] = $data;
             }
-            // clear the form
+            // Clear the form.
             $_POST = array();
-            $this->_addform = new user_add_filter_form($baseurl, array('fields'=>$this->_fields, 'extraparams'=>$extraparams));
+            $this->_addform = new user_add_filter_form($baseurl, array('fields' => $this->_fields, 'extraparams' => $extraparams));
         }
 
-        // now the active filters
-        $this->_activeform = new user_active_filter_form($baseurl, array('fields'=>$this->_fields, 'extraparams'=>$extraparams));
+        // Now the active filters.
+        $this->_activeform = new user_active_filter_form($baseurl, array('fields' => $this->_fields, 'extraparams' => $extraparams));
         if ($adddata = $this->_activeform->get_data()) {
             if (!empty($adddata->removeall)) {
                 $SESSION->user_filtering = array();
 
             } else if (!empty($adddata->removeselected) and !empty($adddata->filter)) {
-                foreach($adddata->filter as $fname=>$instances) {
-                    foreach ($instances as $i=>$val) {
+                foreach ($adddata->filter as $fname => $instances) {
+                    foreach ($instances as $i => $val) {
                         if (empty($val)) {
                             continue;
                         }
@@ -85,11 +114,11 @@ class user_filtering {
                     }
                 }
             }
-            // clear+reload the form
+            // Clear+reload the form.
             $_POST = array();
-            $this->_activeform = new user_active_filter_form($baseurl, array('fields'=>$this->_fields, 'extraparams'=>$extraparams));
+            $this->_activeform = new user_active_filter_form($baseurl, array('fields' => $this->_fields, 'extraparams' => $extraparams));
         }
-        // now the active filters
+        // Now the active filters.
     }
 
     /**
@@ -98,7 +127,7 @@ class user_filtering {
      * @param boolean $advanced
      * @return object filter
      */
-    function get_field($fieldname, $advanced) {
+    public function get_field($fieldname, $advanced) {
         global $USER, $CFG, $DB, $SITE;
 
         switch ($fieldname) {
@@ -129,16 +158,16 @@ class user_filtering {
                 return new user_filter_simpleselect('auth', get_string('authentication'), $advanced, 'auth', $choices);
 
             case 'mnethostid':
-                // include all hosts even those deleted or otherwise problematic
+                // Include all hosts even those deleted or otherwise problematic.
                 if (!$hosts = $DB->get_records('mnet_host', null, 'id', 'id, wwwroot, name')) {
                     $hosts = array();
                 }
                 $choices = array();
                 foreach ($hosts as $host) {
                     if ($host->id == $CFG->mnet_localhost_id) {
-                        $choices[$host->id] =  format_string($SITE->fullname).' ('.get_string('local').')';
+                        $choices[$host->id] = format_string($SITE->fullname).' ('.get_string('local').')';
                     } else if (empty($host->wwwroot)) {
-                        // All hosts
+                        // All hosts.
                         continue;
                     } else {
                         $choices[$host->id] = $host->name.' ('.$host->wwwroot.')';
@@ -152,21 +181,22 @@ class user_filtering {
                     }
                 }
                 if (count($choices) < 2) {
-                    return null; // filter not needed
+                    return null; // Filter not needed.
                 }
                 return new user_filter_simpleselect('mnethostid', get_string('mnetidprovider', 'mnet'), $advanced, 'mnethostid', $choices);
 
-            default:            return null;
+            default:
+                return null;
         }
     }
 
     /**
      * Returns sql where statement based on active user filters
      * @param string $extra sql
-     * @param array named params (recommended prefix ex)
+     * @param array $params named params (recommended prefix ex)
      * @return array sql string and $params
      */
-    function get_sql_filter($extra='', array $params=null) {
+    public function get_sql_filter($extra='', array $params=null) {
         global $SESSION;
 
         $sqls = array();
@@ -176,12 +206,12 @@ class user_filtering {
         $params = (array)$params;
 
         if (!empty($SESSION->user_filtering)) {
-            foreach ($SESSION->user_filtering as $fname=>$datas) {
+            foreach ($SESSION->user_filtering as $fname => $datas) {
                 if (!array_key_exists($fname, $this->_fields)) {
-                    continue; // filter not used
+                    continue; // Filter not used.
                 }
                 $field = $this->_fields[$fname];
-                foreach($datas as $i=>$data) {
+                foreach ($datas as $i => $data) {
                     list($s, $p) = $field->get_sql_filter($data);
                     $sqls[] = $s;
                     $params = $params + $p;
@@ -200,14 +230,14 @@ class user_filtering {
     /**
      * Print the add filter form.
      */
-    function display_add() {
+    public function display_add() {
         $this->_addform->display();
     }
 
     /**
      * Print the active filter form.
      */
-    function display_active() {
+    public function display_active() {
         $this->_activeform->display();
     }
 
@@ -215,22 +245,28 @@ class user_filtering {
 
 /**
  * The base user filter class. All abstract classes must be implemented.
+ *
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class user_filter_type {
     /**
      * The name of this filter instance.
+     * @var string
      */
-    var $_name;
+    public $_name;
 
     /**
      * The label of this filter instance.
+     * @var string
      */
-    var $_label;
+    public $_label;
 
     /**
      * Advanced form element flag
+     * @var bool
      */
-    var $_advanced;
+    public $_advanced;
 
     /**
      * Constructor
@@ -238,7 +274,7 @@ class user_filter_type {
      * @param string $label the label of the filter instance
      * @param boolean $advanced advanced form element flag
      */
-    function user_filter_type($name, $label, $advanced) {
+    public function user_filter_type($name, $label, $advanced) {
         $this->_name     = $name;
         $this->_label    = $label;
         $this->_advanced = $advanced;
@@ -249,24 +285,24 @@ class user_filter_type {
      * @param array $data filter settings
      * @return string the filtering condition or null if the filter is disabled
      */
-    function get_sql_filter($data) {
+    public function get_sql_filter($data) {
         print_error('mustbeoveride', 'debug', '', 'get_sql_filter');
     }
 
     /**
      * Retrieves data from the form data
-     * @param object $formdata data submited with the form
+     * @param stdClass $formdata data submited with the form
      * @return mixed array filter data or false when filter not set
      */
-    function check_data($formdata) {
+    public function check_data($formdata) {
         print_error('mustbeoveride', 'debug', '', 'check_data');
     }
 
     /**
      * Adds controls specific to this filter in the form.
-     * @param object $mform a MoodleForm object to setup
+     * @param moodleform $mform a MoodleForm object to setup
      */
-    function setupForm(&$mform) {
+    public function setupForm(&$mform) {
         print_error('mustbeoveride', 'debug', '', 'setupForm');
     }
 
@@ -275,7 +311,7 @@ class user_filter_type {
      * @param array $data filter settings
      * @return string active filter label
      */
-    function get_label($data) {
+    public function get_label($data) {
         print_error('mustbeoveride', 'debug', '', 'get_label');
     }
 }
index bd22fd7..b7016bd 100644 (file)
@@ -1,9 +1,35 @@
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Profile field filter.
+ *
+ * @package   core_user
+ * @category  user
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
 require_once($CFG->dirroot.'/user/filters/lib.php');
 
 /**
  * User filter based on values of custom profile fields.
+ *
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class user_filter_profilefield extends user_filter_type {
 
@@ -13,7 +39,7 @@ class user_filter_profilefield extends user_filter_type {
      * @param string $label the label of the filter instance
      * @param boolean $advanced advanced form element flag
      */
-    function user_filter_profilefield($name, $label, $advanced) {
+    public function user_filter_profilefield($name, $label, $advanced) {
         parent::user_filter_type($name, $label, $advanced);
     }
 
@@ -21,28 +47,28 @@ class user_filter_profilefield extends user_filter_type {
      * Returns an array of comparison operators
      * @return array of comparison operators
      */
-    function get_operators() {
+    public function get_operators() {
         return array(0 => get_string('contains', 'filters'),
-                     1 => get_string('doesnotcontain','filters'),
-                     2 => get_string('isequalto','filters'),
-                     3 => get_string('startswith','filters'),
-                     4 => get_string('endswith','filters'),
-                     5 => get_string('isempty','filters'),
-                     6 => get_string('isnotdefined','filters'),
-                     7 => get_string('isdefined','filters'));
+                     1 => get_string('doesnotcontain', 'filters'),
+                     2 => get_string('isequalto', 'filters'),
+                     3 => get_string('startswith', 'filters'),
+                     4 => get_string('endswith', 'filters'),
+                     5 => get_string('isempty', 'filters'),
+                     6 => get_string('isnotdefined', 'filters'),
+                     7 => get_string('isdefined', 'filters'));
     }
 
     /**
      * Returns an array of custom profile fields
      * @return array of profile fields
      */
-    function get_profile_fields() {
+    public function get_profile_fields() {
         global $DB;
         if (!$fields = $DB->get_records('user_info_field', null, 'shortname', 'id,shortname')) {
             return null;
         }
         $res = array(0 => get_string('anyfield', 'filters'));
-        foreach($fields as $k=>$v) {
+        foreach ($fields as $k => $v) {
             $res[$k] = $v->shortname;
         }
         return $res;
@@ -52,15 +78,15 @@ class user_filter_profilefield extends user_filter_type {
      * Adds controls specific to this filter in the form.
      * @param object $mform a MoodleForm object to setup
      */
-    function setupForm(&$mform) {
-        $profile_fields = $this->get_profile_fields();
-        if (empty($profile_fields)) {
+    public function setupForm(&$mform) {
+        $profilefields = $this->get_profile_fields();
+        if (empty($profilefields)) {
             return;
         }
         $objs = array();
-        $objs[] =& $mform->createElement('select', $this->_name.'_fld', null, $profile_fields);
-        $objs[] =& $mform->createElement('select', $this->_name.'_op', null, $this->get_operators());
-        $objs[] =& $mform->createElement('text', $this->_name, null);
+        $objs[] = $mform->createElement('select', $this->_name.'_fld', null, $profilefields);
+        $objs[] = $mform->createElement('select', $this->_name.'_op', null, $this->get_operators());
+        $objs[] = $mform->createElement('text', $this->_name, null);
         $grp =& $mform->addElement('group', $this->_name.'_grp', $this->_label, $objs, '', false);
         $mform->setType($this->_name, PARAM_RAW);
         if ($this->_advanced) {
@@ -73,10 +99,10 @@ class user_filter_profilefield extends user_filter_type {
      * @param object $formdata data submited with the form
      * @return mixed array filter data or false when filter not set
      */
-    function check_data($formdata) {
-        $profile_fields = $this->get_profile_fields();
+    public function check_data($formdata) {
+        $profilefields = $this->get_profile_fields();
 
-        if (empty($profile_fields)) {
+        if (empty($profilefields)) {
             return false;
         }
 
@@ -100,13 +126,13 @@ class user_filter_profilefield extends user_filter_type {
      * @param array $data filter settings
      * @return array sql string and $params
      */
-    function get_sql_filter($data) {
+    public function get_sql_filter($data) {
         global $CFG, $DB;
         static $counter = 0;
         $name = 'ex_profilefield'.$counter++;
 
-        $profile_fields = $this->get_profile_fields();
-        if (empty($profile_fields)) {
+        $profilefields = $this->get_profile_fields();
+        if (empty($profilefields)) {
             return '';
         }
 
@@ -115,7 +141,7 @@ class user_filter_profilefield extends user_filter_type {
         $value    = $data['value'];
 
         $params = array();
-        if (!array_key_exists($profile, $profile_fields)) {
+        if (!array_key_exists($profile, $profilefields)) {
             return array('', array());
         }
 
@@ -127,33 +153,34 @@ class user_filter_profilefield extends user_filter_type {
         }
 
         switch($operator) {
-            case 0: // contains
+            case 0: // Contains.
                 $where = $DB->sql_like('data', ":$name", false, false);
                 $params[$name] = "%$value%";
                 break;
-            case 1: // does not contain
+            case 1: // Does not contain.
                 $where = $DB->sql_like('data', ":$name", false, false, true);
                 $params[$name] = "%$value%";
                 break;
-            case 2: // equal to
+            case 2: // Equal to.
                 $where = $DB->sql_like('data', ":$name", false, false);
                 $params[$name] = "$value";
                 break;
-            case 3: // starts with
+            case 3: // Starts with.
                 $where = $DB->sql_like('data', ":$name", false, false);
                 $params[$name] = "$value%";
                 break;
-            case 4: // ends with
+            case 4: // Ends with.
                 $where = $DB->sql_like('data', ":$name", false, false);
                 $params[$name] = "%$value";
                 break;
-            case 5: // empty
+            case 5: // Empty.
                 $where = "data = :$name";
                 $params[$name] = "";
                 break;
-            case 6: // is not defined
-                $op = " NOT IN "; break;
-            case 7: // is defined
+            case 6: // Is not defined.
+                $op = " NOT IN ";
+                break;
+            case 7: // Is defined.
                 break;
         }
         if ($profile) {
@@ -173,11 +200,11 @@ class user_filter_profilefield extends user_filter_type {
      * @param array $data filter settings
      * @return string active filter label
      */
-    function get_label($data) {
+    public function get_label($data) {
         $operators      = $this->get_operators();
-        $profile_fields = $this->get_profile_fields();
+        $profilefields = $this->get_profile_fields();
 
-        if (empty($profile_fields)) {
+        if (empty($profilefields)) {
             return '';
         }
 
@@ -185,26 +212,26 @@ class user_filter_profilefield extends user_filter_type {
         $operator = $data['operator'];
         $value    = $data['value'];
 
-        if (!array_key_exists($profile, $profile_fields)) {
+        if (!array_key_exists($profile, $profilefields)) {
             return '';
         }
 
         $a = new stdClass();
         $a->label    = $this->_label;
         $a->value    = $value;
-        $a->profile  = $profile_fields[$profile];
+        $a->profile  = $profilefields[$profile];
         $a->operator = $operators[$operator];
 
         switch($operator) {
-            case 0: // contains
-            case 1: // doesn't contain
-            case 2: // equal to
-            case 3: // starts with
-            case 4: // ends with
+            case 0: // Contains.
+            case 1: // Doesn't contain.
+            case 2: // Equal to.
+            case 3: // Starts with.
+            case 4: // Ends with.
                 return get_string('profilelabel', 'filters', $a);
-            case 5: // empty
-            case 6: // is not defined
-            case 7: // is defined
+            case 5: // Empty.
+            case 6: // Is not defined.
+            case 7: // Is defined.
                 return get_string('profilelabelnovalue', 'filters', $a);
         }
         return '';
index 03c00c9..8fbf3db 100644 (file)
@@ -1,19 +1,47 @@
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Value select filter.
+ *
+ * @package   core_user
+ * @category  user
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
 require_once($CFG->dirroot.'/user/filters/lib.php');
 
 /**
  * Generic filter based on a list of values.
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class user_filter_select extends user_filter_type {
     /**
      * options for the list values
+     * @var array
      */
-    var $_options;
+    public $_options;
 
-    var $_field;
+    /** @var string */
+    public $_field;
 
-    var $_default;
+    /** @var mixed|null */
+    public $_default;
 
     /**
      * Constructor
@@ -24,7 +52,7 @@ class user_filter_select extends user_filter_type {
      * @param array $options select options
      * @param mixed $default option
      */
-    function user_filter_select($name, $label, $advanced, $field, $options, $default=null) {
+    public function user_filter_select($name, $label, $advanced, $field, $options, $default=null) {
         parent::user_filter_type($name, $label, $advanced);
         $this->_field   = $field;
         $this->_options = $options;
@@ -35,20 +63,20 @@ class user_filter_select extends user_filter_type {
      * Returns an array of comparison operators
      * @return array of comparison operators
      */
-    function get_operators() {
-        return array(0 => get_string('isanyvalue','filters'),
-                     1 => get_string('isequalto','filters'),
-                     2 => get_string('isnotequalto','filters'));
+    public function get_operators() {
+        return array(0 => get_string('isanyvalue', 'filters'),
+                     1 => get_string('isequalto', 'filters'),
+                     2 => get_string('isnotequalto', 'filters'));
     }
 
     /**
      * Adds controls specific to this filter in the form.
-     * @param object $mform a MoodleForm object to setup
+     * @param moodleform $mform a MoodleForm object to setup
      */
-    function setupForm(&$mform) {
+    public function setupForm(&$mform) {
         $objs = array();
-        $objs[] =& $mform->createElement('select', $this->_name.'_op', null, $this->get_operators());
-        $objs[] =& $mform->createElement('select', $this->_name, null, $this->_options);
+        $objs[] = $mform->createElement('select', $this->_name.'_op', null, $this->get_operators());
+        $objs[] = $mform->createElement('select', $this->_name, null, $this->_options);
         $grp =& $mform->addElement('group', $this->_name.'_grp', $this->_label, $objs, '', false);
         $mform->disabledIf($this->_name, $this->_name.'_op', 'eq', 0);
         if (!is_null($this->_default)) {
@@ -61,10 +89,10 @@ class user_filter_select extends user_filter_type {
 
     /**
      * Retrieves data from the form data
-     * @param object $formdata data submited with the form
+     * @param stdClass $formdata data submited with the form
      * @return mixed array filter data or false when filter not set
      */
-    function check_data($formdata) {
+    public function check_data($formdata) {
         $field    = $this->_name;
         $operator = $field.'_op';
 
@@ -81,7 +109,7 @@ class user_filter_select extends user_filter_type {
      * @param array $data filter settings
      * @return array sql string and $params
      */
-    function get_sql_filter($data) {
+    public function get_sql_filter($data) {
         static $counter = 0;
         $name = 'ex_select'.$counter++;
 
@@ -92,11 +120,11 @@ class user_filter_select extends user_filter_type {
         $params = array();
 
         switch($operator) {
-            case 1: // equal to
+            case 1: // Equal to.
                 $res = "=:$name";
                 $params[$name] = $value;
                 break;
-            case 2: // not equal to
+            case 2: // Not equal to.
                 $res = "<>:$name";
                 $params[$name] = $value;
                  break;
@@ -111,7 +139,7 @@ class user_filter_select extends user_filter_type {
      * @param array $data filter settings
      * @return string active filter label
      */
-    function get_label($data) {
+    public function get_label($data) {
         $operators = $this->get_operators();
         $operator  = $data['operator'];
         $value     = $data['value'];
index a1861e4..19573d4 100644 (file)
@@ -1,17 +1,46 @@
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Simple value select filter.
+ *
+ * @package   core_user
+ * @category  user
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
 require_once($CFG->dirroot.'/user/filters/lib.php');
 
 /**
  * Generic filter based on a list of values.
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class user_filter_simpleselect extends user_filter_type {
     /**
      * options for the list values
+     * @var array
      */
-    var $_options;
+    public $_options;
 
-    var $_field;
+    /**
+     * @var string
+     */
+    public $_field;
 
     /**
      * Constructor
@@ -21,7 +50,7 @@ class user_filter_simpleselect extends user_filter_type {
      * @param string $field user table filed name
      * @param array $options select options
      */
-    function user_filter_simpleselect($name, $label, $advanced, $field, $options) {
+    public function user_filter_simpleselect($name, $label, $advanced, $field, $options) {
         parent::user_filter_type($name, $label, $advanced);
         $this->_field   = $field;
         $this->_options = $options;
@@ -29,10 +58,10 @@ class user_filter_simpleselect extends user_filter_type {
 
     /**
      * Adds controls specific to this filter in the form.
-     * @param object $mform a MoodleForm object to setup
+     * @param moodleform $mform a MoodleForm object to setup
      */
-    function setupForm(&$mform) {
-        $choices = array(''=>get_string('anyvalue', 'filters')) + $this->_options;
+    public function setupForm(&$mform) {
+        $choices = array('' => get_string('anyvalue', 'filters')) + $this->_options;
         $mform->addElement('select', $this->_name, $this->_label, $choices);
         if ($this->_advanced) {
             $mform->setAdvanced($this->_name);
@@ -44,11 +73,11 @@ class user_filter_simpleselect extends user_filter_type {
      * @param object $formdata data submited with the form
      * @return mixed array filter data or false when filter not set
      */
-    function check_data($formdata) {
+    public function check_data($formdata) {
         $field = $this->_name;
 
         if (array_key_exists($field, $formdata) and $formdata->$field !== '') {
-            return array('value'=>(string)$formdata->$field);
+            return array('value' => (string)$formdata->$field);
         }
 
         return false;
@@ -59,7 +88,7 @@ class user_filter_simpleselect extends user_filter_type {
      * @param array $data filter settings
      * @return array sql string and $params
      */
-    function get_sql_filter($data) {
+    public function get_sql_filter($data) {
         static $counter = 0;
         $name = 'ex_simpleselect'.$counter++;
 
@@ -69,7 +98,7 @@ class user_filter_simpleselect extends user_filter_type {
         if ($value == '') {
             return '';
         }
-        return array("$field=:$name", array($name=>$value));
+        return array("$field=:$name", array($name => $value));
     }
 
     /**
@@ -77,13 +106,13 @@ class user_filter_simpleselect extends user_filter_type {
      * @param array $data filter settings
      * @return string active filter label
      */
-    function get_label($data) {
+    public function get_label($data) {
         $value = $data['value'];
 
         $a = new stdClass();
         $a->label    = $this->_label;
         $a->value    = '"'.s($this->_options[$value]).'"';
-        $a->operator = get_string('isequalto','filters');
+        $a->operator = get_string('isequalto', 'filters');
 
         return get_string('selectlabel', 'filters', $a);
     }
index abe0029..5dddd10 100644 (file)
@@ -1,12 +1,38 @@
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Text field filter
+ *
+ * @package   core_user
+ * @category  user
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
 require_once($CFG->dirroot.'/user/filters/lib.php');
 
 /**
  * Generic filter for text fields.
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class user_filter_text extends user_filter_type {
-    var $_field;
+    /** @var string */
+    public $_field;
 
     /**
      * Constructor
@@ -15,7 +41,7 @@ class user_filter_text extends user_filter_type {
      * @param boolean $advanced advanced form element flag
      * @param string $field user table filed name
      */
-    function user_filter_text($name, $label, $advanced, $field) {
+    public function user_filter_text($name, $label, $advanced, $field) {
         parent::user_filter_type($name, $label, $advanced);
         $this->_field = $field;
     }
@@ -24,23 +50,23 @@ class user_filter_text extends user_filter_type {
      * Returns an array of comparison operators
      * @return array of comparison operators
      */
-    function getOperators() {
+    public function getOperators() {
         return array(0 => get_string('contains', 'filters'),
-                     1 => get_string('doesnotcontain','filters'),
-                     2 => get_string('isequalto','filters'),
-                     3 => get_string('startswith','filters'),
-                     4 => get_string('endswith','filters'),
-                     5 => get_string('isempty','filters'));
+                     1 => get_string('doesnotcontain', 'filters'),
+                     2 => get_string('isequalto', 'filters'),
+                     3 => get_string('startswith', 'filters'),
+                     4 => get_string('endswith', 'filters'),
+                     5 => get_string('isempty', 'filters'));
     }
 
     /**
      * Adds controls specific to this filter in the form.
      * @param object $mform a MoodleForm object to setup
      */
-    function setupForm(&$mform) {
+    public function setupForm(&$mform) {
         $objs = array();
-        $objs[] =& $mform->createElement('select', $this->_name.'_op', null, $this->getOperators());
-        $objs[] =& $mform->createElement('text', $this->_name, null);
+        $objs[] = $mform->createElement('select', $this->_name.'_op', null, $this->getOperators());
+        $objs[] = $mform->createElement('text', $this->_name, null);
         $grp =& $mform->addElement('group', $this->_name.'_grp', $this->_label, $objs, '', false);
         $mform->setType($this->_name, PARAM_RAW);
         $mform->disabledIf($this->_name, $this->_name.'_op', 'eq', 5);
@@ -54,13 +80,13 @@ class user_filter_text extends user_filter_type {
      * @param object $formdata data submited with the form
      * @return mixed array filter data or false when filter not set
      */
-    function check_data($formdata) {
+    public function check_data($formdata) {
         $field    = $this->_name;
         $operator = $field.'_op';
 
         if (array_key_exists($operator, $formdata)) {
             if ($formdata->$operator != 5 and $formdata->$field == '') {
-                // no data - no change except for empty filter
+                // No data - no change except for empty filter.
                 return false;
             }
             // If field value is set then use it, else it's null.
@@ -68,7 +94,7 @@ class user_filter_text extends user_filter_type {
             if (isset($formdata->$field)) {
                 $fieldvalue = $formdata->$field;
             }
-            return array('operator' => (int)$formdata->$operator, 'value' =>  $fieldvalue);
+            return array('operator' => (int)$formdata->$operator, 'value' => $fieldvalue);
         }
 
         return false;
@@ -79,7 +105,7 @@ class user_filter_text extends user_filter_type {
      * @param array $data filter settings
      * @return array sql string and $params
      */
-    function get_sql_filter($data) {
+    public function get_sql_filter($data) {
         global $DB;
         static $counter = 0;
         $name = 'ex_text'.$counter++;
@@ -95,27 +121,27 @@ class user_filter_text extends user_filter_type {
         }
 
         switch($operator) {
-            case 0: // contains
+            case 0: // Contains.
                 $res = $DB->sql_like($field, ":$name", false, false);
                 $params[$name] = "%$value%";
                 break;
-            case 1: // does not contain
+            case 1: // Does not contain.
                 $res = $DB->sql_like($field, ":$name", false, false, true);
                 $params[$name] = "%$value%";
                 break;
-            case 2: // equal to
+            case 2: // Equal to.
                 $res = $DB->sql_like($field, ":$name", false, false);
                 $params[$name] = "$value";
                 break;
-            case 3: // starts with
+            case 3: // Starts with.
                 $res = $DB->sql_like($field, ":$name", false, false);
                 $params[$name] = "$value%";
                 break;
-            case 4: // ends with
+            case 4: // Ends with.
                 $res = $DB->sql_like($field, ":$name", false, false);
                 $params[$name] = "%$value";
                 break;
-            case 5: // empty
+            case 5: // Empty.
                 $res = "$field = :$name";
                 $params[$name] = '';
                 break;
@@ -130,7 +156,7 @@ class user_filter_text extends user_filter_type {
      * @param array $data filter settings
      * @return string active filter label
      */
-    function get_label($data) {
+    public function get_label($data) {
         $operator  = $data['operator'];
         $value     = $data['value'];
         $operators = $this->getOperators();
@@ -140,15 +166,14 @@ class user_filter_text extends user_filter_type {
         $a->value    = '"'.s($value).'"';
         $a->operator = $operators[$operator];
 
-
         switch ($operator) {
-            case 0: // contains
-            case 1: // doesn't contain
-            case 2: // equal to
-            case 3: // starts with
-            case 4: // ends with
+            case 0: // Contains.
+            case 1: // Doesn't contain.
+            case 2: // Equal to.
+            case 3: // Starts with.
+            case 4: // Ends with.
                 return get_string('textlabel', 'filters', $a);
-            case 5: // empty
+            case 5: // Empty.
                 return get_string('textlabelnovalue', 'filters', $a);
         }
 
index 1912aee..c084135 100644 (file)
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * This file contains forms used to filter user.
+ *
+ * @package   core_user
+ * @category  user
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
 require_once($CFG->libdir.'/formslib.php');
 
+/**
+ * Class user_add_filter_form
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 class user_add_filter_form extends moodleform {
 
-    function definition() {
+    /**
+     * Form definition.
+     */
+    public function definition() {
         $mform       =& $this->_form;
         $fields      = $this->_customdata['fields'];
         $extraparams = $this->_customdata['extraparams'];
 
-        $mform->addElement('header', 'newfilter', get_string('newfilter','filters'));
+        $mform->addElement('header', 'newfilter', get_string('newfilter', 'filters'));
 
-        foreach($fields as $ft) {
+        foreach ($fields as $ft) {
             $ft->setupForm($mform);
         }
 
-        // in case we wasnt to track some page params
+        // In case we wasnt to track some page params.
         if ($extraparams) {
-            foreach ($extraparams as $key=>$value) {
+            foreach ($extraparams as $key => $value) {
                 $mform->addElement('hidden', $key, $value);
                 $mform->setType($key, PARAM_RAW);
             }
         }
 
-        // Add button
-        $mform->addElement('submit', 'addfilter', get_string('addfilter','filters'));
+        // Add button.
+        $mform->addElement('submit', 'addfilter', get_string('addfilter', 'filters'));
     }
 }
 
+/**
+ * Class user_active_filter_form
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 class user_active_filter_form extends moodleform {
 
-    function definition() {
-        global $SESSION; // this is very hacky :-(
+    /**
+     * Form definition.
+     */
+    public function definition() {
+        global $SESSION; // This is very hacky :-(.
 
         $mform       =& $this->_form;
         $fields      = $this->_customdata['fields'];
         $extraparams = $this->_customdata['extraparams'];
 
         if (!empty($SESSION->user_filtering)) {
-            // add controls for each active filter in the active filters group
-            $mform->addElement('header', 'actfilterhdr', get_string('actfilterhdr','filters'));
+            // Add controls for each active filter in the active filters group.
+            $mform->addElement('header', 'actfilterhdr', get_string('actfilterhdr', 'filters'));
 
-            foreach ($SESSION->user_filtering as $fname=>$datas) {
+            foreach ($SESSION->user_filtering as $fname => $datas) {
                 if (!array_key_exists($fname, $fields)) {
-                    continue; // filter not used
+                    continue; // Filter not used.
                 }
                 $field = $fields[$fname];
-                foreach($datas as $i=>$data) {
+                foreach ($datas as $i => $data) {
                     $description = $field->get_label($data);
                     $mform->addElement('checkbox', 'filter['.$fname.']['.$i.']', null, $description);
                 }
             }
 
             if ($extraparams) {
-                foreach ($extraparams as $key=>$value) {
+                foreach ($extraparams as $key => $value) {
                     $mform->addElement('hidden', $key, $value);
                     $mform->setType($key, PARAM_RAW);
                 }
             }
 
             $objs = array();
-            $objs[] = &$mform->createElement('submit', 'removeselected', get_string('removeselected','filters'));
-            $objs[] = &$mform->createElement('submit', 'removeall', get_string('removeall','filters'));
+            $objs[] = &$mform->createElement('submit', 'removeselected', get_string('removeselected', 'filters'));
+            $objs[] = &$mform->createElement('submit', 'removeall', get_string('removeall', 'filters'));
             $mform->addElement('group', 'actfiltergrp', '', $objs, ' ', false);
         }
     }
index f314a67..e81c0ea 100644 (file)
@@ -1,7 +1,32 @@
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Yes/No (boolean) filter.
+ *
+ * @package   core_user
+ * @category  user
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
 
 /**
  * Generic yes/no filter with radio buttons for integer fields.
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class user_filter_yesno extends user_filter_simpleselect {
 
@@ -12,8 +37,8 @@ class user_filter_yesno extends user_filter_simpleselect {
      * @param boolean $advanced advanced form element flag
      * @param string $field user table filed name
      */
-    function user_filter_yesno($name, $label, $advanced, $field) {
-        parent::user_filter_simpleselect($name, $label, $advanced, $field, array(0=>get_string('no'), 1=>get_string('yes')));
+    public function user_filter_yesno($name, $label, $advanced, $field) {
+        parent::user_filter_simpleselect($name, $label, $advanced, $field, array(0 => get_string('no'), 1 => get_string('yes')));
     }
 
     /**
@@ -22,7 +47,7 @@ class user_filter_yesno extends user_filter_simpleselect {
      * @param array $data filter settings
      * @return array sql string and $params
      */
-    function get_sql_filter($data) {
+    public function get_sql_filter($data) {
         static $counter = 0;
         $name = 'ex_yesno'.$counter++;
 
index 3d63e65..a859234 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
  *
  * @copyright 1999 Martin Dougiamas  http://dougiamas.com
  * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- * @package user
+ * @package core_user
  */
 
 require_once("../config.php");
 require_once($CFG->dirroot .'/notes/lib.php');
 
-$id    = required_param('id', PARAM_INT);              // course id
-$users = optional_param_array('userid', array(), PARAM_INT); // array of user id
-$content = optional_param('content', '', PARAM_RAW); // note content
-$state = optional_param('state', '', PARAM_ALPHA); // note publish state
+$id    = required_param('id', PARAM_INT);              // Course id.
+$users = optional_param_array('userid', array(), PARAM_INT); // Array of user id.
+$content = optional_param('content', '', PARAM_RAW); // Note content.
+$state = optional_param('state', '', PARAM_ALPHA); // Note publish state.
 
-$url = new moodle_url('/user/groupaddnote.php', array('id'=>$id));
+$url = new moodle_url('/user/groupaddnote.php', array('id' => $id));
 if ($content !== '') {
     $url->param('content', $content);
 }
@@ -40,14 +39,14 @@ if ($state !== '') {
 }
 $PAGE->set_url($url);
 
-if (! $course = $DB->get_record('course', array('id'=>$id))) {
+if (! $course = $DB->get_record('course', array('id' => $id))) {
     print_error('invalidcourseid');
 }
 
 $context = context_course::instance($id);
 require_login($course);
 
-// to create notes the current user needs a capability
+// To create notes the current user needs a capability.
 require_capability('moodle/notes:manage', $context);
 
 if (empty($CFG->enablenotes)) {
@@ -61,7 +60,7 @@ if (!empty($users) && !empty($content) && confirm_sesskey()) {
     $note->content = $content;
     $note->publishstate = $state;
     foreach ($users as $k => $v) {
-        if(!$user = $DB->get_record('user', array('id'=>$v))) {
+        if (!$user = $DB->get_record('user', array('id' => $v))) {
             continue;
         }
         $note->id = 0;
@@ -78,22 +77,22 @@ $PAGE->navbar->add($straddnote);
 $PAGE->set_title("$course->shortname: ".get_string('extendenrol'));
 $PAGE->set_heading($course->fullname);
 
-/// Print headers
+// Print headers.
 echo $OUTPUT->header();
 
-// this will contain all available the based On select options, but we'll disable some on them on a per user basis
+// This will contain all available the based On select options, but we'll disable some on them on a per user basis.
 
 echo $OUTPUT->heading($straddnote);
 echo '<form method="post" action="groupaddnote.php" >';
 echo '<div style="width:100%;text-align:center;">';
 echo '<input type="hidden" name="id" value="'.$course->id.'" />';
 echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
-$state_names = note_get_state_names();
+$statenames = note_get_state_names();
 
-// the first time list hack
+// The first time list hack.
 if (empty($users) and $post = data_submitted()) {
     foreach ($post as $k => $v) {
-        if (preg_match('/^user(\d+)$/',$k,$m)) {
+        if (preg_match('/^user(\d+)$/', $k, $m)) {
             $users[] = $m[1];
         }
     }
@@ -101,7 +100,7 @@ if (empty($users) and $post = data_submitted()) {
 
 $userlist = array();
 foreach ($users as $k => $v) {
-    if (!$user = $DB->get_record('user', array('id'=>$v))) {
+    if (!$user = $DB->get_record('user', array('id' => $v))) {
         continue;
     }
     echo '<input type="hidden" name="userid['.$k.']" value="'.$v.'" />';
@@ -117,7 +116,7 @@ echo '<br /><textarea name="content" rows="5" cols="50" spellcheck="true">' . st
 echo '<p>';
 echo html_writer::label(get_string('publishstate', 'notes'), 'menustate');
 echo $OUTPUT->help_icon('publishstate', 'notes');
-echo html_writer::select($state_names, 'state', empty($state) ? NOTES_STATE_PUBLIC : $state, false);
+echo html_writer::select($statenames, 'state', empty($state) ? NOTES_STATE_PUBLIC : $state, false);
 echo '</p>';
 
 echo '<input type="submit" value="' . get_string('savechanges'). '" /></div></form>';
index f74669d..8a0a515 100644 (file)
@@ -1,31 +1,53 @@
 <?php
-      // This function fetches group pictures from the data directory
-      // Syntax:   pix.php/groupid/f1.jpg or pix.php/groupid/f2.jpg
-      //     OR:   ?file=groupid/f1.jpg or ?file=groupid/f2.jpg
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
-// disable moodle specific debug messages and any errors in output
+/**
+ * This function fetches group pictures from the data directory.
+ *
+ * Syntax:   pix.php/groupid/f1.jpg or pix.php/groupid/f2.jpg
+ *     OR:   ?file=groupid/f1.jpg or ?file=groupid/f2.jpg
+ *
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @package core_user
+ */
+
+// Disable moodle specific debug messages and any errors in output.
 define('NO_DEBUG_DISPLAY', true);
-define('NO_MOODLE_COOKIES', true);                  // session not used here
+define('NO_MOODLE_COOKIES', true); // Session not used here.
 
-    require_once('../config.php');
-    require_once($CFG->libdir.'/filelib.php');
+require_once('../config.php');
+require_once($CFG->libdir.'/filelib.php');
 
-    $relativepath = get_file_argument();
+$relativepath = get_file_argument();
 
-    $args = explode('/', trim($relativepath, '/'));
+$args = explode('/', trim($relativepath, '/'));
 
-    if (count($args) == 2) {
-        $groupid  = (integer)$args[0];
-        $image    = $args[1];
-        $pathname = $CFG->dataroot.'/groups/'.$groupid.'/'.$image;
-    } else {
-        $image    = 'f1.png';
-        $pathname = $CFG->dirroot.'/pix/g/f1.png';
-    }
+if (count($args) == 2) {
+    $groupid  = (integer)$args[0];
+    $image    = $args[1];
+    $pathname = $CFG->dataroot.'/groups/'.$groupid.'/'.$image;
+} else {
+    $image    = 'f1.png';
+    $pathname = $CFG->dirroot.'/pix/g/f1.png';
+}
 
-    if (file_exists($pathname) and !is_dir($pathname)) {
-        send_file($pathname, $image);
-    } else {
-        header('HTTP/1.0 404 not found');
-        print_error('filenotfound', 'error'); //this is not displayed on IIS??
-    }
+if (file_exists($pathname) and !is_dir($pathname)) {
+    send_file($pathname, $image);
+} else {
+    header('HTTP/1.0 404 not found');
+    print_error('filenotfound', 'error'); // This is not displayed on IIS??
+}
index ba65cb8..b2cded8 100644 (file)
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Lists all the users within a given course.
+ *
+ * @copyright 1999 Martin Dougiamas  http://dougiamas.com
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @package core_user
+ */
+
+require_once('../config.php');
+require_once($CFG->libdir.'/tablelib.php');
+require_once($CFG->libdir.'/filelib.php');
+
+define('USER_SMALL_CLASS', 20);   // Below this is considered small.
+define('USER_LARGE_CLASS', 200);  // Above this is considered large.
+define('DEFAULT_PAGE_SIZE', 20);
+define('SHOW_ALL_PAGE_SIZE', 5000);
+define('MODE_BRIEF', 0);
+define('MODE_USERDETAILS', 1);
+
+$page         = optional_param('page', 0, PARAM_INT); // Which page to show.
+$perpage      = optional_param('perpage', DEFAULT_PAGE_SIZE, PARAM_INT); // How many per page.
+$mode         = optional_param('mode', null, PARAM_INT); // Use the MODE_ constants.
+$accesssince  = optional_param('accesssince', 0, PARAM_INT); // Filter by last access. -1 = never.
+$search       = optional_param('search', '', PARAM_RAW); // Make sure it is processed with p() or s() when sending to output!
+$roleid       = optional_param('roleid', 0, PARAM_INT); // Optional roleid, 0 means all enrolled users (or all on the frontpage).
+$contextid    = optional_param('contextid', 0, PARAM_INT); // One of this or.
+$courseid     = optional_param('id', 0, PARAM_INT); // This are required.
+
+$PAGE->set_url('/user/index.php', array(
+        'page' => $page,
+        'perpage' => $perpage,
+        'mode' => $mode,
+        'accesssince' => $accesssince,
+        'search' => $search,
+        'roleid' => $roleid,
+        'contextid' => $contextid,
+        'id' => $courseid));
+
+if ($contextid) {
+    $context = context::instance_by_id($contextid, MUST_EXIST);
+    if ($context->contextlevel != CONTEXT_COURSE) {
+        print_error('invalidcontext');
+    }
+    $course = $DB->get_record('course', array('id' => $context->instanceid), '*', MUST_EXIST);
+} else {
+    $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
+    $context = context_course::instance($course->id, MUST_EXIST);
+}
+// Not needed anymore.
+unset($contextid);
+unset($courseid);
 
-//  Lists all the users within a given course
-
-    require_once('../config.php');
-    require_once($CFG->libdir.'/tablelib.php');
-    require_once($CFG->libdir.'/filelib.php');
-
-    define('USER_SMALL_CLASS', 20);   // Below this is considered small
-    define('USER_LARGE_CLASS', 200);  // Above this is considered large
-    define('DEFAULT_PAGE_SIZE', 20);
-    define('SHOW_ALL_PAGE_SIZE', 5000);
-    define('MODE_BRIEF', 0);
-    define('MODE_USERDETAILS', 1);
-
-    $page         = optional_param('page', 0, PARAM_INT);                     // which page to show
-    $perpage      = optional_param('perpage', DEFAULT_PAGE_SIZE, PARAM_INT);  // how many per page
-    $mode         = optional_param('mode', NULL, PARAM_INT);                  // use the MODE_ constants
-    $accesssince  = optional_param('accesssince',0,PARAM_INT);                // filter by last access. -1 = never
-    $search       = optional_param('search','',PARAM_RAW);                    // make sure it is processed with p() or s() when sending to output!
-    $roleid       = optional_param('roleid', 0, PARAM_INT);                   // optional roleid, 0 means all enrolled users (or all on the frontpage)
-
-    $contextid    = optional_param('contextid', 0, PARAM_INT);                // one of this or
-    $courseid     = optional_param('id', 0, PARAM_INT);                       // this are required
-
-    $PAGE->set_url('/user/index.php', array(
-            'page' => $page,
-            'perpage' => $perpage,
-            'mode' => $mode,
-            'accesssince' => $accesssince,
-            'search' => $search,
-            'roleid' => $roleid,
-            'contextid' => $contextid,
-            'id' => $courseid));
-
-    if ($contextid) {
-        $context = context::instance_by_id($contextid, MUST_EXIST);
-        if ($context->contextlevel != CONTEXT_COURSE) {
-            print_error('invalidcontext');
-        }
-        $course = $DB->get_record('course', array('id'=>$context->instanceid), '*', MUST_EXIST);
-    } else {
-        $course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
-        $context = context_course::instance($course->id, MUST_EXIST);
-    }
-    // not needed anymore
-    unset($contextid);
-    unset($courseid);
+require_login($course);
 
-    require_login($course);
+$systemcontext = context_system::instance();
+$isfrontpage = ($course->id == SITEID);
 
-    $systemcontext = context_system::instance();
-    $isfrontpage = ($course->id == SITEID);
+$frontpagectx = context_course::instance(SITEID);
 
-    $frontpagectx = context_course::instance(SITEID);
+if ($isfrontpage) {
+    $PAGE->set_pagelayout('admin');
+    require_capability('moodle/site:viewparticipants', $systemcontext);
+} else {
+    $PAGE->set_pagelayout('incourse');
+    require_capability('moodle/course:viewparticipants', $context);
+}
 
-    if ($isfrontpage) {
-        $PAGE->set_pagelayout('admin');
-        require_capability('moodle/site:viewparticipants', $systemcontext);
-    } else {
-        $PAGE->set_pagelayout('incourse');
-        require_capability('moodle/course:viewparticipants', $context);
-    }
+$rolenamesurl = new moodle_url("$CFG->wwwroot/user/index.php?contextid=$context->id&sifirst=&silast=");
 
-    $rolenamesurl = new moodle_url("$CFG->wwwroot/user/index.php?contextid=$context->id&sifirst=&silast=");
+$rolenames = role_fix_names(get_profile_roles($context), $context, ROLENAME_ALIAS, true);
+if ($isfrontpage) {
+    $rolenames[0] = get_string('allsiteusers', 'role');
+} else {
+    $rolenames[0] = get_string('allparticipants');
+}
 
-    $rolenames = role_fix_names(get_profile_roles($context), $context, ROLENAME_ALIAS, true);
-    if ($isfrontpage) {
-        $rolenames[0] = get_string('allsiteusers', 'role');
-    } else {
-        $rolenames[0] = get_string('allparticipants');
-    }
+// Make sure other roles may not be selected by any means.
+if (empty($rolenames[$roleid])) {
+    print_error('noparticipants');
+}
 
-    // make sure other roles may not be selected by any means
-    if (empty($rolenames[$roleid])) {
+// No roles to display yet?
+// frontpage course is an exception, on the front page course we should display all users.
+if (empty($rolenames) && !$isfrontpage) {
+    if (has_capability('moodle/role:assign', $context)) {
+        redirect($CFG->wwwroot.'/'.$CFG->admin.'/roles/assign.php?contextid='.$context->id);
+    } else {
         print_error('noparticipants');
     }
+}
 
-    // no roles to display yet?
-    // frontpage course is an exception, on the front page course we should display all users
-    if (empty($rolenames) && !$isfrontpage) {
-        if (has_capability('moodle/role:assign', $context)) {
-            redirect($CFG->wwwroot.'/'.$CFG->admin.'/roles/assign.php?contextid='.$context->id);
-        } else {
-            print_error('noparticipants');
-        }
-    }
+$event = \core\event\user_list_viewed::create(array(
+    'context' => $context,
+    'objectid' => $course->id,
+    'other' => array(
+        'courseid' => $course->id,
+        'courseshortname' => $course->shortname,
+        'coursefullname' => $course->fullname
+    )
+));
+$event->trigger();
+
+$bulkoperations = has_capability('moodle/course:bulkmessaging', $context);
+
+$countries = get_string_manager()->get_list_of_countries();
+
+$strnever = get_string('never');
+
+$datestring = new stdClass();
+$datestring->year  = get_string('year');
+$datestring->years = get_string('years');
+$datestring->day   = get_string('day');
+$datestring->days  = get_string('days');
+$datestring->hour  = get_string('hour');
+$datestring->hours = get_string('hours');
+$datestring->min   = get_string('min');
+$datestring->mins  = get_string('mins');
+$datestring->sec   = get_string('sec');
+$datestring->secs  = get_string('secs');
+
+if ($mode !== null) {
+    $mode = (int)$mode;
+    $SESSION->userindexmode = $mode;
+} else if (isset($SESSION->userindexmode)) {
+    $mode = (int)$SESSION->userindexmode;
+} else {
+    $mode = MODE_BRIEF;
+}
 
-    $event = \core\event\user_list_viewed::create(array(
-        'context' => $context,
-        'objectid' => $course->id,
-        'other' => array(
-            'courseid' => $course->id,
-            'courseshortname' => $course->shortname,
-            'coursefullname' => $course->fullname
-        )
-    ));
-    $event->trigger();
-
-    $bulkoperations = has_capability('moodle/course:bulkmessaging', $context);
-
-    $countries = get_string_manager()->get_list_of_countries();
-
-    $strnever = get_string('never');
-
-    $datestring = new stdClass();
-    $datestring->year  = get_string('year');
-    $datestring->years = get_string('years');
-    $datestring->day   = get_string('day');
-    $datestring->days  = get_string('days');
-    $datestring->hour  = get_string('hour');
-    $datestring->hours = get_string('hours');
-    $datestring->min   = get_string('min');
-    $datestring->mins  = get_string('mins');
-    $datestring->sec   = get_string('sec');
-    $datestring->secs  = get_string('secs');
-
-    if ($mode !== NULL) {
-        $mode = (int)$mode;
-        $SESSION->userindexmode = $mode;
-    } else if (isset($SESSION->userindexmode)) {
-        $mode = (int)$SESSION->userindexmode;
-    } else {
-        $mode = MODE_BRIEF;
-    }
+// Check to see if groups are being used in this course
+// and if so, set $currentgroup to reflect the current group.
 
-/// Check to see if groups are being used in this course
-/// and if so, set $currentgroup to reflect the current group
+$groupmode    = groups_get_course_groupmode($course);   // Groups are being used.
+$currentgroup = groups_get_course_group($course, true);
 
-    $groupmode    = groups_get_course_groupmode($course);   // Groups are being used
-    $currentgroup = groups_get_course_group($course, true);
+if (!$currentgroup) {      // To make some other functions work better later.
+    $currentgroup  = null;
+}
 
-    if (!$currentgroup) {      // To make some other functions work better later
-        $currentgroup  = NULL;
-    }
+$isseparategroups = ($course->groupmode == SEPARATEGROUPS and !has_capability('moodle/site:accessallgroups', $context));
 
-    $isseparategroups = ($course->groupmode == SEPARATEGROUPS and !has_capability('moodle/site:accessallgroups', $context));
+$PAGE->set_title("$course->shortname: ".get_string('participants'));
+$PAGE->set_heading($course->fullname);
+$PAGE->set_pagetype('course-view-' . $course->format);
+$PAGE->add_body_class('path-user');                     // So we can style it independently.
+$PAGE->set_other_editing_capability('moodle/course:manageactivities');
 
-    $PAGE->set_title("$course->shortname: ".get_string('participants'));
-    $PAGE->set_heading($course->fullname);
-    $PAGE->set_pagetype('course-view-' . $course->format);
-    $PAGE->add_body_class('path-user');                     // So we can style it independently
-    $PAGE->set_other_editing_capability('moodle/course:manageactivities');
+echo $OUTPUT->header();
 
-    echo $OUTPUT->header();
+echo '<div class="userlist">';
 
-    echo '<div class="userlist">';
+if ($isseparategroups and (!$currentgroup) ) {
+    // The user is not in the group so show message and exit.
+    echo $OUTPUT->heading(get_string("notingroup"));
+    echo $OUTPUT->footer();
+    exit;
+}
 
-    if ($isseparategroups and (!$currentgroup) ) {
-        // The user is not in the group so show message and exit
-        echo $OUTPUT->heading(get_string("notingroup"));
-        echo $OUTPUT->footer();
-        exit;
-    }
 
+// Should use this variable so that we don't break stuff every time a variable is added or changed.
+$baseurl = new moodle_url('/user/index.php', array(
+        'contextid' => $context->id,
+        'roleid' => $roleid,
+        'id' => $course->id,
+        'perpage' => $perpage,
+        'accesssince' => $accesssince,
+        'search' => s($search)));
+
+// Setting up tags.
+if ($course->id == SITEID) {
+    $filtertype = 'site';
+} else if ($course->id && !$currentgroup) {
+    $filtertype = 'course';
+    $filterselect = $course->id;
+} else {
+    $filtertype = 'group';
+    $filterselect = $currentgroup;
+}
 
-    // Should use this variable so that we don't break stuff every time a variable is added or changed.
-    $baseurl = new moodle_url('/user/index.php', array(
-            'contextid' => $context->id,
-            'roleid' => $roleid,
-            'id' => $course->id,
-            'perpage' => $perpage,
-            'accesssince' => $accesssince,
-            'search' => s($search)));
-
-/// setting up tags
-    if ($course->id == SITEID) {
-        $filtertype = 'site';
-    } else if ($course->id && !$currentgroup) {
-        $filtertype = 'course';
-        $filterselect = $course->id;
-    } else {
-        $filtertype = 'group';
-        $filterselect = $currentgroup;
-    }
 
 
+// Get the hidden field list.
+if (has_capability('moodle/course:viewhiddenuserfields', $context)) {
+    $hiddenfields = array();  // Teachers and admins are allowed to see everything.
+} else {
+    $hiddenfields = array_flip(explode(', ', $CFG->hiddenuserfields));
+}
 
-/// Get the hidden field list
-    if (has_capability('moodle/course:viewhiddenuserfields', $context)) {
-        $hiddenfields = array();  // teachers and admins are allowed to see everything
-    } else {
-        $hiddenfields = array_flip(explode(',', $CFG->hiddenuserfields));
-    }
+if (isset($hiddenfields['lastaccess'])) {
+    // Do not allow access since filtering.
+    $accesssince = 0;
+}
 
-    if (isset($hiddenfields['lastaccess'])) {
-        // do not allow access since filtering
-        $accesssince = 0;
-    }
+// Print settings and things in a table across the top.
+$controlstable = new html_table();
+$controlstable->attributes['class'] = 'controls';
+$controlstable->cellspacing = 0;
+$controlstable->data[] = new html_table_row();
+
+// Print my course menus.
+if ($mycourses = enrol_get_my_courses()) {
+    $courselist = array();
+    $popupurl = new moodle_url('/user/index.php?roleid='.$roleid.'&sifirst=&silast=');
+    foreach ($mycourses as $mycourse) {
+        $coursecontext = context_course::instance($mycourse->id);
+        $courselist[$mycourse->id] = format_string($mycourse->shortname, true, array('context' => $coursecontext));
+    }
+    if (has_capability('moodle/site:viewparticipants', $systemcontext)) {
+        unset($courselist[SITEID]);
+        $courselist = array(SITEID => format_string($SITE->shortname, true, array('context' => $systemcontext))) + $courselist;
+    }
+    $select = new single_select($popupurl, 'id', $courselist, $course->id, null, 'courseform');
+    $select->set_label(get_string('mycourses'));
+    $controlstable->data[0]->cells[] = $OUTPUT->render($select);
+}
 
-/// Print settings and things in a table across the top
-    $controlstable = new html_table();
-    $controlstable->attributes['class'] = 'controls';
-    $controlstable->cellspacing = 0;
-    $controlstable->data[] = new html_table_row();
-
-/// Print my course menus
-    if ($mycourses = enrol_get_my_courses()) {
-        $courselist = array();
-        $popupurl = new moodle_url('/user/index.php?roleid='.$roleid.'&sifirst=&silast=');
-        foreach ($mycourses as $mycourse) {
-            $coursecontext = context_course::instance($mycourse->id);
-            $courselist[$mycourse->id] = format_string($mycourse->shortname, true, array('context' => $coursecontext));
-        }
-        if (has_capability('moodle/site:viewparticipants', $systemcontext)) {
-            unset($courselist[SITEID]);
-            $courselist = array(SITEID => format_string($SITE->shortname, true, array('context' => $systemcontext))) + $courselist;
-        }
-        $select = new single_select($popupurl, 'id', $courselist, $course->id, null, 'courseform');
-        $select->set_label(get_string('mycourses'));
-        $controlstable->data[0]->cells[] = $OUTPUT->render($select);
+$controlstable->data[0]->cells[] = groups_print_course_menu($course, $baseurl->out(), true);
+
+if (!isset($hiddenfields['lastaccess'])) {
+    // Get minimum lastaccess for this course and display a dropbox to filter by lastaccess going back this far.
+    // We need to make it diferently for normal courses and site course.
+    if (!$isfrontpage) {
+        $minlastaccess = $DB->get_field_sql('SELECT min(timeaccess)
+                                               FROM {user_lastaccess}
+                                              WHERE courseid = ?
+                                                    AND timeaccess != 0', array($course->id));
+        $lastaccess0exists = $DB->record_exists('user_lastaccess', array('courseid' => $course->id, 'timeaccess' => 0));
+    } else {
+        $minlastaccess = $DB->get_field_sql('SELECT min(lastaccess)
+                                               FROM {user}
+                                              WHERE lastaccess != 0');
+        $lastaccess0exists = $DB->record_exists('user', array('lastaccess' => 0));
     }
 
-    $controlstable->data[0]->cells[] = groups_print_course_menu($course, $baseurl->out(), true);
-
-    if (!isset($hiddenfields['lastaccess'])) {
-        // get minimum lastaccess for this course and display a dropbox to filter by lastaccess going back this far.
-        // we need to make it diferently for normal courses and site course
-        if (!$isfrontpage) {
-            $minlastaccess = $DB->get_field_sql('SELECT min(timeaccess)
-                                                   FROM {user_lastaccess}
-                                                  WHERE courseid = ?
-                                                        AND timeaccess != 0', array($course->id));
-            $lastaccess0exists = $DB->record_exists('user_lastaccess', array('courseid'=>$course->id, 'timeaccess'=>0));
-        } else {
-            $minlastaccess = $DB->get_field_sql('SELECT min(lastaccess)
-                                                   FROM {user}
-                                                  WHERE lastaccess != 0');
-            $lastaccess0exists = $DB->record_exists('user', array('lastaccess'=>0));
-        }
-
-        $now = usergetmidnight(time());
-        $timeaccess = array();
-        $baseurl->remove_params('accesssince');
+    $now = usergetmidnight(time());
+    $timeaccess = array();
+    $baseurl->remove_params('accesssince');
 
-        // makes sense for this to go first.
-        $timeoptions[0] = get_string('selectperiod');
+    // Makes sense for this to go first.
+    $timeoptions[0] = get_string('selectperiod');
 
-        // days
-        for ($i = 1; $i < 7; $i++) {
-            if (strtotime('-'.$i.' days',$now) >= $minlastaccess) {
-                $timeoptions[strtotime('-'.$i.' days',$now)] = get_string('numdays','moodle',$i);
-            }
-        }
-        // weeks
-        for ($i = 1; $i < 10; $i++) {
-            if (strtotime('-'.$i.' weeks',$now) >= $minlastaccess) {
-                $timeoptions[strtotime('-'.$i.' weeks',$now)] = get_string('numweeks','moodle',$i);
-            }
+    // Days.
+    for ($i = 1; $i < 7; $i++) {
+        if (strtotime('-'.$i.' days', $now) >= $minlastaccess) {
+            $timeoptions[strtotime('-'.$i.' days', $now)] = get_string('numdays', 'moodle', $i);
         }
-        // months
-        for ($i = 2; $i < 12; $i++) {
-            if (strtotime('-'.$i.' months',$now) >= $minlastaccess) {
-                $timeoptions[strtotime('-'.$i.' months',$now)] = get_string('nummonths','moodle',$i);
-            }
+    }
+    // Weeks.
+    for ($i = 1; $i < 10; $i++) {
+        if (strtotime('-'.$i.' weeks', $now) >= $minlastaccess) {
+            $timeoptions[strtotime('-'.$i.' weeks', $now)] = get_string('numweeks', 'moodle', $i);
         }
-        // try a year
-        if (strtotime('-1 year',$now) >= $minlastaccess) {
-            $timeoptions[strtotime('-1 year',$now)] = get_string('lastyear');
+    }
+    // Months.
+    for ($i = 2; $i < 12; $i++) {
+        if (strtotime('-'.$i.' months', $now) >= $minlastaccess) {
+            $timeoptions[strtotime('-'.$i.' months', $now)] = get_string('nummonths', 'moodle', $i);
         }
+    }
+    // Try a year.
+    if (strtotime('-1 year', $now) >= $minlastaccess) {
+        $timeoptions[strtotime('-1 year', $now)] = get_string('lastyear');
+    }
 
-        if (!empty($lastaccess0exists)) {
-            $timeoptions[-1] = get_string('never');
-        }
+    if (!empty($lastaccess0exists)) {
+        $timeoptions[-1] = get_string('never');
+    }
 
-        if (count($timeoptions) > 1) {
-            $select = new single_select($baseurl, 'accesssince', $timeoptions, $accesssince, null, 'timeoptions');
-            $select->set_label(get_string('usersnoaccesssince'));
-            $controlstable->data[0]->cells[] = $OUTPUT->render($select);
-        }
+    if (count($timeoptions) > 1) {
+        $select = new single_select($baseurl, 'accesssince', $timeoptions, $accesssince, null, 'timeoptions');
+        $select->set_label(get_string('usersnoaccesssince'));
+        $controlstable->data[0]->cells[] = $OUTPUT->render($select);
     }
+}
 
-    $formatmenu = array( '0' => get_string('brief'),
-                         '1' => get_string('userdetails'));
-    $select = new single_select($baseurl, 'mode', $formatmenu, $mode, null, 'formatmenu');
-    $select->set_label(get_string('userlist'));
-    $userlistcell = new html_table_cell();
-    $userlistcell->attributes['class'] = 'right';
-    $userlistcell->text = $OUTPUT->render($select);
-    $controlstable->data[0]->cells[] = $userlistcell;
-
-    echo html_writer::table($controlstable);
-
-    if ($currentgroup and (!$isseparategroups or has_capability('moodle/site:accessallgroups', $context))) {    /// Display info about the group
-        if ($group = groups_get_group($currentgroup)) {
-            if (!empty($group->description) or (!empty($group->picture) and empty($group->hidepicture))) {
-                $groupinfotable = new html_table();
-                $groupinfotable->attributes['class'] = 'groupinfobox';
-                $picturecell = new html_table_cell();
-                $picturecell->attributes['class'] = 'left side picture';
-                $picturecell->text = print_group_picture($group, $course->id, true, true, false);
-
-                $contentcell = new html_table_cell();
-                $contentcell->attributes['class'] = 'content';
-
-                $contentheading = $group->name;
-                if (has_capability('moodle/course:managegroups', $context)) {
-                    $aurl = new moodle_url('/group/group.php', array('id' => $group->id, 'courseid' => $group->courseid));
-                    $contentheading .= '&nbsp;' . $OUTPUT->action_icon($aurl, new pix_icon('t/edit', get_string('editgroupprofile')));
-                }
+$formatmenu = array( '0' => get_string('brief'),
+                     '1' => get_string('userdetails'));
+$select = new single_select($baseurl, 'mode', $formatmenu, $mode, null, 'formatmenu');
+$select->set_label(get_string('userlist'));
+$userlistcell = new html_table_cell();
+$userlistcell->attributes['class'] = 'right';
+$userlistcell->text = $OUTPUT->render($select);
+$controlstable->data[0]->cells[] = $userlistcell;
+
+echo html_writer::table($controlstable);
+
+if ($currentgroup and (!$isseparategroups or has_capability('moodle/site:accessallgroups', $context))) {
+    // Display info about the group.
+    if ($group = groups_get_group($currentgroup)) {
+        if (!empty($group->description) or (!empty($group->picture) and empty($group->hidepicture))) {
+            $groupinfotable = new html_table();
+            $groupinfotable->attributes['class'] = 'groupinfobox';
+            $picturecell = new html_table_cell();
+            $picturecell->attributes['class'] = 'left side picture';
+            $picturecell->text = print_group_picture($group, $course->id, true, true, false);
+
+            $contentcell = new html_table_cell();
+            $contentcell->attributes['class'] = 'content';
+
+            $contentheading = $group->name;
+            if (has_capability('moodle/course:managegroups', $context)) {
+                $aurl = new moodle_url('/group/group.php', array('id' => $group->id, 'courseid' => $group->courseid));
+                $contentheading .= '&nbsp;' . $OUTPUT->action_icon($aurl, new pix_icon('t/edit', get_string('editgroupprofile')));
+            }
 
-                $group->description = file_rewrite_pluginfile_urls($group->description, 'pluginfile.php', $context->id, 'group', 'description', $group->id);
-                if (!isset($group->descriptionformat)) {
-                    $group->descriptionformat = FORMAT_MOODLE;
-                }
-                $options = array('overflowdiv'=>true);
-                $contentcell->text = $OUTPUT->heading($contentheading, 3) . format_text($group->description, $group->descriptionformat, $options);
-                $groupinfotable->data[] = new html_table_row(array($picturecell, $contentcell));
-                echo html_writer::table($groupinfotable);
+            $group->description = file_rewrite_pluginfile_urls($group->description, 'pluginfile.php', $context->id, 'group',
+                'description', $group->id);
+            if (!isset($group->descriptionformat)) {
+                $group->descriptionformat = FORMAT_MOODLE;
             }
+            $options = array('overflowdiv' => true);
+            $formatteddesc = format_text($group->description, $group->descriptionformat, $options);
+            $contentcell->text = $OUTPUT->heading($contentheading, 3) . $formatteddesc;
+            $groupinfotable->data[] = new html_table_row(array($picturecell, $contentcell));
+            echo html_writer::table($groupinfotable);
         }
     }
+}
 
-    /// Define a table showing a list of users in the current role selection
-    $tablecolumns = array();
-    $tableheaders = array();
-    if ($bulkoperations && $mode === MODE_BRIEF) {
-        $tablecolumns[] = 'select';
-        $tableheaders[] = get_string('select');
-    }
-    $tablecolumns[] = 'userpic';
-    $tablecolumns[] = 'fullname';
-
-    $extrafields = get_extra_user_fields($context);
-    $tableheaders[] = get_string('userpic');
-    $tableheaders[] = get_string('fullnameuser');
+// Define a table showing a list of users in the current role selection.
+$tablecolumns = array();
+$tableheaders = array();
+if ($bulkoperations && $mode === MODE_BRIEF) {
+    $tablecolumns[] = 'select';
+    $tableheaders[] = get_string('select');
+}
+$tablecolumns[] = 'userpic';
+$tablecolumns[] = 'fullname';
 
-    if ($mode === MODE_BRIEF) {
-        foreach ($extrafields as $field) {
-            $tablecolumns[] = $field;
-            $tableheaders[] = get_user_field_name($field);
-        }
-    }
-    if ($mode === MODE_BRIEF && !isset($hiddenfields['city'])) {
-        $tablecolumns[] = 'city';
-        $tableheaders[] = get_string('city');
-    }
-    if ($mode === MODE_BRIEF && !isset($hiddenfields['country'])) {
-        $tablecolumns[] = 'country';
-        $tableheaders[] = get_string('country');
-    }
-    if (!isset($hiddenfields['lastaccess'])) {
-        $tablecolumns[] = 'lastaccess';
-        $tableheaders[] = get_string('lastaccess');
-    }
+$extrafields = get_extra_user_fields($context);
+$tableheaders[] = get_string('userpic');
+$tableheaders[] = get_string('fullnameuser');
 
-    if ($bulkoperations && $mode === MODE_USERDETAILS) {
-        $tablecolumns[] = 'select';
-        $tableheaders[] = get_string('select');
+if ($mode === MODE_BRIEF) {
+    foreach ($extrafields as $field) {
+        $tablecolumns[] = $field;
+        $tableheaders[] = get_user_field_name($field);
     }
+}
+if ($mode === MODE_BRIEF && !isset($hiddenfields['city'])) {
+    $tablecolumns[] = 'city';
+    $tableheaders[] = get_string('city');
+}
+if ($mode === MODE_BRIEF && !isset($hiddenfields['country'])) {
+    $tablecolumns[] = 'country';
+    $tableheaders[] = get_string('country');
+}
+if (!isset($hiddenfields['lastaccess'])) {
+    $tablecolumns[] = 'lastaccess';
+    $tableheaders[] = get_string('lastaccess');
+}
 
-    $table = new flexible_table('user-index-participants-'.$course->id);
-    $table->define_columns($tablecolumns);
-    $table->define_headers($tableheaders);
-    $table->define_baseurl($baseurl->out());
+if ($bulkoperations && $mode === MODE_USERDETAILS) {
+    $tablecolumns[] = 'select';
+    $tableheaders[] = get_string('select');
+}
 
-    if (!isset($hiddenfields['lastaccess'])) {
-        $table->sortable(true, 'lastaccess', SORT_DESC);
-    } else {
-        $table->sortable(true, 'firstname', SORT_ASC);
-    }
+$table = new flexible_table('user-index-participants-'.$course->id);
+$table->define_columns($tablecolumns);
+$table->define_headers($tableheaders);
+$table->define_baseurl($baseurl->out());
 
-    $table->no_sorting('roles');
-    $table->no_sorting('groups');
-    $table->no_sorting('groupings');
-    $table->no_sorting('select');
-
-    $table->set_attribute('cellspacing', '0');
-    $table->set_attribute('id', 'participants');
-    $table->set_attribute('class', 'generaltable generalbox');
-
-    $table->set_control_variables(array(
-                TABLE_VAR_SORT    => 'ssort',
-                TABLE_VAR_HIDE    => 'shide',
-                TABLE_VAR_SHOW    => 'sshow',
-                TABLE_VAR_IFIRST  => 'sifirst',
-                TABLE_VAR_ILAST   => 'silast',
-                TABLE_VAR_PAGE    => 'spage'
-                ));
-    $table->setup();
-
-    list($esql, $params) = get_enrolled_sql($context, NULL, $currentgroup, true);
-    $joins = array("FROM {user} u");
-    $wheres = array();
-
-    $extrasql = get_extra_user_fields_sql($context, 'u', '', array(
-            'id', 'username', 'firstname', 'lastname', 'email', 'city', 'country',
-            'picture', 'lang', 'timezone', 'maildisplay', 'imagealt', 'lastaccess'));
-
-    $mainuserfields = user_picture::fields('u', array('username', 'email', 'city', 'country', 'lang', 'timezone', 'maildisplay'));
-
-    if ($isfrontpage) {
-        $select = "SELECT $mainuserfields, u.lastaccess$extrasql";
-        $joins[] = "JOIN ($esql) e ON e.id = u.id"; // everybody on the frontpage usually
-        if ($accesssince) {
-            $wheres[] = get_user_lastaccess_sql($accesssince);
-        }
+if (!isset($hiddenfields['lastaccess'])) {
+    $table->sortable(true, 'lastaccess', SORT_DESC);
+} else {
+    $table->sortable(true, 'firstname', SORT_ASC);
+}
 
-    } else {
-        $select = "SELECT $mainuserfields, COALESCE(ul.timeaccess, 0) AS lastaccess$extrasql";
-        $joins[] = "JOIN ($esql) e ON e.id = u.id"; // course enrolled users only
-        $joins[] = "LEFT JOIN {user_lastaccess} ul ON (ul.userid = u.id AND ul.courseid = :courseid)"; // not everybody accessed course yet
-        $params['courseid'] = $course->id;
-        if ($accesssince) {
-            $wheres[] = get_course_lastaccess_sql($accesssince);
-        }
+$table->no_sorting('roles');
+$table->no_sorting('groups');
+$table->no_sorting('groupings');
+$table->no_sorting('select');
+
+$table->set_attribute('cellspacing', '0');
+$table->set_attribute('id', 'participants');
+$table->set_attribute('class', 'generaltable generalbox');
+
+$table->set_control_variables(array(
+            TABLE_VAR_SORT    => 'ssort',
+            TABLE_VAR_HIDE    => 'shide',
+            TABLE_VAR_SHOW    => 'sshow',
+            TABLE_VAR_IFIRST  => 'sifirst',
+            TABLE_VAR_ILAST   => 'silast',
+            TABLE_VAR_PAGE    => 'spage'
+            ));
+$table->setup();
+
+list($esql, $params) = get_enrolled_sql($context, null, $currentgroup, true);
+$joins = array("FROM {user} u");
+$wheres = array();
+
+$extrasql = get_extra_user_fields_sql($context, 'u', '', array(
+        'id', 'username', 'firstname', 'lastname', 'email', 'city', 'country',
+        'picture', 'lang', 'timezone', 'maildisplay', 'imagealt', 'lastaccess'));
+
+$mainuserfields = user_picture::fields('u', array('username', 'email', 'city', 'country', 'lang', 'timezone', 'maildisplay'));
+
+if ($isfrontpage) {
+    $select = "SELECT $mainuserfields, u.lastaccess$extrasql";
+    $joins[] = "JOIN ($esql) e ON e.id = u.id"; // Everybody on the frontpage usually.
+    if ($accesssince) {
+        $wheres[] = get_user_lastaccess_sql($accesssince);
+    }
+
+} else {
+    $select = "SELECT $mainuserfields, COALESCE(ul.timeaccess, 0) AS lastaccess$extrasql";
+    $joins[] = "JOIN ($esql) e ON e.id = u.id"; // Course enrolled users only.
+    $joins[] = "LEFT JOIN {user_lastaccess} ul ON (ul.userid = u.id AND ul.courseid = :courseid)"; // Not everybody accessed course yet.
+    $params['courseid'] = $course->id;
+    if ($accesssince) {
+        $wheres[] = get_course_lastaccess_sql($accesssince);
     }
+}
 
-    // performance hacks - we preload user contexts together with accounts
-    $ccselect = ', ' . context_helper::get_preload_record_columns_sql('ctx');
-    $ccjoin = "LEFT JOIN {context} ctx ON (ctx.instanceid = u.id AND ctx.contextlevel = :contextlevel)";
-    $params['contextlevel'] = CONTEXT_USER;
-    $select .= $ccselect;
-    $joins[] = $ccjoin;
+// Performance hacks - we preload user contexts together with accounts.
+$ccselect = ', ' . context_helper::get_preload_record_columns_sql('ctx');
+$ccjoin = "LEFT JOIN {context} ctx ON (ctx.instanceid = u.id AND ctx.contextlevel = :contextlevel)";
+$params['contextlevel'] = CONTEXT_USER;
+$select .= $ccselect;
+$joins[] = $ccjoin;
 
 
-    // limit list to users with some role only
-    if ($roleid) {
-        // We want to query both the current context and parent contexts.
-        list($relatedctxsql, $relatedctxparams) = $DB->get_in_or_equal($context->get_parent_context_ids(true), SQL_PARAMS_NAMED, 'relatedctx');
+// Limit list to users with some role only.
+if ($roleid) {
+    // We want to query both the current context and parent contexts.
+    list($relatedctxsql, $relatedctxparams) = $DB->get_in_or_equal($context->get_parent_context_ids(true), SQL_PARAMS_NAMED, 'relatedctx');
 
-        $wheres[] = "u.id IN (SELECT userid FROM {role_assignments} WHERE roleid = :roleid AND contextid $relatedctxsql)";
-        $params = array_merge($params, array('roleid' => $roleid), $relatedctxparams);
-    }
+    $wheres[] = "u.id IN (SELECT userid FROM {role_assignments} WHERE roleid = :roleid AND contextid $relatedctxsql)";
+    $params = array_merge($params, array('roleid' => $roleid), $relatedctxparams);
+}
 
-    $from = implode("\n", $joins);
-    if ($wheres) {
-        $where = "WHERE " . implode(" AND ", $wheres);
-    } else {
-        $where = "";
-    }
+$from = implode("\n", $joins);
+if ($wheres) {
+    $where = "WHERE " . implode(" AND ", $wheres);
+} else {
+    $where = "";
+}
 
-    $totalcount = $DB->count_records_sql("SELECT COUNT(u.id) $from $where", $params);
+$totalcount = $DB->count_records_sql("SELECT COUNT(u.id) $from $where", $params);
 
-    if (!empty($search)) {
-        $fullname = $DB->sql_fullname('u.firstname','u.lastname');
-        $wheres[] = "(". $DB->sql_like($fullname, ':search1', false, false) .
-                    " OR ". $DB->sql_like('email', ':search2', false, false) .
-                    " OR ". $DB->sql_like('idnumber', ':search3', false, false) .") ";
-        $params['search1'] = "%$search%";
-        $params['search2'] = "%$search%";
-        $params['search3'] = "%$search%";
-    }
+if (!empty($search)) {
+    $fullname = $DB->sql_fullname('u.firstname', 'u.lastname');
+    $wheres[] = "(". $DB->sql_like($fullname, ':search1', false, false) .
+                " OR ". $DB->sql_like('email', ':search2', false, false) .
+                " OR ". $DB->sql_like('idnumber', ':search3', false, false) .") ";
+    $params['search1'] = "%$search%";
+    $params['search2'] = "%$search%";
+    $params['search3'] = "%$search%";
+}
 
-    list($twhere, $tparams) = $table->get_sql_where();
-    if ($twhere) {
-        $wheres[] = $twhere;
-        $params = array_merge($params, $tparams);
-    }
+list($twhere, $tparams) = $table->get_sql_where();
+if ($twhere) {
+    $wheres[] = $twhere;
+    $params = array_merge($params, $tparams);
+}
 
-    $from = implode("\n", $joins);
-    if ($wheres) {
-        $where = "WHERE " . implode(" AND ", $wheres);
-    } else {
-        $where = "";
-    }
+$from = implode("\n", $joins);
+if ($wheres) {
+    $where = "WHERE " . implode(" AND ", $wheres);
+} else {
+    $where = "";
+}
 
-    if ($table->get_sql_sort()) {
-        $sort = ' ORDER BY '.$table->get_sql_sort();
-    } else {
-        $sort = '';
-    }
+if ($table->get_sql_sort()) {
+    $sort = ' ORDER BY '.$table->get_sql_sort();
+} else {
+    $sort = '';
+}
 
-    $matchcount = $DB->count_records_sql("SELECT COUNT(u.id) $from $where", $params);
+$matchcount = $DB->count_records_sql("SELECT COUNT(u.id) $from $where", $params);
 
-    $table->initialbars(true);
-    $table->pagesize($perpage, $matchcount);
+$table->initialbars(true);
+$table->pagesize($perpage, $matchcount);
 
-    // list of users at the current visible page - paging makes it relatively short
-    $userlist = $DB->get_recordset_sql("$select $from $where $sort", $params, $table->get_page_start(), $table->get_page_size());
+// List of users at the current visible page - paging makes it relatively short.
+$userlist = $DB->get_recordset_sql("$select $from $where $sort", $params, $table->get_page_start(), $table->get_page_size());
 
-    /// If there are multiple Roles in the course, then show a drop down menu for switching
-    if (count($rolenames) > 1) {
-        echo '<div class="rolesform">';
-        echo '<label for="rolesform_jump">'.get_string('currentrole', 'role').'&nbsp;</label>';
-        echo $OUTPUT->single_select($rolenamesurl, 'roleid', $rolenames, $roleid, null, 'rolesform');
-        echo '</div>';
+// If there are multiple Roles in the course, then show a drop down menu for switching.
+if (count($rolenames) > 1) {
+    echo '<div class="rolesform">';
+    echo '<label for="rolesform_jump">'.get_string('currentrole', 'role').'&nbsp;</label>';
+    echo $OUTPUT->single_select($rolenamesurl, 'roleid', $rolenames, $roleid, null, 'rolesform');
+    echo '</div>';
 
-    } else if (count($rolenames) == 1) {
-        // when all users with the same role - print its name
-        echo '<div class="rolesform">';
-        echo get_string('role').get_string('labelsep', 'langconfig');
-        $rolename = reset($rolenames);
-        echo $rolename;
-        echo '</div>';
-    }
+} else if (count($rolenames) == 1) {
+    // When all users with the same role - print its name.
+    echo '<div class="rolesform">';
+    echo get_string('role').get_string('labelsep', 'langconfig');
+    $rolename = reset($rolenames);
+    echo $rolename;
+    echo '</div>';
+}
 
-    if ($roleid > 0) {
-        $a = new stdClass();
-        $a->number = $totalcount;
-        $a->role = $rolenames[$roleid];
-        $heading = format_string(get_string('xuserswiththerole', 'role', $a));
+if ($roleid > 0) {
+    $a = new stdClass();
+    $a->number = $totalcount;
+    $a->role = $rolenames[$roleid];
+    $heading = format_string(get_string('xuserswiththerole', 'role', $a));
 
-        if ($currentgroup and $group) {
-            $a->group = $group->name;
-            $heading .= ' ' . format_string(get_string('ingroup', 'role', $a));
-        }
+    if ($currentgroup and $group) {
+        $a->group = $group->name;
+        $heading .= ' ' . format_string(get_string('ingroup', 'role', $a));
+    }
 
-        if ($accesssince) {
-            $a->timeperiod = $timeoptions[$accesssince];
-            $heading .= ' ' . format_string(get_string('inactiveformorethan', 'role', $a));
-        }
+    if ($accesssince) {
+        $a->timeperiod = $timeoptions[$accesssince];
+        $heading .= ' ' . format_string(get_string('inactiveformorethan', 'role', $a));
+    }
 
-        $heading .= ": $a->number";
+    $heading .= ": $a->number";
 
-        if (user_can_assign($context, $roleid)) {
-            $headingurl = new moodle_url($CFG->wwwroot . '/' . $CFG->admin . '/roles/assign.php',
-                    array('roleid' => $roleid, 'contextid' => $context->id));
-            $heading .= $OUTPUT->action_icon($headingurl, new pix_icon('t/edit', get_string('edit')));
-        }
-        echo $OUTPUT->heading($heading, 3);
+    if (user_can_assign($context, $roleid)) {
+        $headingurl = new moodle_url($CFG->wwwroot . '/' . $CFG->admin . '/roles/assign.php',
+                array('roleid' => $roleid, 'contextid' => $context->id));
+        $heading .= $OUTPUT->action_icon($headingurl, new pix_icon('t/edit', get_string('edit')));
+    }
+    echo $OUTPUT->heading($heading, 3);
+} else {
+    if ($course->id != SITEID && has_capability('moodle/course:enrolreview', $context)) {
+        $editlink = $OUTPUT->action_icon(new moodle_url('/enrol/users.php', array('id' => $course->id)),
+                                         new pix_icon('t/edit', get_string('edit')));
     } else {
-        if ($course->id != SITEID && has_capability('moodle/course:enrolreview', $context)) {
-            $editlink = $OUTPUT->action_icon(new moodle_url('/enrol/users.php', array('id' => $course->id)),
-                                             new pix_icon('t/edit', get_string('edit')));
-        } else {
-            $editlink = '';
-        }
-        if ($course->id == SITEID and $roleid < 0) {
-            $strallparticipants = get_string('allsiteusers', 'role');
-        } else {
-            $strallparticipants = get_string('allparticipants');
-        }
-        if ($matchcount < $totalcount) {
-            echo $OUTPUT->heading($strallparticipants.get_string('labelsep', 'langconfig').$matchcount.'/'.$totalcount . $editlink, 3);
-        } else {
-            echo $OUTPUT->heading($strallparticipants.get_string('labelsep', 'langconfig').$matchcount . $editlink, 3);
-        }
+        $editlink = '';
     }
+    if ($course->id == SITEID and $roleid < 0) {
+        $strallparticipants = get_string('allsiteusers', 'role');
+    } else {
+        $strallparticipants = get_string('allparticipants');
+    }
+    if ($matchcount < $totalcount) {
+        echo $OUTPUT->heading($strallparticipants.get_string('labelsep', 'langconfig').$matchcount.'/'.$totalcount . $editlink, 3);
+    } else {
+        echo $OUTPUT->heading($strallparticipants.get_string('labelsep', 'langconfig').$matchcount . $editlink, 3);
+    }
+}
 
 
-    if ($bulkoperations) {
-        echo '<form action="action_redir.php" method="post" id="participantsform">';
-        echo '<div>';
-        echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
-        echo '<input type="hidden" name="returnto" value="'.s($PAGE->url->out(false)).'" />';
-    }
+if ($bulkoperations) {
+    echo '<form action="action_redir.php" method="post" id="participantsform">';
+    echo '<div>';
+    echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
+    echo '<input type="hidden" name="returnto" value="'.s($PAGE->url->out(false)).'" />';
+}
 
-    if ($mode === MODE_USERDETAILS) {    // Print simple listing
-        if ($totalcount < 1) {
-            echo $OUTPUT->heading(get_string('nothingtodisplay'));
-        } else {
-            if ($totalcount > $perpage) {
+if ($mode === MODE_USERDETAILS) {    // Print simple listing.
+    if ($totalcount < 1) {
+        echo $OUTPUT->heading(get_string('nothingtodisplay'));
+    } else {
+        if ($totalcount > $perpage) {
 
-                $firstinitial = $table->get_initial_first();
-                $lastinitial  = $table->get_initial_last();
-                $strall = get_string('all');
-                $alpha  = explode(',', get_string('alphabet', 'langconfig'));
+            $firstinitial = $table->get_initial_first();
+            $lastinitial  = $table->get_initial_last();
+            $strall = get_string('all');
+            $alpha  = explode(', ', get_string('alphabet', 'langconfig'));
 
-                // Bar of first initials
+            // Bar of first initials.
 
-                echo '<div class="initialbar firstinitial">'.get_string('firstname').' : ';
-                if(!empty($firstinitial)) {
-                    echo '<a href="'.$baseurl->out().'&amp;sifirst=">'.$strall.'</a>';
+            echo '<div class="initialbar firstinitial">'.get_string('firstname').' : ';
+            if (!empty($firstinitial)) {
+                echo '<a href="'.$baseurl->out().'&amp;sifirst=">'.$strall.'</a>';
+            } else {
+                echo '<strong>'.$strall.'</strong>';
+            }
+            foreach ($alpha as $letter) {
+                if ($letter == $firstinitial) {
+                    echo ' <strong>'.$letter.'</strong>';
                 } else {
-                    echo '<strong>'.$strall.'</strong>';
-                }
-                foreach ($alpha as $letter) {
-                    if ($letter == $firstinitial) {
-                        echo ' <strong>'.$letter.'</strong>';
-                    } else {
-                        echo ' <a href="'.$baseurl->out().'&amp;sifirst='.$letter.'">'.$letter.'</a>';
-                    }
+                    echo ' <a href="'.$baseurl->out().'&amp;sifirst='.$letter.'">'.$letter.'</a>';
                 }
-                echo '</div>';
+            }
+            echo '</div>';
 
-                // Bar of last initials
+            // Bar of last initials.
 
-                echo '<div class="initialbar lastinitial">'.get_string('lastname').' : ';
-                if(!empty($lastinitial)) {
-                    echo '<a href="'.$baseurl->out().'&amp;silast=">'.$strall.'</a>';
+            echo '<div class="initialbar lastinitial">'.get_string('lastname').' : ';
+            if (!empty($lastinitial)) {
+                echo '<a href="'.$baseurl->out().'&amp;silast=">'.$strall.'</a>';
+            } else {
+                echo '<strong>'.$strall.'</strong>';
+            }
+            foreach ($alpha as $letter) {
+                if ($letter == $lastinitial) {
+                    echo ' <strong>'.$letter.'</strong>';
                 } else {
-                    echo '<strong>'.$strall.'</strong>';
-                }
-                foreach ($alpha as $letter) {
-                    if ($letter == $lastinitial) {
-                        echo ' <strong>'.$letter.'</strong>';
-                    } else {
-                        echo ' <a href="'.$baseurl->out().'&amp;silast='.$letter.'">'.$letter.'</a>';
-                    }
+                    echo ' <a href="'.$baseurl->out().'&amp;silast='.$letter.'">'.$letter.'</a>';
                 }
-                echo '</div>';
-
-                $pagingbar = new paging_bar($matchcount, intval($table->get_page_start() / $perpage), $perpage, $baseurl);
-                $pagingbar->pagevar = 'spage';
-                echo $OUTPUT->render($pagingbar);
             }
+            echo '</div>';
 
-            if ($matchcount > 0) {
-                $usersprinted = array();
-                foreach ($userlist as $user) {
-                    if (in_array($user->id, $usersprinted)) { /// Prevent duplicates by r.hidden - MDL-13935
-                        continue;
-                    }
-                    $usersprinted[] = $user->id; /// Add new user to the array of users printed
+            $pagingbar = new paging_bar($matchcount, intval($table->get_page_start() / $perpage), $perpage, $baseurl);
+            $pagingbar->pagevar = 'spage';
+            echo $OUTPUT->render($pagingbar);
+        }
+
+        if ($matchcount > 0) {
+            $usersprinted = array();
+            foreach ($userlist as $user) {
+                if (in_array($user->id, $usersprinted)) { // Prevent duplicates by r.hidden - MDL-13935.
+                    continue;
+                }
+                $usersprinted[] = $user->id; // Add new user to the array of users printed.
 
-                    context_helper::preload_from_record($user);
+                context_helper::preload_from_record($user);
 
-                    $context = context_course::instance($course->id);
-                    $usercontext = context_user::instance($user->id);
+                $context = context_course::instance($course->id);
+                $usercontext = context_user::instance($user->id);
 
-                    $countries = get_string_manager()->get_list_of_countries();
+                $countries = get_string_manager()->get_list_of_countries();
 
-                    /// Get the hidden field list
-                    if (has_capability('moodle/course:viewhiddenuserfields', $context)) {
-                        $hiddenfields = array();
-                    } else {
-                        $hiddenfields = array_flip(explode(',', $CFG->hiddenuserfields));
-                    }
-                    $table = new html_table();
-                    $table->attributes['class'] = 'userinfobox';
+                // Get the hidden field list.
+                if (has_capability('moodle/course:viewhiddenuserfields', $context)) {
+                    $hiddenfields = array();
+                } else {
+                    $hiddenfields = array_flip(explode(', ', $CFG->hiddenuserfields));
+                }
+                $table = new html_table();
+                $table->attributes['class'] = 'userinfobox';
 
-                    $row = new html_table_row();
-                    $row->cells[0] = new html_table_cell();
-                    $row->cells[0]->attributes['class'] = 'left side';
+                $row = new html_table_row();
+                $row->cells[0] = new html_table_cell();
+                $row->cells[0]->attributes['class'] = 'left side';
 
-                    $row->cells[0]->text = $OUTPUT->user_picture($user, array('size' => 100, 'courseid'=>$course->id));
-                    $row->cells[1] = new html_table_cell();
-                    $row->cells[1]->attributes['class'] = 'content';
+                $row->cells[0]->text = $OUTPUT->user_picture($user, array('size' => 100, 'courseid' => $course->id));
+                $row->cells[1] = new html_table_cell();
+                $row->cells[1]->attributes['class'] = 'content';
 
-                    $row->cells[1]->text = $OUTPUT->container(fullname($user, has_capability('moodle/site:viewfullnames', $context)), 'username');
-                    $row->cells[1]->text .= $OUTPUT->container_start('info');
+                $row->cells[1]->text = $OUTPUT->container(fullname($user, has_capability('moodle/site:viewfullnames', $context)), 'username');
+                $row->cells[1]->text .= $OUTPUT->container_start('info');
 
-                    if (!empty($user->role)) {
-                        $row->cells[1]->text .= get_string('role').get_string('labelsep', 'langconfig').$user->role.'<br />';
-                    }
-                    if ($user->maildisplay == 1 or ($user->maildisplay == 2 and ($course->id != SITEID) and !isguestuser()) or
-                                has_capability('moodle/course:viewhiddenuserfields', $context) or
-                                in_array('email', $extrafields) or ($user->id == $USER->id)) {
-                        $row->cells[1]->text .= get_string('email').get_string('labelsep', 'langconfig').html_writer::link("mailto:$user->email", $user->email) . '<br />';
+                if (!empty($user->role)) {
+                    $row->cells[1]->text .= get_string('role').get_string('labelsep', 'langconfig').$user->role.'<br />';
+                }
+                if ($user->maildisplay == 1 or ($user->maildisplay == 2 and ($course->id != SITEID) and !isguestuser()) or
+                            has_capability('moodle/course:viewhiddenuserfields', $context) or
+                            in_array('email', $extrafields) or ($user->id == $USER->id)) {
+                    $row->cells[1]->text .= get_string('email').get_string('labelsep', 'langconfig').html_writer::link("mailto:$user->email", $user->email) . '<br />';
+                }
+                foreach ($extrafields as $field) {
+                    if ($field === 'email') {
+                        // Skip email because it was displayed with different logic above
+                        // because this page is intended for students too.
+                        continue;
                     }
-                    foreach ($extrafields as $field) {
-                        if ($field === 'email') {
-                            // Skip email because it was displayed with different
-                            // logic above (because this page is intended for
-                            // students too)
-                            continue;
-                        }
-                        $row->cells[1]->text .= get_user_field_name($field) .
-                                get_string('labelsep', 'langconfig') . s($user->{$field}) . '<br />';
+                    $row->cells[1]->text .= get_user_field_name($field) .
+                            get_string('labelsep', 'langconfig') . s($user->{$field}) . '<br />';
+                }
+                if (($user->city or $user->country) and (!isset($hiddenfields['city']) or !isset($hiddenfields['country']))) {
+                    $row->cells[1]->text .= get_string('city').get_string('labelsep', 'langconfig');
+                    if ($user->city && !isset($hiddenfields['city'])) {
+                        $row->cells[1]->text .= $user->city;
                     }
-                    if (($user->city or $user->country) and (!isset($hiddenfields['city']) or !isset($hiddenfields['country']))) {
-                        $row->cells[1]->text .= get_string('city').get_string('labelsep', 'langconfig');
+                    if (!empty($countries[$user->country]) && !isset($hiddenfields['country'])) {
                         if ($user->city && !isset($hiddenfields['city'])) {
-                            $row->cells[1]->text .= $user->city;
+                            $row->cells[1]->text .= ', ';
                         }
-                        if (!empty($countries[$user->country]) && !isset($hiddenfields['country'])) {
-                            if ($user->city && !isset($hiddenfields['city'])) {
-                                $row->cells[1]->text .= ', ';
-                            }
-                            $row->cells[1]->text .= $countries[$user->country];
-                        }
-                        $row->cells[1]->text .= '<br />';
+                        $row->cells[1]->text .= $countries[$user->country];
                     }
+                    $row->cells[1]->text .= '<br />';
+                }
 
-                    if (!isset($hiddenfields['lastaccess'])) {
-                        if ($user->lastaccess) {
-                            $row->cells[1]->text .= get_string('lastaccess').get_string('labelsep', 'langconfig').userdate($user->lastaccess);
-                            $row->cells[1]->text .= '&nbsp; ('. format_time(time() - $user->lastaccess, $datestring) .')';
-                        } else {
-                            $row->cells[1]->text .= get_string('lastaccess').get_string('labelsep', 'langconfig').get_string('never');
-                        }
+                if (!isset($hiddenfields['lastaccess'])) {
+                    if ($user->lastaccess) {
+                        $row->cells[1]->text .= get_string('lastaccess').get_string('labelsep', 'langconfig').userdate($user->lastaccess);
+                        $row->cells[1]->text .= '&nbsp; ('. format_time(time() - $user->lastaccess, $datestring) .')';
+                    } else {
+                        $row->cells[1]->text .= get_string('lastaccess').get_string('labelsep', 'langconfig').get_string('never');
                     }
+                }
 
-                    $row->cells[1]->text .= $OUTPUT->container_end();
+                $row->cells[1]->text .= $OUTPUT->container_end();
 
-                    $row->cells[2] = new html_table_cell();
-                    $row->cells[2]->attributes['class'] = 'links';
-                    $row->cells[2]->text = '';
+                $row->cells[2] = new html_table_cell();
+                $row->cells[2]->attributes['class'] = 'links';
+                $row->cells[2]->text = '';
 
-                    $links = array();
+                $links = array();
 
-                    if ($CFG->bloglevel > 0) {
-                        $links[] = html_writer::link(new moodle_url('/blog/index.php?userid='.$user->id), get_string('blogs','blog'));
-                    }
+                if ($CFG->bloglevel > 0) {
+                    $links[] = html_writer::link(new moodle_url('/blog/index.php?userid='.$user->id), get_string('blogs', 'blog'));
+                }
 
-                    if (!empty($CFG->enablenotes) and (has_capability('moodle/notes:manage', $context) || has_capability('moodle/notes:view', $context))) {
-                        $links[] = html_writer::link(new moodle_url('/notes/index.php?course=' . $course->id. '&user='.$user->id), get_string('notes','notes'));
-                    }
+                if (!empty($CFG->enablenotes) and (has_capability('moodle/notes:manage', $context) || has_capability('moodle/notes:view', $context))) {
+                    $links[] = html_writer::link(new moodle_url('/notes/index.php?course=' . $course->id. '&user='.$user->id), get_string('notes', 'notes'));
+                }
 
-                    if (has_capability('moodle/site:viewreports', $context) or has_capability('moodle/user:viewuseractivitiesreport', $usercontext)) {
-                        $links[] = html_writer::link(new moodle_url('/course/user.php?id='. $course->id .'&user='. $user->id), get_string('activity'));
-                    }
+                if (has_capability('moodle/site:viewreports', $context) or has_capability('moodle/user:viewuseractivitiesreport', $usercontext)) {
+                    $links[] = html_writer::link(new moodle_url('/course/user.php?id='. $course->id .'&user='. $user->id), get_string('activity'));
+                }
 
-                    if ($USER->id != $user->id && !\core\session\manager::is_loggedinas() && has_capability('moodle/user:loginas', $context) && !is_siteadmin($user->id)) {
-                        $links[] = html_writer::link(new moodle_url('/course/loginas.php?id='. $course->id .'&user='. $user->id .'&sesskey='. sesskey()), get_string('loginas'));
-                    }
+                if ($USER->id != $user->id && !\core\session\manager::is_loggedinas() && has_capability('moodle/user:loginas', $context) && !is_siteadmin($user->id)) {
+                    $links[] = html_writer::link(new moodle_url('/course/loginas.php?id='. $course->id .'&user='. $user->id .'&sesskey='. sesskey()), get_string('loginas'));
+                }
 
-                    $links[] = html_writer::link(new moodle_url('/user/view.php?id='. $user->id .'&course='. $course->id), get_string('fullprofile') . '...');
+                $links[] = html_writer::link(new moodle_url('/user/view.php?id='. $user->id .'&course='. $course->id), get_string('fullprofile') . '...');
 
-                    $row->cells[2]->text .= implode('', $links);
+                $row->cells[2]->text .= implode('', $links);
 
-                    if ($bulkoperations) {
-                        $row->cells[2]->text .= '<br /><input type="checkbox" class="usercheckbox" name="user'.$user->id.'" /> ';
-                    }
-                    $table->data = array($row);
-                    echo html_writer::table($table);
+                if ($bulkoperations) {
+                    $row->cells[2]->text .= '<br /><input type="checkbox" class="usercheckbox" name="user'.$user->id.'" /> ';
                 }
-
-            } else {
-                echo $OUTPUT->heading(get_string('nothingtodisplay'));
+                $table->data = array($row);
+                echo html_writer::table($table);
             }
+
+        } else {
+            echo $OUTPUT->heading(get_string('nothingtodisplay'));
         }
+    }
 
-    } else {
-        $countrysort = (strpos($sort, 'country') !== false);
-        $timeformat = get_string('strftimedate');
+} else {
+    $countrysort = (strpos($sort, 'country') !== false);
+    $timeformat = get_string('strftimedate');
 
 
-        if ($userlist)  {
+    if ($userlist) {
 
-            $usersprinted = array();
-            foreach ($userlist as $user) {
-                if (in_array($user->id, $usersprinted)) { /// Prevent duplicates by r.hidden - MDL-13935
-                    continue;
-                }
-                $usersprinted[] = $user->id; /// Add new user to the array of users printed
+        $usersprinted = array();
+        foreach ($userlist as $user) {
+            if (in_array($user->id, $usersprinted)) { // Prevent duplicates by r.hidden - MDL-13935.
+                continue;
+            }
+            $usersprinted[] = $user->id; // Add new user to the array of users printed.
 
-                context_helper::preload_from_record($user);
+            context_helper::preload_from_record($user);
 
-                if ($user->lastaccess) {
-                    $lastaccess = format_time(time() - $user->lastaccess, $datestring);
-                } else {
-                    $lastaccess = $strnever;
-                }
+            if ($user->lastaccess) {
+                $lastaccess = format_time(time() - $user->lastaccess, $datestring);
+            } else {
+                $lastaccess = $strnever;
+            }
 
-                if (empty($user->country)) {
-                    $country = '';
+            if (empty($user->country)) {
+                $country = '';
 
+            } else {
+                if ($countrysort) {
+                    $country = '('.$user->country.') '.$countries[$user->country];
                 } else {
-                    if($countrysort) {
-                        $country = '('.$user->country.') '.$countries[$user->country];
-                    }
-                    else {
-                        $country = $countries[$user->country];
-                    }
+                    $country = $countries[$user->country];
                 }
+            }
 
-                $usercontext = context_user::instance($user->id);
+            $usercontext = context_user::instance($user->id);
 
-                if ($piclink = ($USER->id == $user->id || has_capability('moodle/user:viewdetails', $context) || has_capability('moodle/user:viewdetails', $usercontext))) {
-                    $profilelink = '<strong><a href="'.$CFG->wwwroot.'/user/view.php?id='.$user->id.'&amp;course='.$course->id.'">'.fullname($user).'</a></strong>';
-                } else {
-                    $profilelink = '<strong>'.fullname($user).'</strong>';
-                }
+            if ($piclink = ($USER->id == $user->id || has_capability('moodle/user:viewdetails', $context) || has_capability('moodle/user:viewdetails', $usercontext))) {
+                $profilelink = '<strong><a href="'.$CFG->wwwroot.'/user/view.php?id='.$user->id.'&amp;course='.$course->id.'">'.fullname($user).'</a></strong>';
+            } else {
+                $profilelink = '<strong>'.fullname($user).'</strong>';
+            }
 
-                $data = array();
-                if ($bulkoperations) {
-                    $data[] = '<input type="checkbox" class="usercheckbox" name="user'.$user->id.'" />';
-                }
-                $data[] = $OUTPUT->user_picture($user, array('size' => 35, 'courseid'=>$course->id));
-                $data[] = $profilelink;
+            $data = array();
+            if ($bulkoperations) {
+                $data[] = '<input type="checkbox" class="usercheckbox" name="user'.$user->id.'" />';
+            }
+            $data[] = $OUTPUT->user_picture($user, array('size' => 35, 'courseid' => $course->id));
+            $data[] = $profilelink;
 
-                if ($mode === MODE_BRIEF) {
-                    foreach ($extrafields as $field) {
-                        $data[] = $user->{$field};
-                    }
-                }
-                if ($mode === MODE_BRIEF && !isset($hiddenfields['city'])) {
-                    $data[] = $user->city;
-                }
-                if ($mode === MODE_BRIEF && !isset($hiddenfields['country'])) {
-                    $data[] = $country;
-                }
-                if (!isset($hiddenfields['lastaccess'])) {
-                    $data[] = $lastaccess;
+            if ($mode === MODE_BRIEF) {
+                foreach ($extrafields as $field) {
+                    $data[] = $user->{$field};
                 }
+            }
+            if ($mode === MODE_BRIEF && !isset($hiddenfields['city'])) {
+                $data[] = $user->city;
+            }
+            if ($mode === MODE_BRIEF && !isset($hiddenfields['country'])) {
+                $data[] = $country;
+            }
+            if (!isset($hiddenfields['lastaccess'])) {
+                $data[] = $lastaccess;
+            }
 
-                if (isset($userlist_extra) && isset($userlist_extra[$user->id])) {
-                    $ras = $userlist_extra[$user->id]['ra'];
-                    $rastring = '';
-                    foreach ($ras AS $key=>$ra) {
-                        $rolename = $allrolenames[$ra['roleid']] ;
-                        if ($ra['ctxlevel'] == CONTEXT_COURSECAT) {
-                            $rastring .= $rolename. ' @ ' . '<a href="'.$CFG->wwwroot.'/course/index.php?categoryid='.$ra['ctxinstanceid'].'">'.s($ra['ccname']).'</a>';
-                        } elseif ($ra['ctxlevel'] == CONTEXT_SYSTEM) {
-                            $rastring .= $rolename. ' - ' . get_string('globalrole','role');
-                        } else {
-                            $rastring .= $rolename;
-                        }
-                    }
-                    $data[] = $rastring;
-                    if ($groupmode != 0) {
-                        // htmlescape with s() and implode the array
-                        $data[] = implode(', ', array_map('s',$userlist_extra[$user->id]['group']));
-                        $data[] = implode(', ', array_map('s', $userlist_extra[$user->id]['gping']));
+            if (isset($userlistextra) && isset($userlistextra[$user->id])) {
+                $ras = $userlistextra[$user->id]['ra'];
+                $rastring = '';
+                foreach ($ras as $key => $ra) {
+                    $rolename = $allrolenames[$ra['roleid']];
+                    if ($ra['ctxlevel'] == CONTEXT_COURSECAT) {
+                        $rastring .= $rolename. ' @ ' . '<a href="'.$CFG->wwwroot.'/course/index.php?categoryid='.$ra['ctxinstanceid'].'">'.s($ra['ccname']).'</a>';
+                    } else if ($ra['ctxlevel'] == CONTEXT_SYSTEM) {
+                        $rastring .= $rolename. ' - ' . get_string('globalrole', 'role');
+                    } else {
+                        $rastring .= $rolename;
                     }
                 }
-
-                $table->add_data($data);
+                $data[] = $rastring;
+                if ($groupmode != 0) {
+                    // Use htmlescape with s() and implode the array.
+                    $data[] = implode(', ', array_map('s', $userlistextra[$user->id]['group']));
+                    $data[] = implode(', ', array_map('s', $userlistextra[$user->id]['gping']));
+                }
             }
-        }
-
-        $table->print_html();
-
-    }
 
-    if ($bulkoperations) {
-        echo '<br /><div class="buttons">';
-        echo '<input type="button" id="checkall" value="'.get_string('selectall').'" /> ';
-        echo '<input type="button" id="checknone" value="'.get_string('deselectall').'" /> ';
-        $displaylist = array();
-        $displaylist['messageselect.php'] = get_string('messageselectadd');
-        if (!empty($CFG->enablenotes) && has_capability('moodle/notes:manage', $context) && $context->id != $frontpagectx->id) {
-            $displaylist['addnote.php'] = get_string('addnewnote', 'notes');
-            $displaylist['groupaddnote.php'] = get_string('groupaddnewnote', 'notes');
+            $table->add_data($data);
         }
+    }
 
-        echo $OUTPUT->help_icon('withselectedusers');
-        echo html_writer::tag('label', get_string("withselectedusers"), array('for'=>'formactionid'));
-        echo html_writer::select($displaylist, 'formaction', '', array(''=>'choosedots'), array('id'=>'formactionid'));
-
-        echo '<input type="hidden" name="id" value="'.$course->id.'" />';
-        echo '<noscript style="display:inline">';
-        echo '<div><input type="submit" value="'.get_string('ok').'" /></div>';
-        echo '</noscript>';
-        echo '</div></div>';
-        echo '</form>';
+    $table->print_html();
 
-        $module = array('name'=>'core_user', 'fullpath'=>'/user/module.js');
-        $PAGE->requires->js_init_call('M.core_user.init_participation', null, false, $module);
-    }
+}
 
-    // Show a search box if all participants don't fit on a single screen
-    if ($totalcount > $perpage) {
-        echo '<form action="index.php" class="searchform"><div><input type="hidden" name="id" value="'.$course->id.'" />';
-        echo '<label for="search">' . get_string('search', 'search') . ' </label>';
-        echo '<input type="text" id="search" name="search" value="'.s($search).'" />&nbsp;<input type="submit" value="'.get_string('search').'" /></div></form>'."\n";
-    }
+if ($bulkoperations) {
+    echo '<br /><div class="buttons">';
+    echo '<input type="button" id="checkall" value="'.get_string('selectall').'" /> ';
+    echo '<input type="button" id="checknone" value="'.get_string('deselectall').'" /> ';
+    $displaylist = array();
+    $displaylist['messageselect.php'] = get_string('messageselectadd');
+    if (!empty($CFG->enablenotes) && has_capability('moodle/notes:manage', $context) && $context->id != $frontpagectx->id) {
+        $displaylist['addnote.php'] = get_string('addnewnote', 'notes');
+        $displaylist['groupaddnote.php'] = get_string('groupaddnewnote', 'notes');
+    }
+
+    echo $OUTPUT->help_icon('withselectedusers');
+    echo html_writer::tag('label', get_string("withselectedusers"), array('for' => 'formactionid'));
+    echo html_writer::select($displaylist, 'formaction', '', array('' => 'choosedots'), array('id' => 'formactionid'));
+
+    echo '<input type="hidden" name="id" value="'.$course->id.'" />';
+    echo '<noscript style="display:inline">';
+    echo '<div><input type="submit" value="'.get_string('ok').'" /></div>';
+    echo '</noscript>';
+    echo '</div></div>';
+    echo '</form>';
+
+    $module = array('name' => 'core_user', 'fullpath' => '/user/module.js');
+    $PAGE->requires->js_init_call('M.core_user.init_participation', null, false, $module);
+}
 
-    $perpageurl = clone($baseurl);
-    $perpageurl->remove_params('perpage');
-    if ($perpage == SHOW_ALL_PAGE_SIZE) {
-        $perpageurl->param('perpage', DEFAULT_PAGE_SIZE);
-        echo $OUTPUT->container(html_writer::link($perpageurl, get_string('showperpage', '', DEFAULT_PAGE_SIZE)), array(), 'showall');
+// Show a search box if all participants don't fit on a single screen.
+if ($totalcount > $perpage) {
+    echo '<form action="index.php" class="searchform"><div><input type="hidden" name="id" value="'.$course->id.'" />';
+    echo '<label for="search">' . get_string('search', 'search') . ' </label>';
+    echo '<input type="text" id="search" name="search" value="'.s($search).'" />&nbsp;<input type="submit" value="'.get_string('search').'" /></div></form>'."\n";
+}
 
-    } else if ($matchcount > 0 && $perpage < $matchcount) {
-        $perpageurl->param('perpage', SHOW_ALL_PAGE_SIZE);
-        echo $OUTPUT->container(html_writer::link($perpageurl, get_string('showall', '', $matchcount)), array(), 'showall');
-    }
+$perpageurl = clone($baseurl);
+$perpageurl->remove_params('perpage');
+if ($perpage == SHOW_ALL_PAGE_SIZE) {
+    $perpageurl->param('perpage', DEFAULT_PAGE_SIZE);
+    echo $OUTPUT->container(html_writer::link($perpageurl, get_string('showperpage', '', DEFAULT_PAGE_SIZE)), array(), 'showall');
 
-    echo '</div>';  // userlist
+} else if ($matchcount > 0 && $perpage < $matchcount) {
+    $perpageurl->param('perpage', SHOW_ALL_PAGE_SIZE);
+    echo $OUTPUT->container(html_writer::link($perpageurl, get_string('showall', '', $matchcount)), array(), 'showall');
+}
 
-    echo $OUTPUT->footer();
+echo '</div>';  // Userlist.
 
-    if ($userlist) {
-        $userlist->close();
-    }
+echo $OUTPUT->footer();
 
+if ($userlist) {
+    $userlist->close();
+}
 
+/**
+ * Returns SQL that can be used to limit a query to a period where the user last accessed a course..
+ *
+ * @param string $accesssince
+ * @return string
+ */
 function get_course_lastaccess_sql($accesssince='') {
     if (empty($accesssince)) {
         return '';
     }
-    if ($accesssince == -1) { // never
+    if ($accesssince == -1) { // Never.
         return 'ul.timeaccess = 0';
     } else {
         return 'ul.timeaccess != 0 AND ul.timeaccess < '.$accesssince;
     }
 }
 
+/**
+ * Returns SQL that can be used to limit a query to a period where the user last accessed the system.
+ *
+ * @param string $accesssince
+ * @return string
+ */
 function get_user_lastaccess_sql($accesssince='') {
     if (empty($accesssince)) {
         return '';
     }
-    if ($accesssince == -1) { // never
+    if ($accesssince == -1) { // Never.
         return 'u.lastaccess = 0';
     } else {
         return 'u.lastaccess != 0 AND u.lastaccess < '.$accesssince;
index 62d2145..ecada04 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
 /**
  * External user API
  *
- * @package    moodlecore
- * @subpackage user
- * @copyright  2009 Moodle Pty Ltd (http://moodle.com)
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @package   core_user
+ * @copyright 2009 Moodle Pty Ltd (http://moodle.com)
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
 
 /**
  * Creates a user
  *
+ * @throws moodle_exception
  * @param stdClass $user user to create
  * @param bool $updatepassword if true, authentication plugin will update password.
  * @return int id of the newly created user
@@ -103,18 +102,19 @@ function user_create_user($user, $updatepassword = true) {
 /**
  * Update a user with a user object (will compare against the ID)
  *
+ * @throws moodle_exception
  * @param stdClass $user the user to update
  * @param bool $updatepassword if true, authentication plugin will update password.
  */
 function user_update_user($user, $updatepassword = true) {
     global $DB;
 
-    // set the timecreate field to the current time
+    // Set the timecreate field to the current time.
     if (!is_object($user)) {
         $user = (object) $user;
     }
 
-    //check username
+    // Check username.
     if (isset($user->username)) {
         if ($user->username !== core_text::strtolower($user->username)) {
             throw new moodle_exception('usernamelowercase');
@@ -128,7 +128,7 @@ function user_update_user($user, $updatepassword = true) {
     // Unset password here, for updating later, if password update is required.
     if ($updatepassword && isset($user->password)) {
 
-        //check password toward the password policy
+        // Check password toward the password policy.
         if (!check_password_policy($user->password, $errmsg)) {
             throw new moodle_exception($errmsg);
         }
@@ -156,7 +156,7 @@ function user_update_user($user, $updatepassword = true) {
         // Get full user record.
         $updateduser = $DB->get_record('user', array('id' => $user->id));
 
-        // if password was set, then update its hash
+        // If password was set, then update its hash.
         if (isset($passwd)) {
             $authplugin = get_auth_plugin($updateduser->auth);
             if ($authplugin->can_change_password()) {
@@ -189,8 +189,9 @@ function user_delete_user($user) {
 
 /**
  * Get users by id
- * @param array $userids id of users to retrieve
  *
+ * @param array $userids id of users to retrieve
+ * @return array
  */
 function user_get_users_by_id($userids) {
     global $DB;
@@ -216,22 +217,21 @@ function user_get_default_fields() {
 
 /**
  *
- * Give user record from mdl_user, build an array conntains
- * all user details
+ * Give user record from mdl_user, build an array contains all user details.
  *
  * Warning: description file urls are 'webservice/pluginfile.php' is use.
  *          it can be changed with $CFG->moodlewstextformatlinkstoimagesfile
  *
+ * @throws moodle_exception
  * @param stdClass $user user record from mdl_user
- * @param stdClass $context context object
  * @param stdClass $course moodle course
  * @param array $userfields required fields
  * @return array|null
  */
 function user_get_user_details($user, $course = null, array $userfields = array()) {
     global $USER, $DB, $CFG;
-    require_once($CFG->dirroot . "/user/profile/lib.php"); //custom field library
-    require_once($CFG->dirroot . "/lib/filelib.php");      // file handling on description and friends
+    require_once($CFG->dirroot . "/user/profile/lib.php"); // Custom field library.
+    require_once($CFG->dirroot . "/lib/filelib.php");      // File handling on description and friends.
 
     $defaultfields = user_get_default_fields();
 
@@ -245,8 +245,7 @@ function user_get_user_details($user, $course = null, array $userfields = array(
         }
     }
 
-
-    // Make sure id and fullname are included
+    // Make sure id and fullname are included.
     if (!in_array('id', $userfields)) {
         $userfields[] = 'id';
     }
@@ -281,7 +280,7 @@ function user_get_user_details($user, $course = null, array $userfields = array(
     } else {
         $canviewuseremail = false;
     }
-    $cannotviewdescription   = !empty($CFG->profilesforenrolledusersonly) && !$currentuser && !$DB->record_exists('role_assignments', array('userid'=>$user->id));
+    $cannotviewdescription   = !empty($CFG->profilesforenrolledusersonly) && !$currentuser && !$DB->record_exists('role_assignments', array('userid' => $user->id));
     if (!empty($course)) {
         $canaccessallgroups = has_capability('moodle/site:accessallgroups', $context);
     } else {
@@ -289,7 +288,7 @@ function user_get_user_details($user, $course = null, array $userfields = array(
     }
 
     if (!$currentuser && !$canviewdetailscap && !has_coursecontact_role($user->id)) {
-        // skip this user details
+        // Skip this user details.
         return null;
     }
 
@@ -327,28 +326,27 @@ function user_get_user_details($user, $course = null, array $userfields = array(
             }
         }
         $fields->close();
-        // unset customfields if it's empty
+        // Unset customfields if it's empty.
         if (empty($userdetails['customfields'])) {
             unset($userdetails['customfields']);
         }
     }
 
-    // profile image
+    // Profile image.
     if (in_array('profileimageurl', $userfields)) {
-        $profileimageurl = moodle_url::make_pluginfile_url($usercontext->id, 'user', 'icon', NULL, '/', 'f1');
+        $profileimageurl = moodle_url::make_pluginfile_url($usercontext->id, 'user', 'icon', null, '/', 'f1');
         $userdetails['profileimageurl'] = $profileimageurl->out(false);
     }
     if (in_array('profileimageurlsmall', $userfields)) {
-        $profileimageurlsmall = moodle_url::make_pluginfile_url($usercontext->id, 'user', 'icon', NULL, '/', 'f2');
+        $profileimageurlsmall = moodle_url::make_pluginfile_url($usercontext->id, 'user', 'icon', null, '/', 'f2');
         $userdetails['profileimageurlsmall'] = $profileimageurlsmall->out(false);
     }
 
-    //hidden user field
+    // Hidden user field.
     if ($canviewhiddenuserfields) {
         $hiddenfields = array();
-        // address, phone1 and phone2 not appears in hidden fields list
-        // but require viewhiddenfields capability
-        // according to user/profile.php
+        // Address, phone1 and phone2 not appears in hidden fields list but require viewhiddenfields capability
+        // according to user/profile.php.
         if ($user->address && in_array('address', $userfields)) {
             $userdetails['address'] = $user->address;
         }
@@ -424,9 +422,9 @@ function user_get_user_details($user, $course = null, array $userfields = array(
         }
     }
 
-    if (in_array('email', $userfields) && ($isadmin // The admin is allowed the users email
-      or $currentuser // Of course the current user is as well
-      or $canviewuseremail  // this is a capability in course context, it will be false in usercontext
+    if (in_array('email', $userfields) && ($isadmin // The admin is allowed the users email.
+      or $currentuser // Of course the current user is as well.
+      or $canviewuseremail  // This is a capability in course context, it will be false in usercontext.
       or in_array('email', $showuseridentityfields)
       or $user->maildisplay == 1
       or ($user->maildisplay == 2 and enrol_sharing_course($user, $USER)))) {
@@ -440,7 +438,7 @@ function user_get_user_details($user, $course = null, array $userfields = array(
         }
     }
 
-    //Departement/Institution/Idnumber are not displayed on any profile, however you can get them from editing profile.
+    // Departement/Institution/Idnumber are not displayed on any profile, however you can get them from editing profile.
     if ($isadmin or $currentuser or in_array('idnumber', $showuseridentityfields)) {
         if (in_array('idnumber', $userfields) && $user->idnumber) {
             $userdetails['idnumber'] = $user->idnumber;
@@ -452,13 +450,13 @@ function user_get_user_details($user, $course = null, array $userfields = array(
         }
     }
     if ($isadmin or $currentuser or in_array('department', $showuseridentityfields)) {
-        if (in_array('department', $userfields) && isset($user->department)) { //isset because it's ok to have department 0
+        if (in_array('department', $userfields) && isset($user->department)) { // Isset because it's ok to have department 0.
             $userdetails['department'] = $user->department;
         }
     }
 
     if (in_array('roles', $userfields) && !empty($course)) {
-        // not a big secret
+        // Not a big secret.
         $roles = get_user_roles($context, $user->id, false);
         $userdetails['roles'] = array();
         foreach ($roles as $role) {
@@ -471,7 +469,7 @@ function user_get_user_details($user, $course = null, array $userfields = array(
         }
     }
 
-    // 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 (in_array('groups', $userfields) && !empty($course) && $canaccessallgroups) {
         $usergroups = groups_get_all_groups($course->id, $user->id, $course->defaultgroupingid,
                 'g.id, g.name,g.description,g.descriptionformat');
@@ -480,11 +478,11 @@ function user_get_user_details($user, $course = null, array $userfields = array(
             list($group->description, $group->descriptionformat) =
                 external_format_text($group->description, $group->descriptionformat,
                         $context->id, 'group', 'description', $group->id);
-            $userdetails['groups'][] = array('id'=>$group->id, 'name'=>$group->name,
-                'description'=>$group->description, 'descriptionformat'=>$group->descriptionformat);
+            $userdetails['groups'][] = array('id' => $group->id, 'name' => $group->name,
+                'description' => $group->description, 'descriptionformat' => $group->descriptionformat);
         }
     }
-    //list of courses where the user is enrolled
+    // List of courses where the user is enrolled.
     if (in_array('enrolledcourses', $userfields) && !isset($hiddenfields['mycourses'])) {
         $enrolledcourses = array();
         if ($mycourses = enrol_get_users_courses($user->id, true)) {
@@ -502,14 +500,14 @@ function user_get_user_details($user, $course = null, array $userfields = array(
         }
     }
 
-    //user preferences
+    // User preferences.
     if (in_array('preferences', $userfields) && $currentuser) {
         $preferences = array();
         $userpreferences = get_user_preferences();
-         foreach($userpreferences as $prefname => $prefvalue) {
+        foreach ($userpreferences as $prefname => $prefvalue) {
             $preferences[] = array('name' => $prefname, 'value' => $prefvalue);
-         }
-         $userdetails['preferences'] = $preferences;
+        }
+        $userdetails['preferences'] = $preferences;
     }
 
     return $userdetails;
@@ -519,14 +517,14 @@ function user_get_user_details($user, $course = null, array $userfields = array(
  * Tries to obtain user details, either recurring directly to the user's system profile
  * or through one of the user's course enrollments (course profile).
  *
- * @param object $user The user.
+ * @param stdClass $user The user.
  * @return array if unsuccessful or the allowed user details.
  */
 function user_get_user_details_courses($user) {
     global $USER;
     $userdetails = null;
 
-    //  Get the courses that the user is enrolled in (only active).
+    // Get the courses that the user is enrolled in (only active).
     $courses = enrol_get_users_courses($user->id, true);
 
     $systemprofile = false;
@@ -552,8 +550,8 @@ function user_get_user_details_courses($user) {
 /**
  * Check if $USER have the necessary capabilities to obtain user details.
  *
- * @param object $user
- * @param object $course if null then only consider system profile otherwise also consider the course's profile.
+ * @param stdClass $user
+ * @param stdClass $course if null then only consider system profile otherwise also consider the course's profile.
  * @return bool true if $USER can view user details.
  */
 function can_view_user_details_cap($user, $course = null) {
@@ -573,7 +571,8 @@ function can_view_user_details_cap($user, $course = null) {
  * @param string $pagetype current page type
  * @param stdClass $parentcontext Block's parent context
  * @param stdClass $currentcontext Current context of block
+ * @return array
  */
 function user_page_type_list($pagetype, $parentcontext, $currentcontext) {
-    return array('user-profile'=>get_string('page-user-profile', 'pagetype'));
+    return array('user-profile' => get_string('page-user-profile', 'pagetype'));
 }
index 1342f12..22f72fc 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,7 +17,7 @@
 /**
  * Web service test client.
  *
- * @package   webservice
+ * @package   core_webservice
  * @copyright 2009 Moodle Pty Ltd (http://moodle.com)
  * @author    Jerome Mouneyrac
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
@@ -38,7 +37,7 @@ $PAGE->set_heading(get_string('securitykeys', 'webservice'));
 $PAGE->set_pagelayout('standard');
 
 $rsstokenboxhtml = $webservicetokenboxhtml = '';
-/// Manage user web service tokens
+// Manage user web service tokens.
 if ( !is_siteadmin($USER->id)
     && !empty($CFG->enablewebservices)
     && has_capability('moodle/webservice:createtoken', $usercontext )) {
@@ -48,23 +47,23 @@ if ( !is_siteadmin($USER->id)
     $tokenid = optional_param('tokenid', '', PARAM_SAFEDIR);
     $confirm = optional_param('confirm', 0, PARAM_BOOL);
 
-    $webservice = new webservice(); //load the webservice library
+    $webservice = new webservice(); // Load the webservice library.
     $wsrenderer = $PAGE->get_renderer('core', 'webservice');
 
     if ($action == 'resetwstoken') {
-            $token = $webservice->get_created_by_user_ws_token($USER->id, $tokenid);
-            /// Display confirmation page to Reset the token
-            if (!$confirm) {
-                $resetconfirmation = $wsrenderer->user_reset_token_confirmation($token);
-            } else {
-                /// Delete the token that need to be regenerated
-                $webservice->delete_user_ws_token($tokenid);
-            }
+        $token = $webservice->get_created_by_user_ws_token($USER->id, $tokenid);
+        // Display confirmation page to Reset the token.
+        if (!$confirm) {
+            $resetconfirmation = $wsrenderer->user_reset_token_confirmation($token);
+        } else {
+            // Delete the token that need to be regenerated.
+            $webservice->delete_user_ws_token($tokenid);
+        }
     }
 
-    //no point creating the table is we're just displaying a confirmation screen
+    // No point creating the table is we're just displaying a confirmation screen.
     if (empty($resetconfirmation)) {
-        $webservice->generate_user_ws_tokens($USER->id); //generate all token that need to be generated
+        $webservice->generate_user_ws_tokens($USER->id); // Generate all token that need to be generated.
         $tokens = $webservice->get_user_ws_tokens($USER->id);
         foreach ($tokens as $token) {
             if ($token->restrictedusers) {
@@ -74,12 +73,12 @@ if ( !is_siteadmin($USER->id)
                 }
             }
         }
-        $webservicetokenboxhtml =  $wsrenderer->user_webservice_tokens_box($tokens, $USER->id,
-                $CFG->enablewsdocumentation); //display the box for web service token
+        $webservicetokenboxhtml = $wsrenderer->user_webservice_tokens_box($tokens, $USER->id,
+              &nbs