From: jerome Date: Wed, 28 Jan 2009 07:46:55 +0000 (+0000) Subject: web service MDL-12886 create lib.php in user folder (need create_user and update_user) X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=f26cc1a672dea15dba227a9a214b0b90b4dac215;p=moodle.git web service MDL-12886 create lib.php in user folder (need create_user and update_user) --- diff --git a/user/external.php b/user/external.php index b9ecce287a..a1b6e573a5 100644 --- a/user/external.php +++ b/user/external.php @@ -7,7 +7,7 @@ * @author Jerome Mouneyrac */ require_once(dirname(dirname(__FILE__)) . '/lib/moodleexternal.php'); -require_once(dirname(dirname(__FILE__)) . '/user/api.php'); +require_once(dirname(dirname(__FILE__)) . '/user/lib.php'); /** * WORK IN PROGRESS, DO NOT USE IT @@ -51,10 +51,7 @@ final class user_external extends moodle_external { * @return object user */ static function tmp_get_users($params) { - - $selectioncriteria = new stdClass(); - $selectioncriteria->search = $params['search']; - return user_api::tmp_get_users('firstname ASC', 999999, 0, 'id, auth, confirmed, username, idnumber, firstname, lastname, email, emailstop, lang, theme, timezone, mailformat', $selectioncriteria); + return get_users(true, $params['search'], false, null, 'firstname ASC','', '', '', '', 'id, auth, confirmed, username, idnumber, firstname, lastname, email, emailstop, lang, theme, timezone, mailformat'); } /** @@ -68,13 +65,22 @@ final class user_external extends moodle_external { * @return integer id of new user */ static function tmp_create_user($params) { - $user = array(); - $user['username'] = $params['username']; - $user['firstname'] = $params['firstname']; - $user['lastname'] = $params['lastname']; - $user['email'] = $params['email']; - $user['password'] = $params['password']; - return user_api::tmp_create_user($user); + global $USER; + if (has_capability('moodle/user:create', get_context_instance(CONTEXT_SYSTEM))) { + $user = array(); + $user['username'] = $params['username']; + $user['firstname'] = $params['firstname']; + $user['lastname'] = $params['lastname']; + $user['email'] = $params['email']; + $user['password'] = $params['password']; + /// + /// TODO: implement a core function (look at some code into editadvanced.php) + /// + return user_lib::tmp_create_user($user); + } + else { + throw new moodle_exception('couldnotcreateeuser'); + } } /** @@ -119,7 +125,10 @@ final class user_external extends moodle_external { $user->firstname = $params['firstname']; } - return user_api::tmp_update_user($user); + /// + /// TODO: implement a core function (look at some code into edit.php/editadvanced.php) + /// + return user_lib::tmp_update_user($user); } } diff --git a/user/api.php b/user/lib.php similarity index 67% rename from user/api.php rename to user/lib.php index 6e902be94a..189e7b3279 100644 --- a/user/api.php +++ b/user/lib.php @@ -2,7 +2,7 @@ /** * Created on 01/12/2008 * - * user core api + * user core functions * * @author Jerome Mouneyrac */ @@ -10,7 +10,7 @@ /** * DO NOT USE ANYTHING FROM THIS FILE - WORK IN PROGRESS */ -final class user_api { +final class user_lib { /** * Returns a subset of users (DO NOT COUNT) @@ -136,67 +136,7 @@ final class user_api { throw new moodle_exception('couldnotcreateuser'); } - /** - * Marks user deleted in internal user database and notifies the auth plugin. - * Also unenrols user from all roles and does other cleanup. - * @param object $user Userobject before delete (without system magic quotes) - * @return boolean success - */ - static function tmp_delete_user($user) { - global $CFG, $DB; - require_once($CFG->libdir.'/grouplib.php'); - require_once($CFG->libdir.'/gradelib.php'); - - $DB->begin_sql(); - - // delete all grades - backup is kept in grade_grades_history table - if ($grades = grade_grade::fetch_all(array('userid'=>$user->id))) { - foreach ($grades as $grade) { - $grade->delete('userdelete'); - } - } - - // remove from all groups - $DB->delete_records('groups_members', array('userid'=>$user->id)); - - // unenrol from all roles in all contexts - role_unassign(0, $user->id); // this might be slow but it is really needed - modules might do some extra cleanup! - - // now do a final accesslib cleanup - removes all role assingments in user context and context itself - delete_context(CONTEXT_USER, $user->id); - - require_once($CFG->dirroot.'/tag/lib.php'); - tag_set('user', $user->id, array()); - - // workaround for bulk deletes of users with the same email address - $delname = "$user->email.".time(); - while ($DB->record_exists('user', array('username'=>$delname))) { // no need to use mnethostid here - $delname++; - } - - // mark internal user record as "deleted" - $updateuser = new object(); - $updateuser->id = $user->id; - $updateuser->deleted = 1; - $updateuser->username = $delname; // Remember it just in case - $updateuser->email = ''; // Clear this field to free it up - $updateuser->idnumber = ''; // Clear this field to free it up - $updateuser->timemodified = time(); - - if ($DB->update_record('user', $updateuser)) { - $DB->commit_sql(); - // notify auth plugin - do not block the delete even when plugin fails - $authplugin = get_auth_plugin($user->auth); - $authplugin->user_delete($user); - - events_trigger('user_deleted', $user); - return true; - - } else { - $DB->rollback_sql(); - return false; - } - } + /** * Update a user record from its id