Subversion Repositories eFlore/Applications.del

Rev

Rev 1845 | Rev 1922 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1845 Rev 1881
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]';