| Line 16... |
Line 16... |
| 16 |
private $parametres = null;
|
16 |
private $parametres = null;
|
| 17 |
private $format = null;
|
17 |
private $format = null;
|
| 18 |
private $service = null;
|
18 |
private $service = null;
|
| 19 |
private $squelette = null;
|
19 |
private $squelette = null;
|
| 20 |
private $squelette_dossier = null;
|
20 |
private $squelette_dossier = null;
|
| 21 |
private $auteurs = array();
|
21 |
private $masque = array();
|
| 22 |
private $flux = array();
|
22 |
private $mappingFiltre = array();
|
| 23 |
private $conteneur = null;
|
23 |
private $conteneur = null;
|
| 24 |
private $gestionBdd = null;
|
24 |
private $gestionBdd = null;
|
| Line 25... |
Line 25... |
| 25 |
|
25 |
|
| 26 |
public function __construct(Conteneur $conteneur = null) {
|
26 |
public function __construct(Conteneur $conteneur = null) {
|
| - |
|
27 |
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
|
| - |
|
28 |
$this->conteneur->chargerConfiguration('config_syndication_commentaires.ini');
|
| - |
|
29 |
$this->mappingFiltre = $this->conteneur->getParametre('mapping_masque');
|
| 27 |
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
|
30 |
$this->masque = $conteneur->getMasque();
|
| 28 |
$this->gestionBdd = $conteneur->getGestionBdd();
|
31 |
$this->gestionBdd = $conteneur->getGestionBdd();
|
| Line 29... |
Line 32... |
| 29 |
}
|
32 |
}
|
| - |
|
33 |
|
| 30 |
|
34 |
public function consulter($params = array()) {
|
| 31 |
public function consulter($params = array()) {
|
35 |
$this->verifierConfiguration();
|
| 32 |
$donnees_brutes = $this->getDerniersCommentaires();
|
36 |
$donnees_brutes = $this->getDerniersCommentaires();
|
| 33 |
$commentaires_formates = $this->formaterPourRss($donnees_brutes) ;
|
37 |
$commentaires_formates = $this->formaterPourRss($donnees_brutes) ;
|
| Line -... |
Line 38... |
| - |
|
38 |
return $commentaires_formates;
|
| - |
|
39 |
}
|
| - |
|
40 |
|
| - |
|
41 |
/**
|
| - |
|
42 |
* Vérifier que le service est bien configuré
|
| - |
|
43 |
* */
|
| - |
|
44 |
public function verifierConfiguration() {
|
| - |
|
45 |
|
| - |
|
46 |
$erreurs = array();
|
| - |
|
47 |
$tableauImages = $this->conteneur->getParametre('mapping_masque');
|
| - |
|
48 |
|
| - |
|
49 |
if (empty($this->mappingFiltre)) {
|
| - |
|
50 |
$erreurs[] = '- le fichier de configuration ne contient pas le tableau [mapping_masque] ou celui-ci est vide ;';
|
| - |
|
51 |
} else {
|
| - |
|
52 |
$champsMappingFiltre = array('espece', 'observation');
|
| - |
|
53 |
foreach ($champsMappingFiltre as $champ) {
|
| - |
|
54 |
if (!isset($this->mappingFiltre[$champ])) {
|
| - |
|
55 |
$erreurs[] = '- le mapping du champ "'.$champ.'" pour le commentaire est manquant ;';
|
| - |
|
56 |
}
|
| - |
|
57 |
}
|
| - |
|
58 |
}
|
| - |
|
59 |
|
| - |
|
60 |
if (!empty($erreurs)) {
|
| - |
|
61 |
$e = 'Erreur lors de la configuration : '."\n";
|
| - |
|
62 |
$e .= implode("\n", $erreurs);
|
| - |
|
63 |
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
|
| 34 |
return $commentaires_formates;
|
64 |
}
|
| 35 |
}
|
- |
|
| 36 |
|
65 |
}
|
| 37 |
private function formaterPourRss($elements) {
|
66 |
|
| 38 |
// Prétraitement des données
|
67 |
private function formaterPourRss($elements) {
|
| 39 |
$donnees = $this->construireDonneesCommunesAuFlux($elements);
|
68 |
$donnees = $this->construireDonneesCommunesAuFlux($elements);
|
| 40 |
foreach ($elements as $element) {
|
69 |
foreach ($elements as $element) {
|
| Line 138... |
Line 167... |
| 138 |
$requete = "SELECT DISTINCT dc.*, dob.id_observation as dob_id_observation, dob.ce_zone_geo as dob_ce_zone_geo, ".
|
167 |
$requete = "SELECT DISTINCT dc.*, dob.id_observation as dob_id_observation, dob.ce_zone_geo as dob_ce_zone_geo, ".
|
| 139 |
"dob.zone_geo as dob_zone_geo, dob.date_observation as dob_date_observation, dob.nom_sel as dob_nom_sel ".
|
168 |
"dob.zone_geo as dob_zone_geo, dob.date_observation as dob_date_observation, dob.nom_sel as dob_nom_sel ".
|
| 140 |
"FROM del_commentaire dc ".
|
169 |
"FROM del_commentaire dc ".
|
| 141 |
"INNER JOIN del_observation dob ".
|
170 |
"INNER JOIN del_observation dob ".
|
| 142 |
"ON dob.id_observation = dc.ce_observation ".
|
171 |
"ON dob.id_observation = dc.ce_observation ".
|
| 143 |
"WHERE (dob.ce_utilisateur = dc.ce_utilisateur AND dob.nom_sel != dc.nom_sel) ".
|
172 |
"WHERE ((dob.ce_utilisateur = dc.ce_utilisateur AND dob.nom_sel != dc.nom_sel) ".
|
| 144 |
" OR (dob.ce_utilisateur != dc.ce_utilisateur) ".
|
173 |
" OR (dob.ce_utilisateur != dc.ce_utilisateur)) ".
|
| - |
|
174 |
$this->chargerClauseWhere()." ".
|
| 145 |
"ORDER BY dc.date DESC ".
|
175 |
"ORDER BY dc.date DESC ".
|
| 146 |
"LIMIT 0,50 ";
|
176 |
"LIMIT 0,50 ";
|
| Line 147... |
Line 177... |
| 147 |
|
177 |
|
| 148 |
$elements = $this->gestionBdd->getBdd()->recupererTous($requete);
|
178 |
$elements = $this->gestionBdd->getBdd()->recupererTous($requete);
|
| 149 |
return $elements;
|
179 |
return $elements;
|
| - |
|
180 |
}
|
| - |
|
181 |
|
| - |
|
182 |
/**
|
| - |
|
183 |
* Charger la clause WHERE en fonction des paramètres de masque
|
| - |
|
184 |
* */
|
| - |
|
185 |
private function chargerClauseWhere() {
|
| - |
|
186 |
$where = array();
|
| - |
|
187 |
$tableauMasque = $this->masque->getMasque();
|
| - |
|
188 |
if (!empty($tableauMasque)) {
|
| - |
|
189 |
foreach($tableauMasque as $idMasque => $valeurMasque) {
|
| - |
|
190 |
$idMasque = str_replace('masque.', '', $idMasque);
|
| - |
|
191 |
switch ($idMasque) {
|
| - |
|
192 |
case 'espece':
|
| - |
|
193 |
$where[] = ' dob.'.$this->mappingFiltre[$idMasque].' LIKE '.$this->gestionBdd->getBdd()->proteger($valeurMasque.'%').' '.
|
| - |
|
194 |
' OR '.' dc.'.$this->mappingFiltre[$idMasque].' LIKE '.$this->gestionBdd->getBdd()->proteger($valeurMasque.'%').' ';
|
| - |
|
195 |
break;
|
| - |
|
196 |
case 'auteur':
|
| - |
|
197 |
$where[] = $this->creerFiltreAuteur($valeurMasque).' ';
|
| - |
|
198 |
break;
|
| - |
|
199 |
default:
|
| - |
|
200 |
$where[] = ' '.$this->mappingFiltre[$idMasque].' = '.$this->gestionBdd->getBdd()->proteger($valeurMasque);
|
| - |
|
201 |
break;
|
| - |
|
202 |
}
|
| - |
|
203 |
}
|
| - |
|
204 |
}
|
| - |
|
205 |
if (!empty($where)) {
|
| - |
|
206 |
return ' AND '.implode('AND', $where);
|
| - |
|
207 |
} else {
|
| - |
|
208 |
return;
|
| - |
|
209 |
}
|
| - |
|
210 |
}
|
| - |
|
211 |
|
| - |
|
212 |
private function creerFiltreAuteur($valeurMasque) {
|
| - |
|
213 |
$masque = '';
|
| - |
|
214 |
$auteurId = $valeurMasque;
|
| - |
|
215 |
if (is_numeric($auteurId)) {
|
| - |
|
216 |
$masque = ' dc.ce_utilisateur = '.$auteurId;
|
| - |
|
217 |
} else {
|
| - |
|
218 |
if (strpos($auteurId, '@') === false) {
|
| - |
|
219 |
$tableauNomPrenom = explode(' ',$auteurId, 2);
|
| - |
|
220 |
if(count($tableauNomPrenom) == 2) {
|
| - |
|
221 |
// on teste potentiellement un nom prenom ou bien un prénom nom
|
| - |
|
222 |
$masque = '('.
|
| - |
|
223 |
'(dc.utilisateur_nom LIKE '.$this->gestionBdd->getBdd()->proteger($tableauNomPrenom[0].'%').' AND '.
|
| - |
|
224 |
'dc.utilisateur_prenom LIKE '.$this->gestionBdd->getBdd()->proteger($tableauNomPrenom[1].'%').') OR '.
|
| - |
|
225 |
'(dc.utilisateur_nom LIKE '.$this->gestionBdd->getBdd()->proteger($tableauNomPrenom[1].'%').' AND '.
|
| - |
|
226 |
'dc.utilisateur_prenom LIKE '.$this->gestionBdd->getBdd()->proteger($tableauNomPrenom[0].'%').')'.
|
| - |
|
227 |
')';
|
| - |
|
228 |
} else {
|
| - |
|
229 |
$masque = '(
|
| - |
|
230 |
(dc.utilisateur_nom LIKE '.$this->gestionBdd->getBdd()->proteger($auteurId.'%').' OR '.
|
| - |
|
231 |
'dc.utilisateur_prenom LIKE '.$this->gestionBdd->getBdd()->proteger($auteurId.'%').')'.
|
| - |
|
232 |
')';
|
| - |
|
233 |
}
|
| - |
|
234 |
} else {
|
| - |
|
235 |
$masque = " dob.utilisateur_courriel LIKE ".$this->gestionBdd->getBdd()->proteger($valeurMasque.'%')." ";
|
| - |
|
236 |
}
|
| - |
|
237 |
}
|
| - |
|
238 |
return $masque;
|
| 150 |
}
|
239 |
}
|
| 151 |
}
|
240 |
}
|