74cac9407bc5ca92049707990ce84f1cc5dd2bb4
[moodle.git] / user / selector / search.php
1 <?php
3 // This file is part of Moodle - http://moodle.org/
4 //
5 // Moodle is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // Moodle is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
18 /**
19  * Code to search for users in response to an ajax call from a user selector.
20  *
21  * @copyright 1999 Martin Dougiamas  http://dougiamas.com
22  * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  * @package user
24  */
26 require_once(dirname(__FILE__) . '/../../config.php');
27 require_once($CFG->dirroot . '/user/selector/lib.php');
29 $PAGE->set_url('/user/selector/search.php');
31 // In developer debug mode, when there is a debug=1 in the URL send as plain text
32 // for easier debugging.
33 if (debugging('', DEBUG_DEVELOPER) && optional_param('debug', false, PARAM_BOOL)) {
34     header('Content-type: text/plain; charset=UTF-8');
35     $debugmode = true;
36 } else {
37     header('Content-type: application/json');
38     $debugmode = false;
39 }
41 // Check access.
42 if (!isloggedin()) {;
43     print_error('mustbeloggedin');
44 }
45 if (!confirm_sesskey()) {
46     print_error('invalidsesskey');
47 }
49 // Get the search parameter.
50 $search = required_param('search', PARAM_RAW);
52 // Get and validate the selectorid parameter.
53 $selectorhash = required_param('selectorid', PARAM_ALPHANUM);
54 if (!isset($USER->userselectors[$selectorhash])) {
55     print_error('unknownuserselector');
56 }
58 // Get the options.
59 $options = $USER->userselectors[$selectorhash];
61 if ($debugmode) {
62     echo 'Search string: ', $search, "\n";
63     echo 'Options: ';
64     print_r($options);
65     echo "\n";
66 }
68 // Create the appropriate userselector.
69 $classname = $options['class'];
70 unset($options['class']);
71 $name = $options['name'];
72 unset($options['name']);
73 if (isset($options['file'])) {
74     require_once($CFG->dirroot . '/' . $options['file']);
75     unset($options['file']);
76 }
77 $userselector = new $classname($name, $options);
79 // Do the search and output the results.
80 $users = $userselector->find_users($search);
81 foreach ($users as &$group) {
82     foreach ($group as $user) {
83         $output = new stdClass;
84         $output->id = $user->id;
85         $output->name = $userselector->output_user($user);
86         if (!empty($user->disabled)) {
87             $output->disabled = true;
88         }
89         $group[$user->id] = $output;
90     }
91 }
93 echo json_encode(array('results' => $users));