Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1299 → Rev 1300

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