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);
|