Line 41... |
Line 41... |
41 |
|
41 |
|
42 |
public function consulter($ressources, $parametres) {
|
42 |
public function consulter($ressources, $parametres) {
|
43 |
$this->idObs = $ressources[0];
|
43 |
$this->idObs = $ressources[0];
|
Line 44... |
Line -... |
44 |
$this->protocole = isset($parametres['protocole']) && is_numeric($parametres['protocole']) ? intval($parametres['protocole']) : null;
|
- |
|
45 |
|
44 |
$this->protocole = isset($parametres['protocole']) && is_numeric($parametres['protocole']) ? intval($parametres['protocole']) : null;
|
46 |
// 1) récupération de l'observation (et de ses images (v_del_image est une vue utilisant des INNER JOIN))
|
45 |
|
47 |
$infos = $this->getInfosObservationEtImages();
|
46 |
$infos = $this->getInfosObservationEtImages();
|
48 |
if (! $infos) {
|
47 |
if (! $infos) {
|
49 |
$message = "Aucune observation ne possède d'identifiant '{$this->idObs}'.";
|
48 |
$message = "Aucune observation ne possède d'identifiant '{$this->idObs}'.";
|
50 |
throw new Exception($message, RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE);
|
49 |
throw new Exception($message, RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE);
|
51 |
}
|
- |
|
- |
|
50 |
}
|
52 |
$this->formaterObservation($infos);
|
51 |
$this->formaterObservation($infos);
|
- |
|
52 |
|
53 |
//var_dump($this->observation);
|
53 |
// 3) charge les données de votes et protocoles associés aux images
|
54 |
// 3) charge les données de votes et protocoles associés aux images
|
54 |
|
55 |
if ($this->observation['images']) {
|
55 |
if ($this->observation['images']) {
|
56 |
$idsImages = array_keys($this->observation['images']);
|
56 |
$idsImages = array_keys($this->observation['images']);
|
57 |
$votes = $this->sql->getVotesDesImages($idsImages, $this->protocole);
|
57 |
$votes = $this->sql->getVotesDesImages($idsImages, $this->protocole);
|
Line 74... |
Line 74... |
74 |
$resultat->corps = $this->observation;
|
74 |
$resultat->corps = $this->observation;
|
75 |
return $resultat;
|
75 |
return $resultat;
|
76 |
}
|
76 |
}
|
Line 77... |
Line 77... |
77 |
|
77 |
|
78 |
private function getInfosObservationEtImages() {
|
78 |
private function getInfosObservationEtImages() {
|
79 |
$obsChamps = $this->sql->getAliasDesChamps($this->mappings['observations'], null, 'dob');
|
79 |
$obsChamps = $this->sql->getAliasDesChamps($this->mappings['observations'], null, 'do');
|
Line 80... |
Line 80... |
80 |
$imgChamps = $this->sql->getAliasDesChamps($this->mappings['images'], null, 'dob');
|
80 |
$imgChamps = $this->sql->getAliasDesChamps($this->mappings['images'], null, 'di');
|
81 |
|
81 |
|
82 |
// champs de l'annuaire (del_utilisateur): id_utilisateur prenom, nom, courriel
|
82 |
// champs de l'annuaire (del_utilisateur): id_utilisateur prenom, nom, courriel
|
83 |
$annuaireChamps = implode(', ', array(
|
83 |
$annuaireChamps = implode(', ', array(
|
84 |
"IFNULL(du.prenom, prenom_utilisateur) AS `auteur.prenom`",
|
84 |
"IFNULL(du.prenom, do.prenom_utilisateur) AS `auteur.prenom`",
|
Line 85... |
Line 85... |
85 |
"IFNULL(du.nom, nom_utilisateur) AS `auteur.nom`",
|
85 |
"IFNULL(du.nom, do.nom_utilisateur) AS `auteur.nom`",
|
86 |
"IFNULL(du.courriel, courriel_utilisateur) AS `auteur.courriel`"));
|
86 |
"IFNULL(du.courriel, do.courriel_utilisateur) AS `auteur.courriel`"));
|
87 |
|
87 |
|
88 |
$requete = "SELECT $obsChamps, $imgChamps, $annuaireChamps ".
|
88 |
$requete = "SELECT $obsChamps, $imgChamps, $annuaireChamps ".
|
89 |
"FROM v_del_image as dob ".
|
89 |
"FROM del_observation AS do ".
|
90 |
"LEFT JOIN del_utilisateur AS du ".
|
90 |
" LEFT JOIN del_image AS di ON (do.id_observation = di.ce_observation) ".
|
91 |
" ON CAST(du.id_utilisateur AS CHAR) = CAST(dob.ce_utilisateur AS CHAR) ".
|
91 |
" LEFT JOIN del_utilisateur AS du ON (do.ce_utilisateur = du.id_utilisateur) ".
|
92 |
"WHERE dob.id_observation = {$this->idObs} ".
|
92 |
"WHERE do.id_observation = {$this->idObs} ".
|
93 |
'-- '.__FILE__.':'.__LINE__;
|
93 |
'-- '.__FILE__.':'.__LINE__;
|
Line 94... |
Line 94... |
94 |
//var_dump($requete);
|
94 |
//Debug::printr($requete);
|
- |
|
95 |
return $this->bdd->recuperer($requete);
|
- |
|
96 |
}
|
- |
|
97 |
|
95 |
return $this->bdd->recupererTous($requete);
|
98 |
private function formaterObservation($infos) {
|
96 |
}
|
99 |
$infos = array_filter($infos);
|
- |
|
100 |
|
- |
|
101 |
$image = array_intersect_key($infos, array_flip(array('id_image', 'date', 'hauteur' , 'largeur', 'nom_original')));
|
Line 97... |
Line -... |
97 |
|
- |
|
98 |
private function formaterObservation($infos) {
|
- |
|
99 |
$urlImgTpl = $this->conteneur->getParametre('cel_img_url_tpl');
|
- |
|
100 |
$imageFormat = 'XL';
|
- |
|
101 |
|
- |
|
102 |
$infos = array_map('array_filter', $infos);
|
- |
|
103 |
foreach ($infos as $info) {
|
- |
|
104 |
$image = array_intersect_key($info, array_flip(array('id_image', 'date', 'hauteur' , 'largeur', 'nom_original')));
|
102 |
$urlImgTpl = $this->conteneur->getParametre('cel_img_url_tpl');
|
105 |
$image['binaire.href'] = sprintf($urlImgTpl, $image['id_image'], $imageFormat);
|
- |
|
106 |
unset($info['id_image'], $info['date'], $info['hauteur'], $info['largeur'], $info['nom_original']);
|
103 |
$imageFormat = 'XL';
|
107 |
|
- |
|
108 |
if (!isset($this->observation)) {
|
104 |
$image['binaire.href'] = sprintf($urlImgTpl, $image['id_image'], $imageFormat);
|
Line 109... |
Line 105... |
109 |
$this->observation = $info;
|
105 |
unset($infos['id_image'], $infos['date'], $infos['hauteur'], $infos['largeur'], $infos['nom_original']);
|
110 |
}
|
106 |
|
111 |
$this->observation['images'][$image['id_image']] = $image;
|
107 |
$this->observation = $infos;
|
Line 162... |
Line 158... |
162 |
}
|
158 |
}
|
163 |
$this->observation['commentaires'] = $ret;
|
159 |
$this->observation['commentaires'] = $ret;
|
164 |
}
|
160 |
}
|
Line 165... |
Line 161... |
165 |
|
161 |
|
166 |
private function nettoyerAuteur() {
|
162 |
private function nettoyerAuteur() {
|
167 |
if (!is_numeric($this->observation['auteur.id'])) {
|
163 |
if (!isset($this->observation['auteur.id']) || !is_numeric($this->observation['auteur.id'])) {
|
168 |
$this->observation['auteur.id'] = '0';
|
164 |
$this->observation['auteur.id'] = '0';
|
169 |
}
|
165 |
}
|
170 |
if (!isset($this->observation['auteur.nom'])) {
|
166 |
if (!isset($this->observation['auteur.nom'])) {
|
171 |
$this->observation['auteur.nom'] = '[inconnu]';
|
167 |
$this->observation['auteur.nom'] = '[inconnu]';
|