Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 934 Rev 958
Line 23... Line 23...
23
	
23
	
24
	const SEPARATEUR_MOT_CLE_TEXTE = '##';
24
	const SEPARATEUR_MOT_CLE_TEXTE = '##';
Line 25... Line 25...
25
	private $mode = 'obs';
25
	private $mode = 'obs';
-
 
26
	
26
	
27
	public function LiaisonMotsCles($config, $mode) {
27
	public function LiaisonMotsCles($config, $mode) {
28
		parent::__construct($config);
Line 28... Line 29...
28
		$this->mode = $mode;
29
		$this->mode = $mode;
Line -... Line 30...
-
 
30
	}
-
 
31
	
29
	}
32
	public function ajouterLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
30
	
33
		
31
	public function ajouterLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
34
		// le mot clé ignore est spécifique mysql, mais il est utilisé ici pour des raisons
Line 32... Line 35...
32
		
35
		// de performance, à remplacer par un test sur les mots clés déjà existant si ça gène
33
		$requete_liaison_mots_cles = 'INSERT INTO cel_'.$this->mode.'_mots_cles '.
36
		$requete_liaison_mots_cles = 'INSERT IGNORE INTO cel_'.$this->mode.'_mots_cles '.
34
								   '(id_observation, id_mot_cle_utilisateur)'.
37
								   '(id_observation, id_mot_cle_utilisateur) '.
35
								   'VALUES (';
38
								   'VALUES ';
36
								   
39
								   
37
		foreach($ids_images_ou_obs as $id_image_ou_obs) {
40
		foreach($ids_images_ou_obs as $id_image_ou_obs) {
-
 
41
			foreach($mots_cles as $mot) {
-
 
42
				$requete_liaison_mots_cles .= '('.$id_image_ou_obs.','.$this->proteger($mot).'),';
Line 38... Line 43...
38
			foreach($mots_cles as $mot) {
43
			}
Line 39... Line 44...
39
				$requete_liaison_mots_cles .= '('.$id_image_ou_obs.','.$mot.')';
44
			$this->regenererIndexTexteMotCle($id_image_ou_obs, $id_utilisateur);
40
			}
45
		}
Line 52... Line 57...
52
	
57
	
Line 53... Line 58...
53
	public function supprimerLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
58
	public function supprimerLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
Line 54... Line 59...
54
		
59
		
55
		$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; 
60
		$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; 
56
		
61
		
Line 57... Line 62...
57
		$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE ';
62
		$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '.
Line 58... Line 63...
58
											   $champ.' IN ('.implode(',',$ids_images_ou_obs).') '.
63
											   $champ.' IN ('.implode(',',$ids_images_ou_obs).') '.
59
											   'AND id_mot_cle_utilisateur IN ('.implode(',',$ids_images_ou_obs).')';
64
											   'AND id_mot_cle_utilisateur IN ('.implode(',',$mots_cles).')';
60
		
65
		
61
		$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
66
		$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
62
		
67
		
-
 
68
		if ($resultat_suppression_mot_cle) {
-
 
69
			$retour = true;
63
		if ($resultat_suppression_mot_cle) {
70
		} else {
Line 64... Line 71...
64
			$retour = true;
71
			$message = "Erreur de suppression des mots clés de plusieurs ".$this->mode." : $requete";
65
		} else {
72
			$this->logger($message);
66
			$message = "Erreur de suppression des mots clés de plusieurs ".$this->mode." : $requete";
73
			
-
 
74
			$retour = false;
-
 
75
		}
67
			$this->logger($message);
76
		
Line 68... Line 77...
68
		}
77
		foreach($ids_images_ou_obs as $image_ou_obs) {
Line 69... Line 78...
69
		
78
			$this->regenererIndexTexteMotCle($image_ou_obs, $id_utilisateur);	
Line 70... Line 79...
70
		foreach($ids_images_ou_obs as $image_ou_obs) {
79
		}	
71
			$this->regenererIndexTexteMotCle($image_ou_obs, $id_utilisateur);	
80
		
72
		}	
81
		return $retour;
73
	}
82
	}
74
		
83
		
Line 75... Line -...
75
	private function regenererIndexTexteMotCle($image_ou_obs, $identifiant_utilisateur) {
-
 
76
		
84
	private function regenererIndexTexteMotCle($image_ou_obs, $identifiant_utilisateur) {
77
		$mots_cles = $this->obtenirMotsCles($image_ou_obs, $identifiant_utilisateur);
85
		
78
		
86
		$mots_cles = $this->obtenirMotsClesTexte($image_ou_obs, $identifiant_utilisateur);
79
		if (count($mots_cles) > 0) {
87
		
80
			$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($mots_cles);
88
		if (count($mots_cles) > 0) {
Line 81... Line 89...
81
			$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $image_ou_obs, $identifiant_utilisateur);
89
			$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($mots_cles);
82
		}
90
			$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $image_ou_obs, $identifiant_utilisateur);
Line 83... Line 91...
83
	}
91
		}
84
	
92
	}
-
 
93
	
-
 
94
	private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_image_ou_obs, $identifiant_utilisateur) {
-
 
95
		$requete = 	'UPDATE '.(($this->mode == 'obs') ? 'cel_obs' : 'cel_images').' '.
-
 
96
					'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '.
85
	//TODO : a refaire 
97
					'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs).
86
	private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_image_ou_obs, $identifiant_utilisateur) {
98
					' AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur);
-
 
99
		
87
		$requete = 	'UPDATE '.(($this->mode == 'obs') ? 'cel_observation' : 'cel_image').
100
		return $this->executer($requete);
Line 88... Line 101...
88
					'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '.
101
	}
Line 89... Line 102...
89
					'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs).
102
	
90
					'	AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur);
103
	private function obtenirMotsClesTexte($id_image_ou_obs, $identifiant_utilisateur) {
Line 91... Line 104...
91
		
104
		$requete = 	'SELECT mot_cle '.
Line 115... Line 128...
115
		$mot_cles_texte_chaine = rtrim($mot_cles_texte_chaine, self::SEPARATEUR_MOT_CLE_TEXTE);
128
		$mot_cles_texte_chaine = rtrim($mot_cles_texte_chaine, self::SEPARATEUR_MOT_CLE_TEXTE);
Line 116... Line 129...
116
		
129
		
117
		return $mot_cles_texte_chaine;
130
		return $mot_cles_texte_chaine;
Line 118... Line 131...
118
	}
131
	}
119
	
132
	
120
	private function nettoyerMotsCles($chaine) {
133
	public function nettoyerMotsCles($chaine) {
Line 121... Line 134...
121
		$valeur = str_replace('null', '', $chaine);
134
		$valeur = str_replace('null', '', $chaine);
122
		$valeur = trim($valeur, ';;');
135
		$valeur = trim($valeur, ';;');