Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2058 → Rev 2059

/trunk/jrest/lib/RechercheImage.php
160,9 → 160,9
case "id_mots_cles";
$liste_mc = '"'.str_replace(';','","',$valeur).'"';
$sous_requete .= '' ;
$sous_requete .= 'id_image IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison WHERE id_mot_cle IN ('.$liste_mc.'))';
$sous_requete .= ' AND ' ;
$tpl_sous_requete = GestionMotsClesChemin::obtenirTemplateRequeteMotsClesTexte('images');
$sous_requete .= 'id_image IN ('.sprintf($tpl_sous_requete, $liste_mc).')';
$sous_requete .= ' AND ' ;
break;
case "commentaire":
290,6 → 290,8
}
private function creerSousRequeteMotsCles($mot_cle) {
//TODO: une requête plus efficace serait possible en utilisant
// les vraies tables de mots clés et en faisant disparaitre ce champ maudit
$requete = '';
if (preg_match('/.*OU.*/', $mot_cle)) {
$mots_cles_tab = explode('OU',$mot_cle);
/trunk/jrest/lib/GestionMotsClesChemin.php
24,13 → 24,18
//TODO: switch suivant mode
$this->mode = $mode;
list($this->table_liaison, $this->table_mots_cles) = self::getTablesMotsClesEtLiaison($mode);
}
public static function getTablesMotsClesEtLiaison($mode) {
if($mode == 'obs') {
$this->table_liaison = 'cel_mots_cles_obs_liaison';
$this->table_mots_cles = 'cel_arbre_mots_cles_obs';
$table_liaison = 'cel_mots_cles_obs_liaison';
$table_mots_cles = 'cel_arbre_mots_cles_obs';
} else {
$this->table_liaison = 'cel_mots_cles_images_liaison';
$this->table_mots_cles = 'cel_arbre_mots_cles_images';
$table_liaison = 'cel_mots_cles_images_liaison';
$table_mots_cles = 'cel_arbre_mots_cles_images';
}
return array($table_liaison, $table_mots_cles);
}
public function obtenirArbre($id_utilisateur, $chemin = "/") {
428,16 → 433,9
return $tables;
}
public static function obtenirTemplateRequeteMotsClesTexte($mode) {
public static function obtenirTemplateRequeteMotsClesMotsClesIds($mode) {
list($table_liaison, $table_mots_cles) = self::getTablesMotsClesEtLiaison($mode);
if($mode == 'obs') {
$table_liaison = 'cel_mots_cles_obs_liaison';
$table_mots_cles = 'cel_arbre_mots_cles_obs';
} else {
$table_liaison = 'cel_mots_cles_images_liaison';
$table_mots_cles = 'cel_arbre_mots_cles_images';
}
// renvoie un template de requete pour selectionner la concatenation
// de mots clé pour un element donné (utilisable avec sprintf)
return 'SELECT GROUP_CONCAT(mot_cle) '.
447,6 → 445,15
'AND cml.id_element_lie = %s ';
}
public static function obtenirTemplateRequeteMotsClesTexte($mode) {
list($table_liaison, $table_mots_cles) = self::getTablesMotsClesEtLiaison($mode);
// renvoie un template de recherche sur les ids de mots clés utilisables avec sprintf
return "SELECT id_element_lie ".
"FROM ".$table_liaison." ".
"WHERE id_mot_cle IN (%s) ";
}
// Fonctions utilitaires
static public function comparerProfNoeuds($a, $b) {
/trunk/jrest/lib/RechercheObservation.php
242,13 → 242,8
break;
case 'id_mots_cles':
$liste_mc = '"'.str_replace(';','","',$valeur).'"';
$sous_requete .= '' ;
$sous_requete .= 'id_observation IN '.
'(SELECT id_element_lie
FROM cel_mots_cles_obs_liaison
WHERE id_mot_cle IN ('.$liste_mc.') '.
')';
$tpl_sous_requete = GestionMotsClesChemin::obtenirTemplateRequeteMotsClesTexte('obs');
$sous_requete .= 'id_observation IN ('.sprintf($tpl_sous_requete, $liste_mc).')';
$sous_requete .= ' AND ' ;
break;
case 'recherche':
332,6 → 327,8
}
 
private function creerSousRequeteMotsCles($mot_cle) {
//TODO: une requête plus efficace serait possible en utilisant
// les vraies tables de mots clés et en faisant disparaitre ce champ maudit
$requete = '';
if (preg_match('/.*OU.*/', $mot_cle)) {
$mots_cles_tab = explode('OU',$mot_cle);