Subversion Repositories eFlore/Applications.cel

Rev

Rev 828 | Rev 936 | Go to most recent revision | Show entire file | Ignore 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 25... Line 25...
25
	}
25
	}
Line 26... Line 26...
26
	
26
	
Line 27... Line 27...
27
	public function getElement($uid) {
27
	public function getElement($uid) {
28
	
28
	
29
	}
-
 
30
 
29
	}
-
 
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
33
		// Controle detournement utilisateur
34
		session_start();
-
 
35
		if (($_SESSION['user'] != '') && $_SESSION['user']['name'] != $uid[0]) {
-
 
36
			print "Acces interdit";
-
 
Line 37... Line 34...
37
			return;
34
		session_start();
38
		}
35
		$this->controleUtilisateur($pairs['ce_utilisateur']);
39
	
36
	
40
		if (!isset($pairs['mots_cles']) || !isset($uid[1])) {
37
		if (!isset($pairs['mots_cles']) || !isset($pairs['observations']) || !isset($pairs['ce_utilisateur'])) {
-
 
38
			return;
-
 
39
		}
-
 
40
		
-
 
41
		$observations = explode(',',$pairs['observations']);
-
 
42
		$mots_cles = explode(',',$pairs['mots_cles']);
-
 
43
		
-
 
44
		$gestionnaire_observation = new RechercheObservation($this->config);
-
 
45
		$ids_obs = $gestionnaire_observation->obtenirIdObservationsPourOrdre($pairs['ce_utilisateur'],$observations);
-
 
46
				
-
 
47
		$requete_liaison_mots_cles = 'INSERT INTO cel_obs_mots_cles '.
41
			return;
48
								   '(id_observation, id_mot_cle_utilisateur)'.
42
		}
49
								   'VALUES (';
-
 
50
								   
-
 
51
		foreach($ids_obs as $obs) {
-
 
52
			foreach($mots_cles as $mot) {
43
 
53
				$requete_liaison_mots_cles .= '('.$obs.','.$mot.')';
Line 44... Line -...
44
		if (isset($pairs['action'])) {
-
 
45
			$action = $pairs['action'];
-
 
46
		}
-
 
47
 
-
 
48
		$valeur = $pairs['mots_cles'];
-
 
49
		$valeur = $this->nettoyerMotsCles($valeur);
-
 
50
		$requete =	'UPDATE cel_inventory '.
54
			}
Line 51... Line -...
51
					"SET mots_cles = REPLACE(CONCAT(IFNULL(mots_cles, ''), '$valeur;'), 'null', '') ".
-
 
52
					"WHERE ordre IN ({$uid[1]}) AND identifiant = ".$this->proteger($uid[0]);
55
			$this->regenererIndexTexteMotCleObservation($obs, $pairs['ce_utilisateur']);
53
 
-
 
54
		$resultat = $this->executerRequeteSimple($requete);
-
 
55
		
56
		}
56
		$retour = false;
57
 
Line 57... Line -...
57
		if ($resultat) {
-
 
58
			$retour = true;
-
 
59
		} else {
-
 
60
			$this->logger('CEL_bugs', "Erreur de mise à jour des mots clés d'une obs : $requete");
-
 
61
		}
-
 
62
		
58
		$resultat_liaison_mots_cles = $this->executer($requete_liaison_mots_cles);
63
		$tableau_id_obs = split(',', $uid[1]);
59
		
Line 64... Line 60...
64
		foreach($tableau_id_obs as $ordre_obs) {
60
		if(!$resultat_liaison_mots_cles) {
65
			$this->regenererIndexTexteMotCleObservation($ordre_obs, $uid[0]);
61
			$this->logger('CEL_bugs', "Erreur d'ajout de mots clés à des obs : ".$requete_liaison_mots_cles);	
Line 66... Line 62...
66
		}
62
		}
67
 
63
		
-
 
64
		return $resultat_liaison_mots_cles;		
-
 
65
	}
68
		return $retour;
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]);
-
 
79
		$mots_cle = $this->proteger($mots_cle);
