Subversion Repositories eFlore/Applications.cel

Rev

Rev 828 | Rev 936 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 828 Rev 930
Line 1... Line 1...
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Service de liaisons d'images à des observations.
4
 * Service de liaisons de mots clés à des observations.
5
 * Le service lie une ou plusieurs images à une ou plusieurs observations
5
 * Le service lie une ou plusieurs mots clés à une ou plusieurs observations
6
 * Le service renvoie les observations liées à une image
-
 
-
 
6
 * 
7
 * Encodage en entrée : utf8
7
 * Encodage en entrée : utf8
8
 * Encodage en sortie : utf8
8
 * Encodage en sortie : utf8
9
 *
9
 *
10
 * Cas d'utilisation :
10
 * Cas d'utilisation :
11
 *
11
 *
Line 26... Line 26...
26
	
26
	
Line 27... Line 27...
27
	public function getElement($uid) {
27
	public function getElement($uid) {
Line 28... Line -...
28
	
-
 
29
	}
28
	
-
 
29
	}
30
 
30
	
31
	// met à jour les associations des mots clés des observations
31
	public function createElement($pairs) {
32
	public function updateElement($uid,$pairs) {
32
		
33
		// Controle detournement utilisateur
-
 
34
		session_start();
-
 
35
		if (($_SESSION['user'] != '') && $_SESSION['user']['name'] != $uid[0]) {
-
 
Line 36... Line 33...
36
			print "Acces interdit";
33
		// Controle detournement utilisateur
37
			return;
34
		session_start();
38
		}
35
		$this->controleUtilisateur($pairs['ce_utilisateur']);
Line 39... Line 36...
39
	
36
	
40
		if (!isset($pairs['mots_cles']) || !isset($uid[1])) {
37
		if (!isset($pairs['mots_cles']) || !isset($pairs['observations']) || !isset($pairs['ce_utilisateur'])) {
41
			return;
-
 
Line 42... Line -...
42
		}
-
 
43
 
38
			return;
44
		if (isset($pairs['action'])) {
-
 
45
			$action = $pairs['action'];
-
 
46
		}
39
		}
Line -... Line 40...
-
 
40
		
47
 
41
		$observations = explode(',',$pairs['observations']);
-
 
42
		$mots_cles = explode(',',$pairs['mots_cles']);
Line 48... Line 43...
48
		$valeur = $pairs['mots_cles'];
43
		
49
		$valeur = $this->nettoyerMotsCles($valeur);
44
		$gestionnaire_observation = new RechercheObservation($this->config);
50
		$requete =	'UPDATE cel_inventory '.
-
 
51
					"SET mots_cles = REPLACE(CONCAT(IFNULL(mots_cles, ''), '$valeur;'), 'null', '') ".
-
 
52
					"WHERE ordre IN ({$uid[1]}) AND identifiant = ".$this->proteger($uid[0]);
45
		$ids_obs = $gestionnaire_observation->obtenirIdObservationsPourOrdre($pairs['ce_utilisateur'],$observations);
53
 
46
				
-
 
47
		$requete_liaison_mots_cles = 'INSERT INTO cel_obs_mots_cles '.
-
 
48
								   '(id_observation, id_mot_cle_utilisateur)'.
-
 
49
								   'VALUES (';
-
 
50
								   
Line 54... Line -...
54
		$resultat = $this->executerRequeteSimple($requete);
-
 
55
		
51
		foreach($ids_obs as $obs) {
56
		$retour = false;
52
			foreach($mots_cles as $mot) {
57
		if ($resultat) {
53
				$requete_liaison_mots_cles .= '('.$obs.','.$mot.')';
Line 58... Line 54...
58
			$retour = true;
54
			}
59
		} else {
55
			$this->regenererIndexTexteMotCleObservation($obs, $pairs['ce_utilisateur']);
Line 60... Line 56...
60
			$this->logger('CEL_bugs', "Erreur de mise à jour des mots clés d'une obs : $requete");
56
		}
61
		}
57
 
Line 62... Line 58...
62
		
58
		$resultat_liaison_mots_cles = $this->executer($requete_liaison_mots_cles);
63
		$tableau_id_obs = split(',', $uid[1]);
59
		
64
		foreach($tableau_id_obs as $ordre_obs) {
-
 
65
			$this->regenererIndexTexteMotCleObservation($ordre_obs, $uid[0]);
-
 
66
		}
-
 
67
 
-
 
68
		return $retour;
-
 
69
	}
-
 
70
 
60
		if(!$resultat_liaison_mots_cles) {
71
	public function deleteElement($uid){
-
 
Line 72... Line -...
72
		$retour = false;
-
 
73
		
-
 
74
		// Controle detournement utilisateur
-
 
75
		session_start();
61
			$this->logger('CEL_bugs', "Erreur d'ajout de mots clés à des obs : ".$requete_liaison_mots_cles);	
76
		if ($_SESSION['user'] != '' && $_SESSION['user']['name'] != $uid[0]) {
62
		}
-
 
63
		
Line -... Line 64...
-
 
64
		return $resultat_liaison_mots_cles;		
-
 
65
	}
-
 
66
 
-
 
67
	public function deleteElement($uid){
-
 
68
		$retour = false;
-
 
69
		
-
 
70
		// Controle detournement utilisateur
-
 
71
		session_start();
-
 
72
		$this->controleUtilisateur($uid[0]);
-
 
73
	
-
 
74
		if (!isset($uid[0]) || !isset($uid[1]) || !isset($uid[2])) {
-
 
75
			return;
-
 
76
		}
-
 
77
		
-
 
78
		$mots_cle = $this->nettoyerMotsCles($uid[2]);
77
			print "Acces interdit";
79
		$mots_cle = $this->proteger($mots_cle);
78
		} else {
80
		
79
			if (!isset($uid[2]) || !isset($uid[1])) {
81
		$ordre_observations = $uid[1];
80
				print 'pas de mots clés';
82
		$id_utilisateur = $uid[0];
81
			} else {
83
		
82
				$mot_cle = $this->nettoyerMotsCles($uid[2]);
-
 
83
				$mot_cle = $this->proteger($mot_cle);
84
		$gestionnaire_observation = new RechercheObservation($this->config);
-
 
85
		$ids_obs = $gestionnaire_observation->obtenirIdObservationsPourOrdre($id_utilisateur,$ordre_observations);
-
 
86
		
-
 
87
		$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_obs_mots_cles WHERE ';
84
		
88
											   'id_observation IN ('.implode(',',$ids_obs).') '.
Line 85... Line 89...
85
				$requete =	'UPDATE cel_inventory '.
89
											   'AND id_mot_cle_utilisateur IN ('.$mots_cle.')';
86
							"SET mots_cles = REPLACE(REPLACE(mots_cles, '$mot_cle', ''), ';;', ';') ".
90
		
Line 87... Line 91...
87
							"WHERE ordre IN ({$uid[1]}) ".
91
		$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
88
							"	AND identifiant = '".$DB->escapeSimple($uid[0])."'";
92
		
Line 89... Line 93...
89
				$resultat = $this->executerRequeteSimple($requete);
93
		if ($resultat_suppression_mot_cle) {
90
		
94
			$retour = true;
91
				if ($resultat) {
95
		} else {
92
					$retour = true;
96
			$message = "Erreur de suppression des mots clés de plusieurs observations : $requete";
93
				} else {
97
			$this->logger($message);
94
					$e = "Erreur de suppression des mots clés de plusieurs observations : $requete";
98
		}
Line -... Line 99...
-
 
99
		
-
 
100
		foreach($ids_obs as $obs) {
95
					$this->logger('CEL_bugs', $e);
101
			$this->regenererIndexTexteMotCleObservation($obs, $id_utilisateur);	
96
				}
102
		}
97
			}
103
 
98
		}
104
		return $retour;
99
 
105
	}
Line 100... Line 106...
100
		return $retour;
106
	
101
	}
