- $query = "UPDATE auth_user_md5 SET
- naissance = '$naiss',
- deces = '$deces',
- password = '$pass_encrypted',
- perms = '$perms',
- prenom = '".addslashes($prenm)."',
- nom = '".addslashes($nom)."',
- flags = '$flags',
- promo = $promo,
- comment = '".addslashes($comm)."'
- WHERE user_id = '{$mr['user_id']}'";
- if (XDB::execute($query)) {
- user_reindex($mr['user_id']);
-
- $mailer = new PlMailer("admin/mail_intervention.tpl");
- $mailer->assign("user", S::v('forlife'));
- $mailer->assign("query", $query);
- $mailer->send();
-
- $page->trig("updaté correctement.");
- }
- if (Env::v('nomusageN') != $mr['nom_usage']) {
- require_once "xorg.misc.inc.php";
- set_new_usage($mr['user_id'], Env::v('nomusageN'), make_username(Env::v('prenomN'), Env::v('nomusageN')));
+ // Fetches fields to watch for changes.
+ $watch_query = "SELECT naissance, deces, password, perms, nom_usage,
+ prenom, nom, flags, promo, comment
+ FROM auth_user_md5
+ WHERE user_id = {?}";
+ $old_fields = XDB::query($watch_query, $user->id())->fetchOneAssoc();
+
+ // If user was newly banned, we need to ensure her php session
+ // is killed. This hack is ugly (and largely overkill); it should
+ // however suits our needs.
+ if ($perms == 'disabled' && $old_fields['perms'] != 'disabled') {
+ kill_sessions();
+ }
+
+ // Updates the user profile with the new values.
+ $res = XDB::execute("UPDATE auth_user_md5
+ SET naissance = {?}, deces = {?}, password = {?},
+ perms = {?}, prenom = {?}, nom = {?}, nom_usage = {?},
+ flags = {?}, promo = {?}, comment = {?}
+ WHERE user_id = {?}",
+ $naiss, $deces, $pass_encrypted,
+ $perms, $prenom, $nom, $nomusage,
+ $flags, $promo, $comm, $user->id());
+ if ($res) {
+ require_once("user.func.inc.php");
+ user_reindex($user->id());
+ $new_fields = XDB::query($watch_query, $user->id())->fetchOneAssoc();
+
+ $mailer = new PlMailer("admin/useredit.mail.tpl");
+ $mailer->assign("admin", S::user()->login());
+ $mailer->assign("user", $user->login());
+ $mailer->assign('old', $old_fields);
+ $mailer->assign('new', $new_fields);
+ $mailer->send();
+
+ $globals->updateNbIns();
+ $page->trigSuccess("Update was successful.");
+ } else {
+ $page->trigError("Update failed, please double check your values.");
+ }
+
+ // Checks for changes, and updates other tables of plat/al.
+ if (Env::v('nomusageN') != $mr['nom_usage']) {
+ set_new_usage($user->id(), Env::v('nomusageN'), make_username(Env::v('prenomN'), Env::v('nomusageN')));
+ }
+ if (Env::v('decesN') != $mr['deces']) {
+ require_once 'notifs.inc.php';
+ register_watch_op($user->id(), WATCH_DEATH, $mr['deces']);
+ user_clear_all_subs($user->id(), false);
+ }
+
+ // Eventually updates the Google Apps account.
+ if ($globals->mailstorage->googleapps_domain) {
+ // If the user did choose to use synchronized passwords,
+ // and the password was changed, updates the Google Apps
+ // password as well.
+ if (Env::v('newpass_clair') != "********") {
+ require_once 'googleapps.inc.php';
+ $account = new GoogleAppsAccount($user);
+ if ($account->active() && $account->sync_password) {
+ $account->set_password($pass_encrypted);
+ }