PageRenderTime 45ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/moodle/user/editadvanced_form.php

https://bitbucket.org/geek745/moodle-db2
PHP | 177 lines | 128 code | 31 blank | 18 comment | 32 complexity | 21a3d1d422e5b4586e6a489e4636c1f6 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, BSD-3-Clause, LGPL-2.0
  1. <?php //$Id: editadvanced_form.php,v 1.14.2.14 2009/09/27 19:13:22 skodak Exp $
  2. require_once($CFG->dirroot.'/lib/formslib.php');
  3. class user_editadvanced_form extends moodleform {
  4. // Define the form
  5. function definition() {
  6. global $USER, $CFG, $COURSE;
  7. $mform =& $this->_form;
  8. $this->set_upload_manager(new upload_manager('imagefile', false, false, null, false, 0, true, true, false));
  9. //Accessibility: "Required" is bad legend text.
  10. $strgeneral = get_string('general');
  11. $strrequired = get_string('required');
  12. /// Add some extra hidden fields
  13. $mform->addElement('hidden', 'id');
  14. $mform->setType('id', PARAM_INT);
  15. $mform->addElement('hidden', 'course', $COURSE->id);
  16. $mform->setType('course', PARAM_INT);
  17. /// Print the required moodle fields first
  18. $mform->addElement('header', 'moodle', $strgeneral);
  19. $mform->addElement('text', 'username', get_string('username'), 'size="20"');
  20. $mform->addRule('username', $strrequired, 'required', null, 'client');
  21. $mform->setType('username', PARAM_RAW);
  22. $modules = get_list_of_plugins('auth');
  23. $auth_options = array();
  24. foreach ($modules as $module) {
  25. $auth_options[$module] = auth_get_plugin_title ($module);
  26. }
  27. $mform->addElement('select', 'auth', get_string('chooseauthmethod','auth'), $auth_options);
  28. $mform->setHelpButton('auth', array('authchange', get_string('chooseauthmethod','auth')));
  29. $mform->setAdvanced('auth');
  30. $mform->addElement('passwordunmask', 'newpassword', get_string('newpassword'), 'size="20"');
  31. $mform->setHelpButton('newpassword',array('newpassword', get_string('leavetokeep')));
  32. $mform->setType('newpassword', PARAM_RAW);
  33. $mform->addElement('advcheckbox', 'preference_auth_forcepasswordchange', get_string('forcepasswordchange'));
  34. $mform->setHelpButton('preference_auth_forcepasswordchange',array('forcepasswordchange', get_string('forcepasswordchange')));
  35. /// shared fields
  36. useredit_shared_definition($mform);
  37. /// Next the customisable profile fields
  38. profile_definition($mform);
  39. $this->add_action_buttons(false, get_string('updatemyprofile'));
  40. }
  41. function definition_after_data() {
  42. global $USER, $CFG;
  43. $mform =& $this->_form;
  44. if ($userid = $mform->getElementValue('id')) {
  45. $user = get_record('user', 'id', $userid);
  46. } else {
  47. $user = false;
  48. }
  49. // if language does not exist, use site default lang
  50. if ($langsel = $mform->getElementValue('lang')) {
  51. $lang = reset($langsel);
  52. // missing _utf8 in language, add it before further processing. MDL-11829 MDL-16845
  53. if (strpos($lang, '_utf8') === false) {
  54. $lang = $lang . '_utf8';
  55. $lang_el =& $mform->getElement('lang');
  56. $lang_el->setValue($lang);
  57. }
  58. // check lang exists
  59. if (!file_exists($CFG->dataroot.'/lang/'.$lang) and
  60. !file_exists($CFG->dirroot .'/lang/'.$lang)) {
  61. $lang_el =& $mform->getElement('lang');
  62. $lang_el->setValue($CFG->lang);
  63. }
  64. }
  65. // user can not change own auth method
  66. if ($userid == $USER->id) {
  67. $mform->hardFreeze('auth');
  68. $mform->hardFreeze('preference_auth_forcepasswordchange');
  69. }
  70. // admin must choose some password and supply correct email
  71. if (!empty($USER->newadminuser)) {
  72. $mform->addRule('newpassword', get_string('required'), 'required', null, 'client');
  73. $email_el =& $mform->getElement('email');
  74. if ($email_el->getValue() == 'root@localhost') {
  75. $email_el->setValue('');
  76. }
  77. }
  78. // require password for new users
  79. if ($userid == -1) {
  80. $mform->addRule('newpassword', get_string('required'), 'required', null, 'client');
  81. }
  82. // print picture
  83. if (!empty($CFG->gdversion)) {
  84. $image_el =& $mform->getElement('currentpicture');
  85. if ($user and $user->picture) {
  86. $image_el->setValue(print_user_picture($user, SITEID, $user->picture, 64, true, false, '', true));
  87. } else {
  88. $image_el->setValue(get_string('none'));
  89. }
  90. }
  91. /// Next the customisable profile fields
  92. profile_definition_after_data($mform, $userid);
  93. }
  94. function validation($usernew, $files) {
  95. global $CFG;
  96. $usernew = (object)$usernew;
  97. $usernew->username = trim($usernew->username);
  98. $user = get_record('user', 'id', $usernew->id);
  99. $err = array();
  100. if (!empty($usernew->newpassword)) {
  101. $errmsg = '';//prevent eclipse warning
  102. if (!check_password_policy($usernew->newpassword, $errmsg)) {
  103. $err['newpassword'] = $errmsg;
  104. }
  105. }
  106. if (empty($usernew->username)) {
  107. //might be only whitespace
  108. $err['username'] = get_string('required');
  109. } else if (!$user or $user->username !== stripslashes($usernew->username)) {
  110. //check new username does not exist
  111. if (record_exists('user', 'username', $usernew->username, 'mnethostid', $CFG->mnet_localhost_id)) {
  112. $err['username'] = get_string('usernameexists');
  113. }
  114. //check allowed characters
  115. if ($usernew->username !== moodle_strtolower($usernew->username)) {
  116. echo 'grrrr';
  117. $err['username'] = get_string('usernamelowercase');
  118. } else {
  119. if (empty($CFG->extendedusernamechars)) {
  120. $string = eregi_replace("[^(-\.[:alnum:])]", '', $usernew->username);
  121. if ($usernew->username !== $string) {
  122. $err['username'] = get_string('alphanumerical');
  123. }
  124. }
  125. }
  126. }
  127. if (!$user or $user->email !== stripslashes($usernew->email)) {
  128. if (!validate_email(stripslashes($usernew->email))) {
  129. $err['email'] = get_string('invalidemail');
  130. } else if (record_exists('user', 'email', $usernew->email, 'mnethostid', $CFG->mnet_localhost_id)) {
  131. $err['email'] = get_string('emailexists');
  132. }
  133. }
  134. /// Next the customisable profile fields
  135. $err += profile_validation($usernew, $files);
  136. if (count($err) == 0){
  137. return true;
  138. } else {
  139. return $err;
  140. }
  141. }
  142. function get_um() {
  143. return $this->_upload_manager;
  144. }
  145. }
  146. ?>