From 23607a15934bc45dc0bcd93b0c0357360afe8ae6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Feb 2005 15:04:53 +0000 Subject: [PATCH] Gestion modification use en transaction --- htdocs/langs/en_US/users.lang | 3 ++- htdocs/user.class.php | 50 ++++++++++++++++++++++------------- htdocs/user/fiche.php | 46 +++++++++++++++++++++----------- 3 files changed, 64 insertions(+), 35 deletions(-) diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index 0000025c690..e82f112ba11 100755 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -37,4 +37,5 @@ LastGroupsCreated=Last created groups LastUsersCreated=Last %s users created ShowGroup=Show group ShowUser=Show user -NonAffectedUsers=Non affected users \ No newline at end of file +NonAffectedUsers=Non affected users +UserModified=User modified successfully \ No newline at end of file diff --git a/htdocs/user.class.php b/htdocs/user.class.php index 97ee73af243..797bb67f32c 100644 --- a/htdocs/user.class.php +++ b/htdocs/user.class.php @@ -58,7 +58,7 @@ class User var $societe_id; var $webcal_login; - var $errorstr; + var $error; var $userpref_limite_liste; var $all_permissions_are_loaded; /**< \private all_permissions_are_loaded */ @@ -668,6 +668,8 @@ class User function create() { + global $langs; + $sql = "SELECT login FROM ".MAIN_DB_PREFIX."user WHERE login ='$this->login';"; //$sql = "SELECT login FROM ".MAIN_DB_PREFIX."user WHERE login ='$this->email';"; if ($this->db->query($sql)) @@ -677,7 +679,7 @@ class User if ($num) { - $this->errorstr = "Ce login existe déjà"; + $this->error = $langs->trans("ErrorLoginAlreadyExists"); return 0; } else @@ -720,6 +722,8 @@ class User function create_from_contact($contact) { + global $langs; + $this->nom = $contact->nom; $this->prenom = $contact->prenom; $this->email = $contact->email; @@ -735,7 +739,7 @@ class User if ($num) { - $this->errorstr = "Ce login existe déjà"; + $this->error = $langs->trans("ErrorLoginAlreadyExists"); return 0; } else @@ -811,13 +815,14 @@ class User } /** - * \brief Mise à jour en base d'un utilisateur - * + * \brief Mise à jour en base d'un utilisateur + * \return <0 si echec, >0 si ok */ function update() { - + global $langs; + $sql = "SELECT login FROM ".MAIN_DB_PREFIX."user WHERE login ='$this->login' AND rowid <> $this->id;"; @@ -829,8 +834,8 @@ class User if ($num) { - $this->errorstr = "Ce login existe déjà"; - return 0; + $this->error = $langs->trans("ErrorLoginAlreadyExists"); + return -1; } else { @@ -867,13 +872,16 @@ class User } /** - * \brief Change le mot de passe d'un utilisateur et l'envoie par mail - * \param password nouveau mot de passe (généré par defaut si non communiqué) - * \param isencrypted 0 ou 1 si il faut crypter le mot de passe en base (0 par défaut) + * \brief Change le mot de passe d'un utilisateur et l'envoie par mail + * \param password Nouveau mot de passe (généré par defaut si non communiqué) + * \param isencrypted 0 ou 1 si il faut crypter le mot de passe en base (0 par défaut) + * \return int <0 si erreur, 0 si changement ok mais envoi mail ko, 1 si ok */ function password($password='', $isencrypted = 0) { + global $langs; + if (! $password) { $password = strtolower(substr(md5(uniqid(rand())),0,6)); @@ -898,19 +906,25 @@ class User if ($this->db->affected_rows()) { $mesg = "Votre mot de passe pour accéder à Dolibarr a été changé :\n\n"; - $mesg .= "Login : $this->login\n"; - $mesg .= "Mot de passe : $password\n\n"; - $mesg .= "Adresse : ".substr($_SERVER["SCRIPT_URI"],0,strlen($_SERVER["SCRIPT_URI"]) - 14); - if (mail($this->email, "Mot de passe Dolibarr", $mesg)) + $mesg .= $langs->trans("Login")." : $this->login\n"; + $mesg .= $langs->trans("Password")." : $password\n\n"; + if (mail($this->email, $langs->trans("NewPassword"), $mesg)) { - return 1; + return 1; } + else { + $this->error=$langs->trans("ErrorFailtedToSendPassword"); + return 0; } - + } + else { + return -2; + } } else { dolibarr_print_error($this->db); + return -1; } } @@ -921,7 +935,7 @@ class User function error() { - return $this->errorstr; + return $this->error; } /** diff --git a/htdocs/user/fiche.php b/htdocs/user/fiche.php index e33c3b7ae30..093def250f9 100644 --- a/htdocs/user/fiche.php +++ b/htdocs/user/fiche.php @@ -108,25 +108,39 @@ if ($_POST["action"] == 'add' && $user->admin) if ($_POST["action"] == 'update' && $user->admin) { - $edituser = new User($db, $_GET["id"]); - $edituser->fetch(); + $db->begin(); - $edituser->nom = $_POST["nom"]; - $edituser->note = $_POST["note"]; - $edituser->prenom = $_POST["prenom"]; - $edituser->login = $_POST["login"]; - $edituser->email = $_POST["email"]; - $edituser->admin = $_POST["admin"]; - $edituser->webcal_login = $_POST["webcal_login"]; - - if (! $edituser->update()) + $edituser = new User($db, $_GET["id"]); + $edituser->fetch(); + + $edituser->nom = $_POST["nom"]; + $edituser->note = $_POST["note"]; + $edituser->prenom = $_POST["prenom"]; + $edituser->login = $_POST["login"]; + $edituser->email = $_POST["email"]; + $edituser->admin = $_POST["admin"]; + $edituser->webcal_login = $_POST["webcal_login"]; + + $ret=$edituser->update(); + if ($ret < 0) { - print $edituser->error(); + $message='
'.$edituser->error.'
'; } - if (isset($password) && $password !='' ) + if ($ret >= 0 && isset($_POST["password"]) && $_POST["password"] !='' ) { - $edituser->password($password,$conf->password_encrypted); + $ret=$edituser->password($password,$conf->password_encrypted); + if ($ret > 0) { + $message='
'.$edituser->error.'
'; + } } + + if ($ret >= 0) { + $message.='
'.$langs->trans("UserModififed").'
'; + $db->commit(); + } else { + $db->rollback; + } + } if ($_GET["action"] == 'password' && $user->admin) @@ -136,7 +150,7 @@ if ($_GET["action"] == 'password' && $user->admin) if ($edituser->password('',$conf->password_encrypted)) { - $message = $langs->trans("PasswordChangedAndSentTo",$edituser->email); + $message = '
'.$langs->trans("PasswordChangedAndSentTo",$edituser->email).'
'; } } @@ -255,7 +269,6 @@ else if ($_GET["action"] == 'perms') { - if ($message) { print "$message
"; } /* * Ecran ajout/suppression permission @@ -415,6 +428,7 @@ else print "\n"; + if ($message) { print $message; } /* * Barre d'actions