Line 28... |
Line 28... |
28 |
Si la valeur vaut 1, aucun alias ne sera défini (nom du champ d'origine), cf consulter() */
|
28 |
Si la valeur vaut 1, aucun alias ne sera défini (nom du champ d'origine), cf consulter() */
|
29 |
static $mappings = array(
|
29 |
static $mappings = array(
|
30 |
'observations' => array( // v_del_image
|
30 |
'observations' => array( // v_del_image
|
31 |
"id_observation" => 1,
|
31 |
"id_observation" => 1,
|
32 |
"date_observation" => 1,
|
32 |
"date_observation" => 1,
|
33 |
"date_transmission" => 1,
|
33 |
"date_transmission" => 1,
|
34 |
"famille" => "determination.famille",
|
34 |
"famille" => "determination.famille",
|
35 |
"nom_sel" => "determination.ns",
|
35 |
"nom_sel" => "determination.ns",
|
36 |
"nom_sel_nn" => "determination.nn",
|
36 |
"nom_sel_nn" => "determination.nn",
|
37 |
"nom_referentiel" => "determination.referentiel",
|
37 |
"nom_referentiel" => "determination.referentiel",
|
38 |
"nt" => "determination.nt",
|
38 |
"nt" => "determination.nt",
|
Line 105... |
Line 105... |
105 |
"nom_ret_nn" => 1,
|
105 |
"nom_ret_nn" => 1,
|
106 |
"nom_referentiel" => 1,
|
106 |
"nom_referentiel" => 1,
|
107 |
"proposition_initiale" => 1),
|
107 |
"proposition_initiale" => 1),
|
108 |
);
|
108 |
);
|
Line 109... |
Line 109... |
109 |
|
109 |
|
110 |
|
110 |
|
111 |
private $conteneur;
|
111 |
private $conteneur;
|
112 |
private $gestionBdd;
|
112 |
private $gestionBdd;
|
113 |
private $bdd;
|
113 |
private $bdd;
|
114 |
|
114 |
|
115 |
public function __construct(Conteneur $conteneur = null) {
|
115 |
public function __construct(Conteneur $conteneur = null) {
|
116 |
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
|
116 |
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
|
117 |
$this->conteneur->chargerConfiguration('config_votes.ini');
|
117 |
$this->conteneur->chargerConfiguration('config_votes.ini');
|
118 |
$this->conteneur->chargerConfiguration('config_mapping_votes.ini');
|
118 |
$this->conteneur->chargerConfiguration('config_mapping_votes.ini');
|
119 |
$this->conteneur->chargerConfiguration('config_mapping_commentaires.ini');
|
119 |
$this->conteneur->chargerConfiguration('config_mapping_commentaires.ini');
|
120 |
$this->gestionBdd = $conteneur->getGestionBdd();
|
120 |
$this->gestionBdd = $conteneur->getGestionBdd();
|
121 |
$this->bdd = $this->gestionBdd->getBdd();
|
121 |
$this->bdd = $this->gestionBdd->getBdd();
|
122 |
}
|
122 |
}
|
123 |
|
123 |
|
124 |
/**
|
124 |
/**
|
125 |
* Méthode principale de la classe.
|
125 |
* Méthode principale de la classe.
|
126 |
* Lance la récupération des images dans la base et les place dans un objet ResultatService
|
126 |
* Lance la récupération des images dans la base et les place dans un objet ResultatService
|
127 |
* pour l'afficher.
|
127 |
* pour l'afficher.
|
128 |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
|
128 |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
|
129 |
* @param array $parametres les paramètres situés après le ? dans l'url
|
129 |
* @param array $parametres les paramètres situés après le ? dans l'url
|
130 |
* */
|
130 |
* */
|
Line 146... |
Line 146... |
146 |
$idobs = $ressources[0];
|
146 |
$idobs = $ressources[0];
|
147 |
$protocole = isset($parametres['protocole']) && is_numeric($parametres['protocole']) ?intval($parametres['protocole']) : NULL;
|
147 |
$protocole = isset($parametres['protocole']) && is_numeric($parametres['protocole']) ?intval($parametres['protocole']) : NULL;
|
Line 148... |
Line 148... |
148 |
|
148 |
|
149 |
// 1) récupération de l'observation (et de ses images (v_del_image est une vue utilisant des INNER JOIN))
|
149 |
// 1) récupération de l'observation (et de ses images (v_del_image est une vue utilisant des INNER JOIN))
|
150 |
$liaisons = self::chargerObservation($this->bdd, $idobs);
|
150 |
$liaisons = self::chargerObservation($this->bdd, $idobs);
|
151 |
|
151 |
|
152 |
if(!$liaisons) {
|
152 |
if(!$liaisons) {
|
153 |
header('HTTP/1.0 404 Not Found');
|
153 |
header('HTTP/1.0 404 Not Found');
|
154 |
// don't die (phpunit)
|
154 |
// don't die (phpunit)
|
155 |
throw(new Exception());
|
155 |
throw(new Exception());
|
Line 182... |
Line 182... |
182 |
// corriger l'appli cliente pour utiliser les index puis supprimer cette ligne
|
182 |
// corriger l'appli cliente pour utiliser les index puis supprimer cette ligne
|
183 |
$observation['images'] = array_values($observation['images']);
|
183 |
$observation['images'] = array_values($observation['images']);
|
184 |
// autre élément de post-processing: le ce_utilisateur de l'observation non-numeric...
|
184 |
// autre élément de post-processing: le ce_utilisateur de l'observation non-numeric...
|
185 |
if(!is_numeric($observation['auteur.id'])) $observation['auteur.id'] = "0";
|
185 |
if(!is_numeric($observation['auteur.id'])) $observation['auteur.id'] = "0";
|
186 |
if(!isset($observation['auteur.nom'])) $observation['auteur.nom'] = '[inconnu]';
|
186 |
if(!isset($observation['auteur.nom'])) $observation['auteur.nom'] = '[inconnu]';
|
187 |
|
187 |
|
Line 188... |
Line 188... |
188 |
|
188 |
|
Line 189... |
Line 189... |
189 |
if(isset($parametres['justthrow'])) return $observation;
|
189 |
if(isset($parametres['justthrow'])) return $observation;
|
190 |
|
190 |
|
Line 202... |
Line 202... |
202 |
$image_fields = DelTk::sqlFieldsToAlias(self::$mappings['images'], NULL, 'dob');
|
202 |
$image_fields = DelTk::sqlFieldsToAlias(self::$mappings['images'], NULL, 'dob');
|
Line 203... |
Line 203... |
203 |
|
203 |
|
204 |
// champs de l'annuaire (del_utilisateur): id_utilisateur prenom, nom, courriel
|
204 |
// champs de l'annuaire (del_utilisateur): id_utilisateur prenom, nom, courriel
|
205 |
$annuaire_fields = implode(', ', array("IFNULL(du.prenom, prenom_utilisateur) AS `auteur.prenom`",
|
205 |
$annuaire_fields = implode(', ', array("IFNULL(du.prenom, prenom_utilisateur) AS `auteur.prenom`",
|
206 |
"IFNULL(du.nom, nom_utilisateur) AS `auteur.nom`",
|
206 |
"IFNULL(du.nom, nom_utilisateur) AS `auteur.nom`",
|
207 |
"IFNULL(du.courriel, courriel_utilisateur) AS observateur"));
|
207 |
"IFNULL(du.courriel, courriel_utilisateur) AS `auteur.courriel`"));
|
208 |
return $db->recupererTous(sprintf(
|
208 |
return $db->recupererTous(sprintf(
|
209 |
'SELECT %s, %s, %s FROM v_del_image as dob'.
|
209 |
'SELECT %s, %s, %s FROM v_del_image as dob'.
|
210 |
' LEFT JOIN del_utilisateur du ON CAST(du.id_utilisateur AS CHAR) = CAST(dob.ce_utilisateur AS CHAR)'.
|
210 |
' LEFT JOIN del_utilisateur du ON CAST(du.id_utilisateur AS CHAR) = CAST(dob.ce_utilisateur AS CHAR)'.
|
211 |
' WHERE dob.id_observation = %d -- %s',
|
211 |
' WHERE dob.id_observation = %d -- %s',
|
212 |
$obs_fields, $image_fields, $annuaire_fields, $idobs, __FILE__ . ':' . __LINE__));
|
212 |
$obs_fields, $image_fields, $annuaire_fields, $idobs, __FILE__ . ':' . __LINE__));
|
Line 213... |
Line 213... |
213 |
}
|
213 |
}
|
214 |
|
214 |
|
215 |
|
215 |
|
216 |
// Charger les images et leurs votes associés
|
216 |
// Charger les images et leurs votes associés
|
Line 217... |
Line 217... |
217 |
static function chargerVotesImage($db, $images, $protocole = NULL) {
|
217 |
static function chargerVotesImage($db, $images, $protocole = NULL) {
|
218 |
if(!$images) return NULL;
|
218 |
if(!$images) return NULL;
|
219 |
|
219 |
|
220 |
$select = array('votes' =>
|
220 |
$select = array('votes' =>
|
221 |
array('id_vote', 'ce_image', 'ce_protocole', 'ce_utilisateur', 'valeur', 'date', /* del_image_vote */),
|
221 |
array('id_vote', 'ce_image', 'ce_protocole', 'ce_utilisateur', 'valeur', 'date', /* del_image_vote */),
|
222 |
'protocole' =>
|
222 |
'protocole' =>
|
223 |
array('id_protocole', 'intitule', 'descriptif', 'tag' /* del_image_protocole */ ));
|
223 |
array('id_protocole', 'intitule', 'descriptif', 'tag' /* del_image_protocole */ ));
|
224 |
$vote_fields = DelTk::sqlFieldsToAlias(self::$mappings['votes'], $select['votes'], 'v'); // "v": cf alias dans la requête
|
224 |
$vote_fields = DelTk::sqlFieldsToAlias(self::$mappings['votes'], $select['votes'], 'v'); // "v": cf alias dans la requête
|
225 |
$proto_fields = DelTk::sqlFieldsToAlias(self::$mappings['protocoles'], $select['protocole'], 'p');
|
225 |
$proto_fields = DelTk::sqlFieldsToAlias(self::$mappings['protocoles'], $select['protocole'], 'p');
|
226 |
|
226 |
|
227 |
$where = array();
|
227 |
$where = array();
|
Line 243... |
Line 243... |
243 |
$vote_fields,
|
243 |
$vote_fields,
|
244 |
$proto_fields,
|
244 |
$proto_fields,
|
245 |
($where ? implode(' AND ', $where) : 1),
|
245 |
($where ? implode(' AND ', $where) : 1),
|
246 |
$ordreDesIdsRecus,
|
246 |
$ordreDesIdsRecus,
|
247 |
__FILE__ . ':' . __LINE__);
|
247 |
__FILE__ . ':' . __LINE__);
|
248 |
|
248 |
|
249 |
//echo "REQUETE: $req"; exit;
|
249 |
//echo "REQUETE: $req"; exit;
|
Line 250... |
Line 250... |
250 |
|
250 |
|
251 |
return $db->recupererTous($req);
|
251 |
return $db->recupererTous($req);
|
252 |
}
|
252 |
}
|
253 |
|
253 |
|
254 |
/**
|
254 |
/**
|
255 |
* Formater une observation depuis une ligne liaison
|
255 |
* Formater une observation depuis une ligne liaison
|
256 |
* @param $liaison liaison issue de la recherche
|
256 |
* @param $liaison liaison issue de la recherche
|
257 |
* @return $observation l'observation mise en forme
|
257 |
* @return $observation l'observation mise en forme
|
Line 267... |
Line 267... |
267 |
|
267 |
|
268 |
// pour chaque vote
|
268 |
// pour chaque vote
|
269 |
foreach ($votes as $vote) {
|
269 |
foreach ($votes as $vote) {
|
270 |
$imgid = $vote['image.id'];
|
270 |
$imgid = $vote['image.id'];
|
271 |
$protoid = $vote['protocole.id'];
|
271 |
$protoid = $vote['protocole.id'];
|
272 |
|
272 |
|
273 |
// un vote sans image associée ? est-ce possible ?
|
273 |
// un vote sans image associée ? est-ce possible ?
|
274 |
// if(!isset($images[$imgid])) continue;
|
274 |
// if(!isset($images[$imgid])) continue;
|
275 |
|
275 |
|
276 |
if(!array_key_exists('protocoles_votes', $images[$imgid]) ||
|
276 |
if(!array_key_exists('protocoles_votes', $images[$imgid]) ||
|
277 |
!array_key_exists($protoid, $images[$imgid]['protocoles_votes'])) {
|
277 |
!array_key_exists($protoid, $images[$imgid]['protocoles_votes'])) {
|
278 |
// extrait les champs spécifique au protocole (le LEFT JOIN de chargerVotesImage les ramène en doublons
|
278 |
// extrait les champs spécifique au protocole (le LEFT JOIN de chargerVotesImage les ramène en doublons
|
279 |
$protocole = array_intersect_key($vote, array_flip(self::$mappings['protocoles']));
|
279 |
$protocole = array_intersect_key($vote, array_flip(self::$mappings['protocoles']));
|