Subversion Repositories eFlore/Applications.coel

Rev

Rev 1497 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1497 jpm 1
<?php
2
/**
3
 * Service fournissant la liste des commentaires et leurs informations.
4
 * Encodage en entrée : utf8
5
 * Encodage en sortie : utf8
6
 *
7
 * @author Cyprien CLERC <cyprien@tela-botanica.org>
8
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
9
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
10
 * @version $Id$
11
 * @copyright 2009
12
 */
13
 
14
class CoelCorrection extends Coel {
15
 
16
	public function getElement($params = array()) {
17
 
18
		// Identification de l'utilisateur
19
		$login = $this->config['coel']['correctionLogin'];
20
		$mdp = $this->config['coel']['correctionMdp'];
21
 
22
		// Récupération des paramètres d'identification
23
		$loginParam = $params[0];
24
		$mdpParam = $params[1];
25
 
26
		// Contrôle du non détournement de l'utilisateur
27
		if ($login == $loginParam  && $mdp == $mdpParam) {
28
			$numeroCorrection = $params[2];
29
			switch($numeroCorrection) {
30
				case 1 : $this->correction0001($numeroCorrection);
31
					break;
32
				default : $this->noCorrection();
33
			}
34
	   	} else {
35
	   		$this->messages[] = "[ERREUR] Il faut etre identifie pour acceder a ce service";
36
	   	}
37
	}
38
 
39
	public function noCorrection() {
40
		$this->messages[] = "[ERREUR] Aucun numero de correction n'a ete fourni ou le numero fourni est invalide.";
41
	}
42
 
43
	/*-------------------------------------------------------------------*/
44
 
45
	  //-----------//
46
	 // Correctif //
47
	//-----------//
48
	/* Le champ 'pays' de la table 'personne' contient le nom de la liste au lieu de son id, il faut remédier à ça ! */
49
	private function correction0001($numeroCorrection) {
50
		$this->messages[] = "APPLICATION DE LA CORRECTION numero ".$numeroCorrection;
51
 
52
		// recuperation des pays
53
		$requete = '
54
			SELECT cmlv_id_valeur, cmlv_nom FROM coel_meta_liste_valeur
55
			WHERE cmlv_ce_parent=1074
56
		';
1595 aurelien 57
		$pays = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
1497 jpm 58
 
59
		$requete = '
60
			SELECT cp_id_personne, cp_truk_recolte
61
			FROM coel_personne
62
		';
1595 aurelien 63
		$resultat = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
1497 jpm 64
 
65
		for($i=0; $i<count($resultat); $i++) {
66
 
67
			if ($resultat[$i]['cp_truk_recolte'] != "") {
68
 
69
				$tabValeurs = explode(";", $resultat[$i]['cp_truk_recolte']);
70
 
71
				$nouvelleValeurChamp = "";
72
 
73
				for($j=0; $j<count($tabValeurs); $j++) {
74
 
75
					$tabType = explode("##", $tabValeurs[$j]);
76
					$type = trim($tabType[0]);
77
 
78
					if ($type != "" && !is_numeric($type)) {
79
 
80
						// recherche de l'id_valeur
81
						$trouve = false;
82
						$k=0;
83
						while(!$trouve && $k<count($pays)) {
84
							if ($pays[$k]['cmlv_nom'] == $tabType[0]) {
85
								$trouve = true;
86
							}
87
							else $k++;
88
						}
89
						$id_valeur = $pays[$k]['cmlv_id_valeur'];
90
 
91
						if ($trouve) $nouvelleValeurChamp .= str_replace($type, $id_valeur, $tabValeurs[$j]).";";
92
					}
93
				}
94
 
95
				$requeteUpdate = "
96
					UPDATE coel_personne
97
					SET cp_truk_recolte = '".$nouvelleValeurChamp."'
98
					WHERE cp_id_personne = '".$resultat[$i]['cp_id_personne']."'
99
				";
100
 
101
				if ($nouvelleValeurChamp != "") {
102
					echo $requeteUpdate.";<br>";
103
					$resultatRequeteUpdate = $this->bdd->query($requeteUpdate);
104
 
105
					if($resultatRequeteUpdate) $this->messages[] = "Correction effectuee.<br>";
106
					else $this->messages[] = "Echec lors de la correction.";
107
				}
108
 
109
			}
110
 
111
		}
112
		return true;
113
 
114
	}
115
}