107
	private function regenererIndexTexteMotCleObservation($id_observation, $identifiant_utilisateur) {
Line 102... Line 108...
102
	
108
		$mots_cles_obs = $this->obtenirMotsClesObs($id_observation, $identifiant_utilisateur);
103
	private function regenererIndexTexteMotCleObservation($ordre_observation, $identifiant_utilisateur) {
109
		
104
		$mots_cles_obs = $this->obtenirMotsClesObs($ordre_observation, $identifiant_utilisateur);
110
		if (count($mots_cles_obs) > 0) {
105
		
111
			$tableau_texte_mots_cles = $this->obtenirMotClesTexte($mots_cles_obs[0]['mots_cles'], $identifiant_utilisateur);
106
		if (count($mots_cles_obs) > 0) {
112
			$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($tableau_texte_mots_cles);
Line 107... Line 113...
107
			$tableau_texte_mots_cles = $this->obtenirMotClesTexte($mots_cles_obs[0]['mots_cles'], $identifiant_utilisateur);
113
			$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_observation, $identifiant_utilisateur);
Line 108... Line 114...
108
			$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($tableau_texte_mots_cles);
114
		}
109
			$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $ordre_observation, $identifiant_utilisateur);
115
	}
Line 110... Line -...
110
		}
-
 
111
	}
-
 
112
	
-
 
113
	private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $ordre_observation, $identifiant_utilisateur) {
-
 
114
		$requete = 	'UPDATE cel_inventory '.
-
 
115
					'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '.
-
 
116
					'WHERE ordre = '.$this->proteger($ordre_observation).
-
 
117
					'	AND identifiant = '.$this->proteger($identifiant_utilisateur);
-
 
118
		
-
 
119
		$this->executerRequeteSimple($requete);
-
 
120
	}
-
 
121
	
-
 
122
	private function obtenirMotsClesObs($ordre_observation, $identifiant_utilisateur) {
116
	
123
		$requete = 	'SELECT mots_cles '.
117
	//TODO : a refaire 
124
					'FROM cel_inventory '.
118
	
125
					'WHERE ordre = '.$this->proteger($ordre_observation).
119
	private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_observation, $identifiant_utilisateur) {
Line 195... Line 189...
195
					}
189
					}
196
				}
190
				}
Line 197... Line 191...
197
				
191
				
198
				$requete_values = rtrim($requete_values, ',');
192
				$requete_values = rtrim($requete_values, ',');
199
				if (trim($requete_values) != '') { 
193
				if (trim($requete_values) != '') { 
200
					$requete = 	'INSERT IGNORE INTO cel_obs_mots_cles (ce_observation, ce_mot_cle) '.
194
					$requete = 	'INSERT IGNORE INTO cel_obs_mots_cles (id_observation, id_mot_cle_utilisateur) '.
201
								'VALUES '.$requete_values.' ';
195
								'VALUES '.$requete_values.' ';
202
					echo $requete.'<br />';
196
					echo $requete.'<br />';
203
					$i++;
197
					$i++;
204
				}
198
				}