Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3583 → Rev 3584

/trunk/jrest/services/Modification.php
14,84 → 14,53
* Migre les observations et les images d'un utilisateur, lorsqu'il change d'adresse email
* (ou les migre d'un utilisateur à l'autre)
*
* Utilisation : http://domain/serice:cel/Modification/?mail=ancien_email@x.fr&nouveau_mail=nouvel_email@x.fr
* Utilisation : http://domain/service:cel/Modification/?mail=oldemail@example.fr&nouveau_mail=newemail@example.fr
*/
class Modification extends Cel {
public $table_image = "cel_images";
public $table_obs = "cel_obs";
 
public $table_image = "photo";
public $table_obs = "occurrence";
 
public function getRessource() {
return $this->getElement(array());
}
 
public function getElement($uid) {
 
$mail = (isset($_GET['mail'])) ? $_GET['mail'] : false;
$ancien_mail = (isset($_GET['mail'])) ? $_GET['mail'] : false;
$nouveau_mail = (isset($_GET['nouveau_mail'])) ? $_GET['nouveau_mail'] : false;
if(!$mail) {
 
if(!$ancien_mail) {
$this->envoyer("false");
return;
}
$ancien_mail = $mail;
$nouveau_mail = $nouveau_mail;
 
// si le mail n'a pas changé, on ne change rien
if($ancien_mail == $nouveau_mail) {
$this->envoyer("OK");
return;
}
 
// Sinon on doit changer des trucs dans les obs et les images
// Une clé existe sur ordre, id_utilisateur et courriel utilisateur
// Décalage de l'ordre d'éventuelles observations déjà existantes
$requete_decalage_ordre_obs_1 = "UPDATE ".$this->table_obs." SET ordre = ordre + 9999999 ".
"WHERE courriel_utilisateur = ".Cel::db()->proteger($nouveau_mail);
$requete_decalage_ordre_obs_2 = "UPDATE ".$this->table_obs." SET ordre = ordre + 19999999 ".
"WHERE courriel_utilisateur = ".Cel::db()->proteger($ancien_mail);
Cel::db()->executer($requete_decalage_ordre_obs_1);
Cel::db()->executer($requete_decalage_ordre_obs_2);
$requete_maj_mail_obs = "UPDATE ".$this->table_obs." SET courriel_utilisateur = ".Cel::db()->proteger($nouveau_mail)." ".
"WHERE courriel_utilisateur = ".Cel::db()->proteger($ancien_mail);
 
$requete_maj_mail_obs = "UPDATE ".$this->table_obs." SET user_email = ".Cel::db()->proteger($nouveau_mail)." ".
"WHERE user_email = ".Cel::db()->proteger($ancien_mail);
 
Cel::db()->executer($requete_maj_mail_obs);
$requete_maj_ordre_obs = "SELECT @ordval := 0; ".
"UPDATE ".$this->table_obs." ".
"SET ordre = (SELECT @ordval := @ordval + 1) ".
"WHERE courriel_utilisateur = ".Cel::db()->proteger($nouveau_mail)." ".
"ORDER BY date_creation ";
Cel::db()->executerRequete($requete_maj_ordre_obs);
// Décalage de l'ordre d'éventuelles images déjà existantes
$requete_decalage_ordre_img_1 = "UPDATE ".$this->table_image." SET ordre = ordre + 9999999 ".
"WHERE courriel_utilisateur = ".Cel::db()->proteger($nouveau_mail);
$requete_decalage_ordre_img_2 = "UPDATE ".$this->table_image." SET ordre = ordre + 19999999 ".
"WHERE courriel_utilisateur = ".Cel::db()->proteger($ancien_mail);
Cel::db()->executer($requete_decalage_ordre_img_1);
Cel::db()->executer($requete_decalage_ordre_img_2);
$requete_maj_mail_img = "UPDATE ".$this->table_image." SET courriel_utilisateur = ".Cel::db()->proteger($nouveau_mail)." ".
"WHERE courriel_utilisateur = ".Cel::db()->proteger($ancien_mail);
 
$requete_maj_mail_img = "UPDATE ".$this->table_image." SET user_email = ".Cel::db()->proteger($nouveau_mail)." ".
"WHERE user_email = ".Cel::db()->proteger($ancien_mail);
 
Cel::db()->executer($requete_maj_mail_img);
 
$requete_maj_ordre_img = "SELECT @ordval := 0; ".
"UPDATE ".$this->table_image." ".
"SET ordre = (SELECT @ordval := @ordval + 1) ".
"WHERE courriel_utilisateur = ".Cel::db()->proteger($nouveau_mail)." ".
"ORDER BY date_creation ";
"UPDATE ".$this->table_image." ".
"SET ordre = (SELECT @ordval := @ordval + 1) ".
"WHERE user_email = ".Cel::db()->proteger($nouveau_mail)." ".
"ORDER BY date_creation ";
 
Cel::db()->executerRequete($requete_maj_ordre_img);
 
$this->envoyer("OK");
return;
}