30,7 → 30,7 |
'observations' => array( // v_del_image |
"id_observation" => 1, |
"date_observation" => 1, |
"date_transmission" => 1, |
"date_transmission" => 1, |
"famille" => "determination.famille", |
"nom_sel" => "determination.ns", |
"nom_sel_nn" => "determination.nn", |
107,11 → 107,11 |
"proposition_initiale" => 1), |
); |
|
|
|
private $conteneur; |
private $gestionBdd; |
private $bdd; |
|
|
public function __construct(Conteneur $conteneur = null) { |
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur; |
$this->conteneur->chargerConfiguration('config_votes.ini'); |
120,10 → 120,10 |
$this->gestionBdd = $conteneur->getGestionBdd(); |
$this->bdd = $this->gestionBdd->getBdd(); |
} |
|
|
/** |
* Méthode principale de la classe. |
* Lance la récupération des images dans la base et les place dans un objet ResultatService |
* Lance la récupération des images dans la base et les place dans un objet ResultatService |
* pour l'afficher. |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2) |
* @param array $parametres les paramètres situés après le ? dans l'url |
148,7 → 148,7 |
|
// 1) récupération de l'observation (et de ses images (v_del_image est une vue utilisant des INNER JOIN)) |
$liaisons = self::chargerObservation($this->bdd, $idobs); |
|
|
if(!$liaisons) { |
header('HTTP/1.0 404 Not Found'); |
// don't die (phpunit) |
184,8 → 184,8 |
// autre élément de post-processing: le ce_utilisateur de l'observation non-numeric... |
if(!is_numeric($observation['auteur.id'])) $observation['auteur.id'] = "0"; |
if(!isset($observation['auteur.nom'])) $observation['auteur.nom'] = '[inconnu]'; |
|
|
|
if(isset($parametres['justthrow'])) return $observation; |
|
// Mettre en forme le résultat et l'envoyer pour affichage |
204,7 → 204,7 |
// champs de l'annuaire (del_utilisateur): id_utilisateur prenom, nom, courriel |
$annuaire_fields = implode(', ', array("IFNULL(du.prenom, prenom_utilisateur) AS `auteur.prenom`", |
"IFNULL(du.nom, nom_utilisateur) AS `auteur.nom`", |
"IFNULL(du.courriel, courriel_utilisateur) AS observateur")); |
"IFNULL(du.courriel, courriel_utilisateur) AS `auteur.courriel`")); |
return $db->recupererTous(sprintf( |
'SELECT %s, %s, %s FROM v_del_image as dob'. |
' LEFT JOIN del_utilisateur du ON CAST(du.id_utilisateur AS CHAR) = CAST(dob.ce_utilisateur AS CHAR)'. |
212,7 → 212,7 |
$obs_fields, $image_fields, $annuaire_fields, $idobs, __FILE__ . ':' . __LINE__)); |
} |
|
|
|
// Charger les images et leurs votes associés |
static function chargerVotesImage($db, $images, $protocole = NULL) { |
if(!$images) return NULL; |
219,11 → 219,11 |
|
$select = array('votes' => |
array('id_vote', 'ce_image', 'ce_protocole', 'ce_utilisateur', 'valeur', 'date', /* del_image_vote */), |
'protocole' => |
'protocole' => |
array('id_protocole', 'intitule', 'descriptif', 'tag' /* del_image_protocole */ )); |
$vote_fields = DelTk::sqlFieldsToAlias(self::$mappings['votes'], $select['votes'], 'v'); // "v": cf alias dans la requête |
$proto_fields = DelTk::sqlFieldsToAlias(self::$mappings['protocoles'], $select['protocole'], 'p'); |
|
|
$where = array(); |
$idsImages = array_values(array_map(create_function('$a', 'return $a["id_image"];'), $images)); |
$where[] = sprintf('v.ce_image IN (%s)', |
245,12 → 245,12 |
($where ? implode(' AND ', $where) : 1), |
$ordreDesIdsRecus, |
__FILE__ . ':' . __LINE__); |
|
|
//echo "REQUETE: $req"; exit; |
|
return $db->recupererTous($req); |
} |
|
|
/** |
* Formater une observation depuis une ligne liaison |
* @param $liaison liaison issue de la recherche |
269,10 → 269,10 |
foreach ($votes as $vote) { |
$imgid = $vote['image.id']; |
$protoid = $vote['protocole.id']; |
|
|
// un vote sans image associée ? est-ce possible ? |
// if(!isset($images[$imgid])) continue; |
|
|
if(!array_key_exists('protocoles_votes', $images[$imgid]) || |
!array_key_exists($protoid, $images[$imgid]['protocoles_votes'])) { |
// extrait les champs spécifique au protocole (le LEFT JOIN de chargerVotesImage les ramène en doublons |