[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * User class 19 * 20 * @package core 21 * @copyright 2013 Rajesh Taneja <[email protected]> 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 25 defined('MOODLE_INTERNAL') || die(); 26 27 /** 28 * User class to access user details. 29 * 30 * @todo move api's from user/lib.php and depreciate old ones. 31 * @package core 32 * @copyright 2013 Rajesh Taneja <[email protected]> 33 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 34 */ 35 class core_user { 36 /** 37 * No reply user id. 38 */ 39 const NOREPLY_USER = -10; 40 41 /** 42 * Support user id. 43 */ 44 const SUPPORT_USER = -20; 45 46 /** @var stdClass keep record of noreply user */ 47 public static $noreplyuser = false; 48 49 /** @var stdClass keep record of support user */ 50 public static $supportuser = false; 51 52 /** 53 * Return user object from db or create noreply or support user, 54 * if userid matches corse_user::NOREPLY_USER or corse_user::SUPPORT_USER 55 * respectively. If userid is not found, then return false. 56 * 57 * @param int $userid user id 58 * @param string $fields A comma separated list of user fields to be returned, support and noreply user 59 * will not be filtered by this. 60 * @param int $strictness IGNORE_MISSING means compatible mode, false returned if user not found, debug message if more found; 61 * IGNORE_MULTIPLE means return first user, ignore multiple user records found(not recommended); 62 * MUST_EXIST means throw an exception if no user record or multiple records found. 63 * @return stdClass|bool user record if found, else false. 64 * @throws dml_exception if user record not found and respective $strictness is set. 65 */ 66 public static function get_user($userid, $fields = '*', $strictness = IGNORE_MISSING) { 67 global $DB; 68 69 // If noreply user then create fake record and return. 70 switch ($userid) { 71 case self::NOREPLY_USER: 72 return self::get_noreply_user($strictness); 73 break; 74 case self::SUPPORT_USER: 75 return self::get_support_user($strictness); 76 break; 77 default: 78 return $DB->get_record('user', array('id' => $userid), $fields, $strictness); 79 } 80 } 81 82 83 /** 84 * Return user object from db based on their username. 85 * 86 * @param string $username The username of the user searched. 87 * @param string $fields A comma separated list of user fields to be returned, support and noreply user. 88 * @param int $mnethostid The id of the remote host. 89 * @param int $strictness IGNORE_MISSING means compatible mode, false returned if user not found, debug message if more found; 90 * IGNORE_MULTIPLE means return first user, ignore multiple user records found(not recommended); 91 * MUST_EXIST means throw an exception if no user record or multiple records found. 92 * @return stdClass|bool user record if found, else false. 93 * @throws dml_exception if user record not found and respective $strictness is set. 94 */ 95 public static function get_user_by_username($username, $fields = '*', $mnethostid = null, $strictness = IGNORE_MISSING) { 96 global $DB, $CFG; 97 98 // Because we use the username as the search criteria, we must also restrict our search based on mnet host. 99 if (empty($mnethostid)) { 100 // If empty, we restrict to local users. 101 $mnethostid = $CFG->mnet_localhost_id; 102 } 103 104 return $DB->get_record('user', array('username' => $username, 'mnethostid' => $mnethostid), $fields, $strictness); 105 } 106 107 /** 108 * Helper function to return dummy noreply user record. 109 * 110 * @return stdClass 111 */ 112 protected static function get_dummy_user_record() { 113 global $CFG; 114 115 $dummyuser = new stdClass(); 116 $dummyuser->id = self::NOREPLY_USER; 117 $dummyuser->email = $CFG->noreplyaddress; 118 $dummyuser->firstname = get_string('noreplyname'); 119 $dummyuser->username = 'noreply'; 120 $dummyuser->lastname = ''; 121 $dummyuser->confirmed = 1; 122 $dummyuser->suspended = 0; 123 $dummyuser->deleted = 0; 124 $dummyuser->picture = 0; 125 $dummyuser->auth = 'manual'; 126 $dummyuser->firstnamephonetic = ''; 127 $dummyuser->lastnamephonetic = ''; 128 $dummyuser->middlename = ''; 129 $dummyuser->alternatename = ''; 130 $dummyuser->imagealt = ''; 131 return $dummyuser; 132 } 133 134 /** 135 * Return noreply user record, this is currently used in messaging 136 * system only for sending messages from noreply email. 137 * It will return record of $CFG->noreplyuserid if set else return dummy 138 * user object with hard-coded $user->emailstop = 1 so noreply can be sent to user. 139 * 140 * @return stdClass user record. 141 */ 142 public static function get_noreply_user() { 143 global $CFG; 144 145 if (!empty(self::$noreplyuser)) { 146 return self::$noreplyuser; 147 } 148 149 // If noreply user is set then use it, else create one. 150 if (!empty($CFG->noreplyuserid)) { 151 self::$noreplyuser = self::get_user($CFG->noreplyuserid); 152 } 153 154 if (empty(self::$noreplyuser)) { 155 self::$noreplyuser = self::get_dummy_user_record(); 156 self::$noreplyuser->maildisplay = '1'; // Show to all. 157 } 158 self::$noreplyuser->emailstop = 1; // Force msg stop for this user. 159 return self::$noreplyuser; 160 } 161 162 /** 163 * Return support user record, this is currently used in messaging 164 * system only for sending messages to support email. 165 * $CFG->supportuserid is set then returns user record 166 * $CFG->supportemail is set then return dummy record with $CFG->supportemail 167 * else return admin user record with hard-coded $user->emailstop = 0, so user 168 * gets support message. 169 * 170 * @return stdClass user record. 171 */ 172 public static function get_support_user() { 173 global $CFG; 174 175 if (!empty(self::$supportuser)) { 176 return self::$supportuser; 177 } 178 179 // If custom support user is set then use it, else if supportemail is set then use it, else use noreply. 180 if (!empty($CFG->supportuserid)) { 181 self::$supportuser = self::get_user($CFG->supportuserid, '*', MUST_EXIST); 182 } 183 184 // Try sending it to support email if support user is not set. 185 if (empty(self::$supportuser) && !empty($CFG->supportemail)) { 186 self::$supportuser = self::get_dummy_user_record(); 187 self::$supportuser->id = self::SUPPORT_USER; 188 self::$supportuser->email = $CFG->supportemail; 189 if ($CFG->supportname) { 190 self::$supportuser->firstname = $CFG->supportname; 191 } 192 self::$supportuser->username = 'support'; 193 self::$supportuser->maildisplay = '1'; // Show to all. 194 } 195 196 // Send support msg to admin user if nothing is set above. 197 if (empty(self::$supportuser)) { 198 self::$supportuser = get_admin(); 199 } 200 201 // Unset emailstop to make sure support message is sent. 202 self::$supportuser->emailstop = 0; 203 return self::$supportuser; 204 } 205 206 /** 207 * Reset self::$noreplyuser and self::$supportuser. 208 * This is only used by phpunit, and there is no other use case for this function. 209 * Please don't use it outside phpunit. 210 */ 211 public static function reset_internal_users() { 212 if (PHPUNIT_TEST) { 213 self::$noreplyuser = false; 214 self::$supportuser = false; 215 } else { 216 debugging('reset_internal_users() should not be used outside phpunit.', DEBUG_DEVELOPER); 217 } 218 } 219 220 /** 221 * Return true is user id is greater than self::NOREPLY_USER and 222 * alternatively check db. 223 * 224 * @param int $userid user id. 225 * @param bool $checkdb if true userid will be checked in db. By default it's false, and 226 * userid is compared with NOREPLY_USER for performance. 227 * @return bool true is real user else false. 228 */ 229 public static function is_real_user($userid, $checkdb = false) { 230 global $DB; 231 232 if ($userid < 0) { 233 return false; 234 } 235 if ($checkdb) { 236 return $DB->record_exists('user', array('id' => $userid)); 237 } else { 238 return true; 239 } 240 } 241 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |