Subversion Repositories eFlore/Applications.cel

Rev

Rev 1164 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1164 Rev 1300
Line 27... Line 27...
27
	public function LiaisonMotsCles($config, $mode) {
27
	public function LiaisonMotsCles($config, $mode) {
28
		parent::__construct($config);
28
		parent::__construct($config);
29
		$this->mode = $mode;
29
		$this->mode = $mode;
30
	}
30
	}
Line 31... Line -...
31
	
-
 
32
	public function obtenirMotsClesTexte() {
-
 
33
		$requete = 	'SELECT id_mot_cle_utilisateur '.
-
 
34
						'FROM cel_mots_cles_'.$this->mode.' '.
-
 
35
						'WHERE id_mot_cle_utilisateur IN '.
-
 
36
							'('.
-
 
37
								'SELECT id_mot_cle_utilisateur '.
-
 
38
								'FROM cel_'.$this->mode.'_mots_cles '.
-
 
39
								'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs).
-
 
40
							')'.
-
 
41
						' AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur);
-
 
42
	
-
 
43
		$resultats = $this->requeter($requete);
-
 
44
	
-
 
45
		return $resultats;
-
 
46
	}
-
 
47
	
31
	
Line 48... Line 32...
48
	public function ajouterLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
32
	public function ajouterLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
-
 
33
		
Line 49... Line 34...
49
		
34
		$champ_objet_lie = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; 
50
		$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; 
35
		$champ_mot_cle = ($this->mode == 'obs') ? 'id_mot_cle_obs' : 'id_mot_cle_image'; 
51
		
36
		
52
		// le mot clé ignore est spécifique mysql, mais il est utilisé ici pour des raisons
37
		// le mot clé ignore est spécifique mysql, mais il est utilisé ici pour des raisons
53
		// de performance, à remplacer par un test sur les mots clés déjà existant si ça gène
38
		// de performance, à remplacer par un test sur les mots clés déjà existant si ça gène
Line 54... Line 39...
54
		$requete_liaison_mots_cles = 'INSERT IGNORE INTO cel_'.$this->mode.'_mots_cles '.
39
		$requete_liaison_mots_cles = 'INSERT IGNORE INTO cel_'.$this->mode.'_mots_cles '.
55
								   '('.$champ.', id_mot_cle_utilisateur) '.
40
								   '('.$champ_objet_lie.', '.$champ_mot_cle.') '.
56
								   'VALUES ';
41
								   'VALUES ';
57
								   
42
								   
58
		foreach($ids_images_ou_obs as $id_image_ou_obs) {
-
 
59
			foreach($mots_cles as $mot) {
43
		foreach($ids_images_ou_obs as $id_image_ou_obs) {
Line 60... Line 44...
60
				$requete_liaison_mots_cles .= '('.$id_image_ou_obs.','.$this->proteger($mot).'),';
44
			foreach($mots_cles as $mot) {
61
			}
45
				$requete_liaison_mots_cles .= '('.$id_image_ou_obs.','.$this->proteger($mot).'),';
Line -... Line 46...
-
 
46
			}
-
 
47
		}
-
 
48
		
-
 
49
		$requete_liaison_mots_cles = rtrim($requete_liaison_mots_cles,',');
62
			$this->regenererIndexTexteMotCle($id_image_ou_obs, $id_utilisateur);
50
		$resultat_liaison_mots_cles = $this->executer($requete_liaison_mots_cles);
63
		}
51
		
64
		
52
		foreach($ids_images_ou_obs as $id_image_ou_obs) {
Line 65... Line 53...
65
		$requete_liaison_mots_cles = rtrim($requete_liaison_mots_cles,',');
53
			$this->regenererIndexTexteMotCle($id_image_ou_obs, $id_utilisateur);
Line 83... Line 71...
83
		return $retour;
71
		return $retour;
84
	}
72
	}
Line 85... Line 73...
85
	
73
	
Line 86... Line 74...
86
	public function supprimerLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
74
	public function supprimerLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
-
 
75
		
Line 87... Line 76...
87
		
76
		$champ_objet_lie = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; 
88
		$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; 
77
		$champ_mot_cle = ($this->mode == 'obs') ? 'id_mot_cle_obs' : 'id_mot_cle_image';
89
		
78
		
Line 90... Line 79...
90
		$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '.
79
		$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '.
Line 91... Line 80...
91
											   $champ.' IN ('.implode(',',$ids_images_ou_obs).') '.
80
											   $champ_objet_lie.' IN ('.implode(',',$ids_images_ou_obs).') '.
92
											   'AND id_mot_cle_utilisateur IN ('.implode(',',$mots_cles).')';
81
											   'AND '.$champ_mot_cle.' IN ('.implode(',',$mots_cles).')';
Line 105... Line 94...
105
		return $retour;
94
		return $retour;
106
	}
95
	}
Line 107... Line 96...
107
	
96
	
Line 108... Line 97...
108
	public function supprimerToutesLiaisonsPourIdImageOuObs($id_utilisateur, $ids_images_ou_obs) {
97
	public function supprimerToutesLiaisonsPourIdImageOuObs($id_utilisateur, $ids_images_ou_obs) {
-
 
98
		
Line 109... Line 99...
109
		
99
		$champ_objet_lie = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; 
110
		$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; 
100
		$champ_mot_cle = ($this->mode == 'obs') ? 'id_mot_cle_obs' : 'id_mot_cle_image';
Line 111... Line 101...
111
		
101
		
Line 112... Line 102...
112
		$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '.
102
		$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '.
113
											   $champ.' IN ('.implode(',',$ids_images_ou_obs).') ';
103
											   $champ_objet_lie.' IN ('.implode(',',$ids_images_ou_obs).') ';
Line 123... Line 113...
123
			$retour = false;
113
			$retour = false;
124
		}
114
		}
