Subversion Repositories eFlore/Applications.cel

Rev

Rev 2770 | Rev 3584 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/**
 * PHP Version 5
*
* @category  PHP
* @package   cel
* @author    aurelien <aurelien@tela-botanica.org>
* @copyright 2015 Tela-Botanica
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @version   SVN: <svn_id>
*/

/**
 * 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
 */
class Modification extends Cel {
        
        public $table_image = "cel_images";
        public $table_obs = "cel_obs";
        
        public function getRessource() {
                return $this->getElement(array());
        }
        
        public function getElement($uid) {

                $mail = (isset($_GET['mail'])) ? $_GET['mail'] : false;
                $nouveau_mail = (isset($_GET['nouveau_mail'])) ? $_GET['nouveau_mail'] : false;
                
                if(!$mail) {
                        $this->envoyer("false");
                }
                
                $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);
                
                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);
                
                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 ";
                
                Cel::db()->executerRequete($requete_maj_ordre_img);
                
                $this->envoyer("OK");
                return;
        }
}