Subversion Repositories eFlore/Applications.cel

Rev

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

Rev Author Line No. Line
2760 aurelien 1
<?php
2
/**
3
 * PHP Version 5
4
*
5
* @category  PHP
6
* @package   cel
7
* @author    aurelien <aurelien@tela-botanica.org>
8
* @copyright 2015 Tela-Botanica
9
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
10
* @version   SVN: <svn_id>
11
*/
12
 
3083 mathias 13
/**
14
 * Migre les observations et les images d'un utilisateur, lorsqu'il change d'adresse email
15
 * (ou les migre d'un utilisateur à l'autre)
16
 *
17
 * Utilisation : http://domain/serice:cel/Modification/?mail=ancien_email@x.fr&nouveau_mail=nouvel_email@x.fr
18
 */
2760 aurelien 19
class Modification extends Cel {
20
 
21
	public $table_image = "cel_images";
22
	public $table_obs = "cel_obs";
23
 
2770 aurelien 24
	public function getRessource() {
25
		return $this->getElement(array());
26
	}
27
 
2760 aurelien 28
	public function getElement($uid) {
3083 mathias 29
 
2760 aurelien 30
		$mail = (isset($_GET['mail'])) ? $_GET['mail'] : false;
31
		$nouveau_mail = (isset($_GET['nouveau_mail'])) ? $_GET['nouveau_mail'] : false;
32
 
3083 mathias 33
		if(!$mail) {
2760 aurelien 34
			$this->envoyer("false");
35
		}
36
 
37
		$ancien_mail = $mail;
38
		$nouveau_mail = $nouveau_mail;
39
 
40
		// si le mail n'a pas changé, on ne change rien
41
		if($ancien_mail == $nouveau_mail) {
42
			$this->envoyer("OK");
43
			return;
44
		}
45
 
2761 aurelien 46
		// Sinon on doit changer des trucs dans les obs et les images
2760 aurelien 47
 
2761 aurelien 48
		// Une clé existe sur ordre, id_utilisateur et courriel utilisateur
49
 
50
		// Décalage de l'ordre d'éventuelles observations déjà existantes
51
		$requete_decalage_ordre_obs_1 = "UPDATE ".$this->table_obs." SET ordre = ordre + 9999999 ".
52
				"WHERE courriel_utilisateur = ".Cel::db()->proteger($nouveau_mail);
53
		$requete_decalage_ordre_obs_2 = "UPDATE ".$this->table_obs." SET ordre = ordre + 19999999 ".
54
				"WHERE courriel_utilisateur = ".Cel::db()->proteger($ancien_mail);
55
 
56
		Cel::db()->executer($requete_decalage_ordre_obs_1);
57
		Cel::db()->executer($requete_decalage_ordre_obs_2);
58
 
2760 aurelien 59
		$requete_maj_mail_obs = "UPDATE ".$this->table_obs." SET courriel_utilisateur = ".Cel::db()->proteger($nouveau_mail)." ".
60
					"WHERE courriel_utilisateur = ".Cel::db()->proteger($ancien_mail);
61
 
62
		Cel::db()->executer($requete_maj_mail_obs);
63
 
64
		$requete_maj_ordre_obs = "SELECT @ordval := 0; ".
65
					"UPDATE ".$this->table_obs." ".
66
					"SET ordre = (SELECT @ordval := @ordval + 1) ".
67
        			"WHERE courriel_utilisateur = ".Cel::db()->proteger($nouveau_mail)." ".
2761 aurelien 68
        			"ORDER BY date_creation ";
2760 aurelien 69
 
2761 aurelien 70
		Cel::db()->executerRequete($requete_maj_ordre_obs);
2760 aurelien 71
 
2761 aurelien 72
		// Décalage de l'ordre d'éventuelles images déjà existantes
73
		$requete_decalage_ordre_img_1 = "UPDATE ".$this->table_image." SET ordre = ordre + 9999999 ".
74
				"WHERE courriel_utilisateur = ".Cel::db()->proteger($nouveau_mail);
75
 
76
		$requete_decalage_ordre_img_2 = "UPDATE ".$this->table_image." SET ordre = ordre + 19999999 ".
2760 aurelien 77
				"WHERE courriel_utilisateur = ".Cel::db()->proteger($ancien_mail);
78
 
2761 aurelien 79
		Cel::db()->executer($requete_decalage_ordre_img_1);
80
		Cel::db()->executer($requete_decalage_ordre_img_2);
81
 
82
		$requete_maj_mail_img = "UPDATE ".$this->table_image." SET courriel_utilisateur = ".Cel::db()->proteger($nouveau_mail)." ".
83
				"WHERE courriel_utilisateur = ".Cel::db()->proteger($ancien_mail);
84
 
2760 aurelien 85
		Cel::db()->executer($requete_maj_mail_img);
86
 
87
		$requete_maj_ordre_img = "SELECT @ordval := 0; ".
2761 aurelien 88
					"UPDATE ".$this->table_image." ".
2760 aurelien 89
					"SET ordre = (SELECT @ordval := @ordval + 1) ".
90
					"WHERE courriel_utilisateur = ".Cel::db()->proteger($nouveau_mail)." ".
2761 aurelien 91
					"ORDER BY date_creation ";
2760 aurelien 92
 
2761 aurelien 93
		Cel::db()->executerRequete($requete_maj_ordre_img);
2760 aurelien 94
 
95
		$this->envoyer("OK");
96
		return;
97
	}
98
}