| 737 |
aurelien |
1 |
<?php
|
| 851 |
aurelien |
2 |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
|
|
|
3 |
|
| 737 |
aurelien |
4 |
// in utf8
|
|
|
5 |
// out utf8
|
|
|
6 |
|
| 2143 |
jpm |
7 |
// Fournit un référentiel relatif à l'utilisateur sur l'un des champs demandes
|
| 851 |
aurelien |
8 |
class SelfRefList extends Cel {
|
| 2143 |
jpm |
9 |
|
| 737 |
aurelien |
10 |
private $referentiels = array('station', 'lieudit', 'milieu');
|
|
|
11 |
|
| 851 |
aurelien |
12 |
/**
|
|
|
13 |
* Suivant le type de référentiel donné en paramètre, renvoie les liste de ses éléments
|
| 2143 |
jpm |
14 |
*
|
| 851 |
aurelien |
15 |
* uid[0] : utilisateur obligatoire
|
|
|
16 |
* uid[1] : referentiel demandé (obligatoire)
|
|
|
17 |
* $_GET["start"] et $GET_["limit"] : selection intervalle
|
| 1299 |
aurelien |
18 |
* $_GET["recherche"] : cherche les noms qui commmencent selon la valeur
|
| 2143 |
jpm |
19 |
*
|
| 851 |
aurelien |
20 |
*/
|
| 2143 |
jpm |
21 |
public function getElement($uid){
|
|
|
22 |
// Controle detournement utilisateur
|
|
|
23 |
$this->controleUtilisateur($uid[0]);
|
| 737 |
aurelien |
24 |
|
| 2143 |
jpm |
25 |
if (!$this->paramObligatoiresSontPresents($uid)) {
|
|
|
26 |
return;
|
|
|
27 |
}
|
|
|
28 |
|
|
|
29 |
if ($_GET['recherche'] == '*') {
|
|
|
30 |
$_GET['recherche'] = '%';
|
|
|
31 |
}
|
|
|
32 |
|
|
|
33 |
$referentiel_demande = $uid[1];
|
|
|
34 |
$idUtilisateur = Cel::db()->proteger($uid[0]);
|
|
|
35 |
|
|
|
36 |
$requete = "SELECT DISTINCT $referentiel_demande " .
|
|
|
37 |
'FROM cel_obs '.
|
|
|
38 |
"WHERE ce_utilisateur = '$idUtilisateur' ";
|
|
|
39 |
if ($this->filtreRechercheEstDemande()) {
|
|
|
40 |
$requete .= " AND $referentiel_demande LIKE '".$_GET["recherche"]."%'";
|
|
|
41 |
}
|
|
|
42 |
if ($this->limiteEstDemandee()) {
|
|
|
43 |
$requete .= " ORDER BY $referentiel_demande LIMIT ".$_GET['start'].','.$_GET['limit'];
|
|
|
44 |
}
|
|
|
45 |
$resultat = Cel::db()->requeter($requete);
|
|
|
46 |
|
|
|
47 |
$referentiel = array();
|
|
|
48 |
foreach ($resultat as $cle => $valeur) {
|
|
|
49 |
if ($this->estUneValeurValide($valeur[$referentiel_demande])) {
|
|
|
50 |
$referentiel[] = $valeur[$referentiel_demande];
|
| 737 |
aurelien |
51 |
}
|
|
|
52 |
|
| 2143 |
jpm |
53 |
}
|
|
|
54 |
$this->envoyerJson($referentiel);
|
|
|
55 |
return true;
|
| 737 |
aurelien |
56 |
}
|
| 2143 |
jpm |
57 |
|
|
|
58 |
private function paramObligatoiresSontPresents($uid) {
|
|
|
59 |
return (isset($uid[1]) && in_array($uid[1], $this->referentiels) && (isset($uid[0]) && $uid[0] != ''));
|
| 737 |
aurelien |
60 |
}
|
| 2143 |
jpm |
61 |
|
|
|
62 |
private function filtreRechercheEstDemande() {
|
|
|
63 |
return (isset($_GET['recherche']) && trim($_GET['recherche']) != '');
|
| 737 |
aurelien |
64 |
}
|
| 2143 |
jpm |
65 |
|
|
|
66 |
private function limiteEstDemandee() {
|
|
|
67 |
return isset($_GET['start']) && is_numeric($_GET['start']) && isset($_GET['limit']) && is_numeric($_GET['limit']);
|
| 737 |
aurelien |
68 |
}
|
| 2143 |
jpm |
69 |
|
|
|
70 |
private function estUneValeurValide($chaine) {
|
|
|
71 |
return ($chaine != null && $chaine != '000null' && trim($chaine) != '');
|
| 737 |
aurelien |
72 |
}
|
| 2143 |
jpm |
73 |
}
|