| 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']));
|