Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1665 → Rev 1666

/trunk/services/modules/0.1/observations/Observation.php
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