29,30 → 29,15 |
$this->mode = $mode; |
} |
|
public function obtenirMotsClesTexte() { |
$requete = 'SELECT id_mot_cle_utilisateur '. |
'FROM cel_mots_cles_'.$this->mode.' '. |
'WHERE id_mot_cle_utilisateur IN '. |
'('. |
'SELECT id_mot_cle_utilisateur '. |
'FROM cel_'.$this->mode.'_mots_cles '. |
'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs). |
')'. |
' AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur); |
|
$resultats = $this->requeter($requete); |
|
return $resultats; |
} |
|
public function ajouterLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) { |
|
$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; |
$champ_objet_lie = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; |
$champ_mot_cle = ($this->mode == 'obs') ? 'id_mot_cle_obs' : 'id_mot_cle_image'; |
|
// le mot clé ignore est spécifique mysql, mais il est utilisé ici pour des raisons |
// de performance, à remplacer par un test sur les mots clés déjà existant si ça gène |
$requete_liaison_mots_cles = 'INSERT IGNORE INTO cel_'.$this->mode.'_mots_cles '. |
'('.$champ.', id_mot_cle_utilisateur) '. |
'('.$champ_objet_lie.', '.$champ_mot_cle.') '. |
'VALUES '; |
|
foreach($ids_images_ou_obs as $id_image_ou_obs) { |
59,12 → 44,15 |
foreach($mots_cles as $mot) { |
$requete_liaison_mots_cles .= '('.$id_image_ou_obs.','.$this->proteger($mot).'),'; |
} |
$this->regenererIndexTexteMotCle($id_image_ou_obs, $id_utilisateur); |
} |
|
$requete_liaison_mots_cles = rtrim($requete_liaison_mots_cles,','); |
$resultat_liaison_mots_cles = $this->executer($requete_liaison_mots_cles); |
|
foreach($ids_images_ou_obs as $id_image_ou_obs) { |
$this->regenererIndexTexteMotCle($id_image_ou_obs, $id_utilisateur); |
} |
|
if(!$resultat_liaison_mots_cles) { |
$this->logger('CEL_bugs', 'Erreur d\'ajout de mots clés à des '.$this->mode.' : '.$requete_liaison_mots_cles); |
} |
85,11 → 73,12 |
|
public function supprimerLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) { |
|
$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; |
$champ_objet_lie = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; |
$champ_mot_cle = ($this->mode == 'obs') ? 'id_mot_cle_obs' : 'id_mot_cle_image'; |
|
$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '. |
$champ.' IN ('.implode(',',$ids_images_ou_obs).') '. |
'AND id_mot_cle_utilisateur IN ('.implode(',',$mots_cles).')'; |
$champ_objet_lie.' IN ('.implode(',',$ids_images_ou_obs).') '. |
'AND '.$champ_mot_cle.' IN ('.implode(',',$mots_cles).')'; |
|
$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle); |
|
107,10 → 96,11 |
|
public function supprimerToutesLiaisonsPourIdImageOuObs($id_utilisateur, $ids_images_ou_obs) { |
|
$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; |
$champ_objet_lie = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; |
$champ_mot_cle = ($this->mode == 'obs') ? 'id_mot_cle_obs' : 'id_mot_cle_image'; |
|
$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '. |
$champ.' IN ('.implode(',',$ids_images_ou_obs).') '; |
$champ_objet_lie.' IN ('.implode(',',$ids_images_ou_obs).') '; |
|
$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle); |
|
125,15 → 115,47 |
|
return $retour; |
} |
|
public function supprimerToutesLiaisonsPourIdMotCle($id_utilisateur, $tableau_ids_mots_cles) { |
|
$champ_objet_lie = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; |
$champ_mot_cle = ($this->mode == 'obs') ? 'id_mot_cle_obs' : 'id_mot_cle_image'; |
|
$chaine_mot_cles_ids = '('.implode(',', $tableau_ids_mots_cles).')'; |
|
$requete_objets_lies_mot_cle = 'SELECT '.$champ_objet_lie.' as id FROM cel_'.$this->mode.'_mots_cles WHERE '. |
$champ_mot_cle.' IN '.$chaine_mot_cles_ids; |
|
$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '. |
$champ_mot_cle.' IN '.$chaine_mot_cles_ids; |
|
$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle); |
|
$resultat_requete_objets_lies_mot_cle = $this->requeter($requete_objets_lies_mot_cle); |
foreach($resultat_requete_objets_lies_mot_cle as $objet_lie) { |
$this->regenererIndexTexteMotCle($objet_lie['id'], $id_utilisateur); |
} |
|
if ($requete_suppression_liaison_mot_cle !== false) { |
$retour = true; |
} else { |
$message = "Erreur de suppression des mots clés de plusieurs ".$this->mode." : $requete"; |
$this->logger($message); |
|
$retour = false; |
} |
|
return $retour; |
} |
|
private function regenererIndexTexteMotCle($image_ou_obs, $identifiant_utilisateur) { |
|
$mots_cles = $this->obtenirMotsClesTexte($image_ou_obs, $identifiant_utilisateur); |
|
$mots_cles_texte_chaine = ""; |
if (count($mots_cles) > 0) { |
$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($mots_cles); |
$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $image_ou_obs, $identifiant_utilisateur); |
} |
$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $image_ou_obs, $identifiant_utilisateur); |
} |
|
private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_image_ou_obs, $identifiant_utilisateur) { |
141,7 → 163,7 |
'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '. |
'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs). |
' AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur); |
|
echo $requete; |
return $this->executer($requete); |
} |
|
148,16 → 170,14 |
private function obtenirMotsClesTexte($id_image_ou_obs, $identifiant_utilisateur) { |
$requete = 'SELECT mot_cle '. |
'FROM '.'cel_mots_cles_'.$this->mode.' '. |
'WHERE id_mot_cle_utilisateur IN '. |
'WHERE id_mot_cle_'.(($this->mode == 'obs') ? 'obs' : 'image').' IN '. |
'('. |
'SELECT id_mot_cle_utilisateur '. |
'SELECT id_mot_cle_'.(($this->mode == 'obs') ? 'obs' : 'image').' '. |
'FROM cel_'.$this->mode.'_mots_cles '. |
'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs). |
')'. |
' AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur); |
|
$resultats = $this->requeter($requete); |
|
return $resultats; |
} |
|