Line 125... Line 115...
125
		
115
		
126
		return $retour;
116
		return $retour;
-
 
117
	}
-
 
118
	
-
 
119
	public function supprimerToutesLiaisonsPourIdMotCle($id_utilisateur, $tableau_ids_mots_cles) {
-
 
120
				
-
 
121
		$champ_objet_lie = ($this->mode == 'obs') ? 'id_observation' : 'id_image';
-
 
122
		$champ_mot_cle = ($this->mode == 'obs') ? 'id_mot_cle_obs' : 'id_mot_cle_image';
-
 
123
			
-
 
124
		$chaine_mot_cles_ids = '('.implode(',', $tableau_ids_mots_cles).')';
-
 
125
		
-
 
126
		$requete_objets_lies_mot_cle = 'SELECT '.$champ_objet_lie.' as id FROM cel_'.$this->mode.'_mots_cles WHERE '.
-
 
127
		$champ_mot_cle.' IN '.$chaine_mot_cles_ids;
-
 
128
		
-
 
129
		$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '.
-
 
130
		$champ_mot_cle.' IN '.$chaine_mot_cles_ids;
-
 
131
		
-
 
132
		$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
-
 
133
	
-
 
134
		$resultat_requete_objets_lies_mot_cle = $this->requeter($requete_objets_lies_mot_cle);
-
 
135
		foreach($resultat_requete_objets_lies_mot_cle as $objet_lie) {
-
 
136
			$this->regenererIndexTexteMotCle($objet_lie['id'], $id_utilisateur);
-
 
137
		}
-
 
138
	
-
 
139
		if ($requete_suppression_liaison_mot_cle !== false) {
-
 
140
			$retour = true;
-
 
141
		} else {
-
 
142
			$message = "Erreur de suppression des mots clés de plusieurs ".$this->mode." : $requete";
-
 
143
			$this->logger($message);
-
 
144
				
-
 
145
			$retour = false;
-
 
146
		}
-
 
147
	
-
 
148
		return $retour;
Line 127... Line 149...
127
	}
149
	}
Line 128... Line 150...
128
		
150
		
129
	private function regenererIndexTexteMotCle($image_ou_obs, $identifiant_utilisateur) {
-
 
-
 
151
	private function regenererIndexTexteMotCle($image_ou_obs, $identifiant_utilisateur) {
130
		
152
		
131
		$mots_cles = $this->obtenirMotsClesTexte($image_ou_obs, $identifiant_utilisateur);
153
		$mots_cles = $this->obtenirMotsClesTexte($image_ou_obs, $identifiant_utilisateur);
132
		
-
 
133
		if (count($mots_cles) > 0) {
154
		$mots_cles_texte_chaine = "";
-
 
155
		if (count($mots_cles) > 0) {
134
			$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($mots_cles);
156
			$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($mots_cles);
Line 135... Line 157...
135
			$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $image_ou_obs, $identifiant_utilisateur);
157
		}
136
		}
158
		$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $image_ou_obs, $identifiant_utilisateur);
137
	}
159
	}
138
	
160
	
139
	private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_image_ou_obs, $identifiant_utilisateur) {
161
	private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_image_ou_obs, $identifiant_utilisateur) {
140
		$requete = 	'UPDATE '.(($this->mode == 'obs') ? 'cel_obs' : 'cel_images').' '.
-
 
-
 
162
		$requete = 	'UPDATE '.(($this->mode == 'obs') ? 'cel_obs' : 'cel_images').' '.
141
					'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '.
163
					'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '.
142
					'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs).
164
					'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs).
Line 143... Line 165...
143
					' AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur);
165
					' AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur);
144
		
166
		echo $requete;
145
		return $this->executer($requete);
167
		return $this->executer($requete);
146
	}
168
	}
147
	
169
	
148
	private function obtenirMotsClesTexte($id_image_ou_obs, $identifiant_utilisateur) {
170
	private function obtenirMotsClesTexte($id_image_ou_obs, $identifiant_utilisateur) {
149
		$requete = 	'SELECT mot_cle '.
171
		$requete = 	'SELECT mot_cle '.
150
					'FROM '.'cel_mots_cles_'.$this->mode.' '.
172
					'FROM '.'cel_mots_cles_'.$this->mode.' '.
151
					'WHERE id_mot_cle_utilisateur IN '.
173
					'WHERE id_mot_cle_'.(($this->mode == 'obs') ? 'obs' : 'image').' IN '.
152
						'('.
174
						'('.
153
							'SELECT id_mot_cle_utilisateur '.
-
 
154
							'FROM cel_'.$this->mode.'_mots_cles '.
175
							'SELECT id_mot_cle_'.(($this->mode == 'obs') ? 'obs' : 'image').' '.
155
							'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs).
-
 
156
						')'.
176
							'FROM cel_'.$this->mode.'_mots_cles '.
157
					' AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur);
177
							'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs).
Line 158... Line 178...
158
		
178
						')'.
159
		$resultats = $this->requeter($requete);
179
					' AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur);