Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 957 → Rev 958

/trunk/jrest/lib/LiaisonMotsCles.php
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, ';;');