25,21 → 25,26 |
private $mode = 'obs'; |
|
public function LiaisonMotsCles($config, $mode) { |
parent::__construct($config); |
$this->mode = $mode; |
} |
|
public function ajouterLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) { |
|
$requete_liaison_mots_cles = 'INSERT INTO cel_'.$this->mode.'_mots_cles '. |
'(id_observation, id_mot_cle_utilisateur)'. |
'VALUES ('; |
// 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 '. |
'(id_observation, id_mot_cle_utilisateur) '. |
'VALUES '; |
|
foreach($ids_images_ou_obs as $id_image_ou_obs) { |
foreach($mots_cles as $mot) { |
$requete_liaison_mots_cles .= '('.$id_image_ou_obs.','.$mot.')'; |
$requete_liaison_mots_cles .= '('.$id_image_ou_obs.','.$this->proteger($mot).'),'; |
} |
$this->regenererIndexTexteMotCleObservation($id_image_ou_obs, $id_utilisateur); |
$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); |
|
54,9 → 59,9 |
|
$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; |
|
$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '; |
$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(',',$ids_images_ou_obs).')'; |
'AND id_mot_cle_utilisateur IN ('.implode(',',$mots_cles).')'; |
|
$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle); |
|
65,16 → 70,20 |
} else { |
$message = "Erreur de suppression des mots clés de plusieurs ".$this->mode." : $requete"; |
$this->logger($message); |
|
$retour = false; |
} |
|
foreach($ids_images_ou_obs as $image_ou_obs) { |
$this->regenererIndexTexteMotCle($image_ou_obs, $id_utilisateur); |
} |
|
return $retour; |
} |
|
private function regenererIndexTexteMotCle($image_ou_obs, $identifiant_utilisateur) { |
|
$mots_cles = $this->obtenirMotsCles($image_ou_obs, $identifiant_utilisateur); |
$mots_cles = $this->obtenirMotsClesTexte($image_ou_obs, $identifiant_utilisateur); |
|
if (count($mots_cles) > 0) { |
$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($mots_cles); |
82,23 → 91,27 |
} |
} |
|
//TODO : a refaire |
private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_image_ou_obs, $identifiant_utilisateur) { |
$requete = 'UPDATE '.(($this->mode == 'obs') ? 'cel_observation' : 'cel_image'). |
$requete = 'UPDATE '.(($this->mode == 'obs') ? 'cel_obs' : 'cel_images').' '. |
'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); |
' AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur); |
|
$this->executerRequeteSimple($requete); |
return $this->executer($requete); |
} |
|
private function obtenirMotsClesTexte($id_image_ou_obs, $identifiant_utilisateur) { |
$requete = 'SELECT mots_cles_texte '. |
'FROM '.(($this->mode == 'obs') ? 'cel_observation' : 'cel_image'). |
'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs). |
' AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur); |
$requete = 'SELECT mot_cle '. |
'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->executerRequete($requete); |
$resultats = $this->requeter($requete); |
|
return $resultats; |
} |
117,7 → 130,7 |
return $mot_cles_texte_chaine; |
} |
|
private function nettoyerMotsCles($chaine) { |
public function nettoyerMotsCles($chaine) { |
$valeur = str_replace('null', '', $chaine); |
$valeur = trim($valeur, ';;'); |
|