Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 709 → Rev 710

/trunk/jrest/services/CelSyndicationImage.php
26,7 → 26,9
'auteur' => 'c.ci_ce_utilisateur',
'commune' => 'b.location',
'departement' => 'b.id_location',
'taxon' => 'b.nom_ret');
'taxon' => 'b.nom_ret',
'commentaire' => 'c.ci_meta_comment',
'date' => 'c.ci_meta_date');
/**
* Méthode appelée avec une requête de type GET.
64,7 → 66,7
}
if (!isset($this->flux[$this->service]) || isset($this->format)) {
// Suppression des paramêtres inutile pour le reste des méthodes
// Suppression des deux premiers paramètres (service et format) pour le reste des méthodes
array_shift($this->parametres);
array_shift($this->parametres);
91,16 → 93,24
"Ce flux fournit l'url des nouvelles images du CEL liées à une observation.");
$this->setFlux('complet', 'Nouvelles images liées à une observation dans le CEL (détails)',
"Ce flux fournit les informations sur les nouvelles images du CEL liées à une observation.");
$this->setFlux('par-mots-cles', 'Flux de syndication des nouvelles images liées à une observation publique du CEL filtrées par mots clés',
"Ce flux fournit des informations sur les nouvelles images du CEL liées à une observation du CEL filtrées par mots-clés. Il nécessite d'être
paramétré en indiquant en dernier position de l'url le mot-clé à rechercher.");
$this->setFlux('par-commune','Flux de syndication des nouvelles images liées à une observation publique du CEL filtrées par commune',
"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par commune. Il nécessite d'être
$this->setFlux('par-mots-cles', 'Flux de syndication des nouvelles images liées à une observation publique du CEL ".
"filtrées par mots clés',
"Ce flux fournit des informations sur les nouvelles images du CEL liées à une observation du CEL filtrées par ".
"mots-clés. Il nécessite d'être paramétré en indiquant en dernier position de l'url le mot-clé à rechercher.");
$this->setFlux('par-commune','Flux de syndication des nouvelles images liées à une observation publique du CEL ".
"filtrées par commune',
"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par commune. ".
"Il nécessite d'être paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
$this->setFlux('multicriteres','Flux de syndication des nouvelles images liées à une observation publique du CEL '.
'filtrées par un ou plusieurs critères',
"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par ".
"auteur (mail), commune (nom), departement (code postal), taxon (nom scientifique), commentaire, mots-clés ".
"et/ou date. Il nécessite d'être
paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
}
private function setFlux($nom, $titre, $description) {
$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CoelSyndicationImage/';
$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CelSyndicationImage/';
$formats = array('atom', 'rss2', 'rss1');
$flux = array();
foreach ($formats as $format) {
175,7 → 185,7
}
private function etreFluxAdmin() {
return ($_GET['admin'] == '1') ? true : false;
return (isset($_GET['admin']) && $_GET['admin'] == '1') ? true : false;
}
private function creerUrlService() {
190,7 → 200,7
return $url_service;
}
protected function executerRequete($requete) {
protected function executerRequete($requete, $retour = 'All', $mode = PDO::FETCH_ASSOC) {
try {
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
if ($infos === false) {
220,7 → 230,8
$donnees = $this->getFlux($this->service);
$donnees['guid'] = $this->getUrlServiceBase();
$donnees['lien_service'] = $this->creerUrlService();
$donnees['lien_cel'] = sprintf($this->config['settings']['efloreUrlTpl'], $infos['num_nom_sel'], 'illustration');
$donnees['lien_cel'] = (isset($infos['num_nom_sel'])) ?
sprintf($this->config['settings']['efloreUrlTpl'], $infos['num_nom_sel'], 'illustration') : '';
$donnees['editeur'] = $this->config['settings']['editeur'];
$derniere_info_en_date = reset($infos);
$date_modification_timestamp = strtotime($derniere_info_en_date['ci_meta_date_ajout']);
229,8 → 240,7
$donnees['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
$donnees['annee_courante'] = date('Y');
$donnees['generateur'] = 'CEL - Jrest - CelSyndicationImage';
preg_match('/([0-9]+)/', '$Revision$', $match);
$donnees['generateur_version'] = $match[1];
$donnees['generateur_version'] = (preg_match('/([0-9]+)/', '$Revision$', $match)) ? $match[1] : '0';
return $donnees;
}
347,7 → 357,7
private function getServiceComplet() {
// Construction de la requête
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
$requete = (isset($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
' ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
'FROM cel_images AS cim '.
' LEFT JOIN cel_obs_images AS coi '.
355,7 → 365,7
' LEFT JOIN cel_inventory AS ci '.
' ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
(($this->etreFluxAdmin()) ? '' : 'WHERE ci.transmission = 1 ').
'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'ci_meta_date_ajout DESC').' '.
'ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby : 'ci_meta_date_ajout DESC').' '.
"LIMIT $this->start, $this->limit ";
$elements = $this->executerRequete($requete);
371,14 → 381,7
}
private function getServiceMultiCriteres() {
if (! $this->estUneRechercheGenerale()) {
$criteres = $this->traiterCriteresMultiples($_GET);
if (empty($criteres)) {
return $contenu = $this->executerService(array());
}
}
$contenu = '';
if (isset($_GET['debut'])) {
$this->start = $_GET['debut'];
}
403,13 → 406,16
$sous_requete = $this->creerSousRequeteRechercheGenerale($chaine_requete);
} else {
$criteres = $this->traiterCriteresMultiples($_GET) ;
if (empty($criteres)) {
$sous_requete = '';
}
$sous_requete = $this->creerSousRequeteRechercheParCriteres($criteres);
}
$requete .= $sous_requete;
$requete = rtrim($requete, 'AND ');
$requete .= ' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'c.ci_meta_date_ajout DESC').' ';
$requete .= "LIMIT $this->start,$this->limit ";
$requete .= ' ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby :
'c.ci_meta_date_ajout DESC').' '."LIMIT $this->start,$this->limit ";
$elements = $this->executerRequete($requete);
 
417,7 → 423,7
if ($elements != false && count($elements) > 0) {
$contenu = $this->executerService($elements);
} else {
$this->messages[] = "Aucune image disponible.";
$this->messages[] = "Aucune image disponible.$requete";
}
return $contenu;
428,36 → 434,26
foreach ($criteres as $pair) {
$nom_valeur = explode("=",$pair);
if (sizeof($nom_valeur) != 0) {
if ($nom_valeur[0] == "ci_limite") {
$this->limite = $this->bdd->quote($nom_valeur[1]);
} elseif ($nom_valeur[0] == "c.ci_numero_page") {
$this->start = $this->limite*$this->bdd->quote($nom_valeur[1]);
} elseif ($nom_valeur[0] == "c.ci_meta_comment") {
$mots_comment_liste = explode(" " , $nom_valeur[1]);
 
foreach($mots_comment_liste as $mot_comment) {
$mot_comment = trim($mot_comment) ;
$requete .= $nom_valeur[0].' LIKE "%'.$this->bdd->quote($mot_comment).'%"';
$requete .= ' AND ';
}
} elseif ($nom_valeur[0] == "c.ci_meta_date") {
$requete .= 'DATE_FORMAT( '.$nom_valeur[0].', \'%Y-%m-%d\' ) = "'.$this->bdd->quote($nom_valeur[1]).'"';
$requete .= ' AND ';
} elseif ($nom_valeur[0] == "b.nom_ret") {
if ($nom_valeur[1] == "indetermine") {
$nom_valeur[1] = 'null';
}
$requete .= ' (';
$requete .= $nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%"';
$requete .= ' OR ';
$requete .= 'b.nom_sel LIKE "%'.$nom_valeur[1].'%"';
$requete .= ') AND ';
} else {
$requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'"';
$requete .= ' AND ';
switch ($nom_valeur[0]) {
case "ci_limite" : $this->limite = $this->bdd->quote($nom_valeur[1]); break;
case "c.ci_numero_page" : $this->limite*$this->bdd->quote($nom_valeur[1]); break;
case "c.ci_meta_comment" : $mots_comment_liste = explode(" " , $nom_valeur[1]);
foreach($mots_comment_liste as $mot_comment) {
$mot_comment = trim($mot_comment) ;
$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote('%'.$mot_comment.'%').' AND ';
}
break;
case "c.ci_meta_date" :
$nom_valeur[1] = str_replace('/', '-', $nom_valeur[1]);
if (preg_match('/(^[0-9]{2})-([0-9]{2})-([0-9]{4}$)/', $nom_valeur[1], $matches)) {
$nom_valeur[1] = $matches[3].'-'.$matches[2].'-'.$matches[1];
}
$requete .= $nom_valeur[0].'='.$this->bdd->quote($nom_valeur[1]).' AND '; break;
case "b.nom_ret" :
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;
default : $requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'" AND '; break;
}
}
}