-
 
80
		
-
 
81
		$ordre_observations = $uid[1];
-
 
82
		$id_utilisateur = $uid[0];
-
 
83
		
-
 
84
		$gestionnaire_observation = new RechercheObservation($this->config);
-
 
85
		$ids_obs = $gestionnaire_observation->obtenirIdObservationsPourOrdre($id_utilisateur,$ordre_observations);
69
	}
86
		
70
 
87
		$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_obs_mots_cles WHERE ';
71
	public function deleteElement($uid){
-
 
72
		$retour = false;
-
 
73
		
-
 
74
		// Controle detournement utilisateur
88
											   'id_observation IN ('.implode(',',$ids_obs).') '.
75
		session_start();
89
											   'AND id_mot_cle_utilisateur IN ('.$mots_cle.')';
76
		if ($_SESSION['user'] != '' && $_SESSION['user']['name'] != $uid[0]) {
90
		
77
			print "Acces interdit";
-
 
78
		} else {
-
 
79
			if (!isset($uid[2]) || !isset($uid[1])) {
-
 
80
				print 'pas de mots clés';
-
 
81
			} else {
-
 
82
				$mot_cle = $this->nettoyerMotsCles($uid[2]);
91
		$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
83
				$mot_cle = $this->proteger($mot_cle);
92
		
84
		
-
 
85
				$requete =	'UPDATE cel_inventory '.
-
 
86
							"SET mots_cles = REPLACE(REPLACE(mots_cles, '$mot_cle', ''), ';;', ';') ".
93
		if ($resultat_suppression_mot_cle) {
87
							"WHERE ordre IN ({$uid[1]}) ".
-
 
88
							"	AND identifiant = '".$DB->escapeSimple($uid[0])."'";
-
 
89
				$resultat = $this->executerRequeteSimple($requete);
-
 
90
		
94
			$retour = true;
Line 91... Line 95...
91
				if ($resultat) {
95
		} else {
92
					$retour = true;
96
			$message = "Erreur de suppression des mots clés de plusieurs observations : $requete";
Line 93... Line 97...
93
				} else {
97
			$this->logger($message);
94
					$e = "Erreur de suppression des mots clés de plusieurs observations : $requete";
98
		}
Line 95... Line 99...
95
					$this->logger('CEL_bugs', $e);
99
		
96
				}
100
		foreach($ids_obs as $obs) {
97
			}
101
			$this->regenererIndexTexteMotCleObservation($obs, $id_utilisateur);	
98
		}
102
		}
99
 
103
 
100
		return $retour;
104
		return $retour;
Line -... Line 105...
-
 
105
	}
-
 
106
	
101
	}
107
	private function regenererIndexTexteMotCleObservation($id_observation, $identifiant_utilisateur) {
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);
Line 106... Line 112...
106
		if (count($mots_cles_obs) > 0) {
112
			$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($tableau_texte_mots_cles);
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
	}
110
		}
116
	
111
	}
117
	//TODO : a refaire 
112
	
118
	
Line 113... Line 119...
113
	private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $ordre_observation, $identifiant_utilisateur) {
119
	private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_observation, $identifiant_utilisateur) {
Line 114... Line 120...
114
		$requete = 	'UPDATE cel_inventory '.
120
		$requete = 	'UPDATE cel_obs '.
115
					'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '.
121
					'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '.
Line 116... Line -...
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) {
-
 
123
		$requete = 	'SELECT mots_cles '.
-
 
124
					'FROM cel_inventory '.
-
 
125
					'WHERE ordre = '.$this->proteger($ordre_observation).
-
 
126
					'	AND identifiant = '.$this->proteger($identifiant_utilisateur);
-
 
127
		
-
 
128
		$resultats = $this->executerRequete($requete);
122
					'WHERE id_observation = '.$this->proteger($id_observation).
129
				
123
					'	AND identifiant = '.$this->proteger($identifiant_utilisateur);
130
		return $resultats;
124
		
131
	}
125
		$this->executerRequeteSimple($requete);
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
				}