Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 713 → Rev 714

/trunk/jrest/services/CelSyndicationImage.php
28,7 → 28,8
'departement' => 'b.id_location',
'taxon' => 'b.nom_ret',
'commentaire' => 'c.ci_meta_comment',
'date' => 'c.ci_meta_date');
'date' => 'c.ci_meta_date',
'mots-cles' => 'mots-cles');
/**
* Méthode appelée avec une requête de type GET.
382,14 → 383,9
private function getServiceMultiCriteres() {
$contenu = '';
if (isset($_GET['debut'])) {
$this->start = $_GET['debut'];
}
if (isset($_GET['debut'])) $this->start = $_GET['debut'];
if (isset($_GET['limite'])) $this->limite = $_GET['limite'];
if (isset($_GET['limite'])) {
$this->limite = $_GET['limite'];
}
// Construction de la requête
$requete = 'SELECT * '.
'FROM cel_obs_images a '.
403,16 → 399,13
if ($this->estUneRechercheGenerale()) {
$chaine_requete = $_GET['recherche'];
$sous_requete = $this->creerSousRequeteRechercheGenerale($chaine_requete);
$requete .= $this->creerSousRequeteRechercheGenerale($chaine_requete);
} else {
$criteres = $this->traiterCriteresMultiples($_GET) ;
if (empty($criteres)) {
$sous_requete = '';
}
$sous_requete = $this->creerSousRequeteRechercheParCriteres($criteres);
if (!empty($criteres)) {
$requete .= $this->creerSousRequeteRechercheParCriteres($criteres);
}
}
$requete .= $sous_requete;
$requete = rtrim($requete, 'AND ');
$requete .= ' ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby :
'c.ci_meta_date_ajout DESC').' '."LIMIT $this->start,$this->limit ";
423,7 → 416,7
if ($elements != false && count($elements) > 0) {
$contenu = $this->executerService($elements);
} else {
$this->messages[] = "Aucune image disponible.$requete";
$this->messages[] = "Aucune image disponible.";
}
return $contenu;
453,6 → 446,7
if ($nom_valeur[1] == "indetermine") $nom_valeur[1] = 'null';
$requete .= ' ('.$nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%" OR b.nom_sel LIKE "%'.
$nom_valeur[1].'%") AND '; break;
case "mots-cles" : $requete .= $this->creerSousRequeteMotsCles($nom_valeur[1]); break;
default : $requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'" AND '; break;
}
}
461,6 → 455,84
return $requete;
}
private function creerSousRequeteMotsCles($mot_cle) {
if (preg_match('/.*,.*/', $mot_cle)) {
$requete = $this->creerSousRequeteMotsClesOu($mot_cle);
} else if (preg_match('/.*ET.*/', $mot_cle)) {
$requete = $this->creerSousRequeteMotsClesEt($mot_cle);
} else {
// Construction de la requête
$prerequete = "SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_images WHERE $where ".
'cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle($mot_cle));
$elements = $this->executerRequete($prerequete);//print_r($elements);
if ($elements != false && count($elements) > 0) {
foreach ($elements as $occurence) {
$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
}
}
}
$requete = rtrim($requete,' OR ').' AND ';
return $requete;
}
private function creerSousRequeteMotsClesOu($mot_cle) {
$requete = '';
$tab_mots_cles = explode(',', $mot_cle);
$where = '';
foreach ($tab_mots_cles as $mot) {
$where .= 'cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle($mot)).' OR ';
}
$where = rtrim($where,' OR ');
// Construction de la requête
$prerequete = "SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_images WHERE $where ";
$elements = $this->executerRequete($prerequete);//print_r($elements);
if ($elements != false && count($elements) > 0) {
foreach ($elements as $occurence) {
$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
}
}
return $requete;
}
private function creerSousRequeteMotsClesEt($mot_cle) {
$requete = '';
$where = '';
$champs = 'a.cmc_id_proprietaire , ';
$table = '';
$i = "a"; $j = "a";
$tab_mots_cles = explode("ET", $mot_cle);
foreach ($tab_mots_cles as $mot) {
$champs .= "$i.cmc_id_mot_cle_utilisateur as $i , ";
$table .= "cel_mots_cles_images $i , ";
$where .= "$i.cmc_id_mot_cle_general = ".$this->bdd->quote($this->encoderMotCle($mot)).' AND ';
if ($i !== "a") {
$where .= " $i.cmc_id_proprietaire = ".$j.".cmc_id_proprietaire AND ";
$j++;
}
$i++;
}
$where = rtrim($where,' AND '); $champs = rtrim($champs,' , '); $table = rtrim($table,' , ');
// Construction de la requête
$prerequete = "SELECT $champs FROM $table WHERE $where ";
$elements = $this->executerRequete($prerequete);//print_r($elements);
if ($elements != false && count($elements) > 0) {
foreach ($elements as $occurence) {
$occurence['cmc_id_mot_cle_utilisateur'] = '';
for ($j = 'a'; $j < $i; $j++) {
$occurence['cmc_id_mot_cle_utilisateur'] .= $occurence[$j].',';
}
$requete .= '(ci_meta_mots_cles = "'.$occurence['cmc_id_mot_cle_utilisateur'].'" AND ci_ce_utilisateur = '.
$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
}
}
return $requete;
}
private function creerSousRequeteRechercheGenerale($chaine_requete) {
$requete = '';
if (trim($chaine_requete) != '') {