Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 840 → Rev 841

/trunk/services/modules/0.1/observations/Observation.php
22,10 → 22,12
private $gestionBdd;
private $bdd;
private $id_observation;
private $imageIds;
public function __construct(Conteneur $conteneur = null) {
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
$this->conteneur->chargerConfiguration('config_votes.ini');
$this->conteneur->chargerConfiguration('config_mapping_votes.ini');
$this->gestionBdd = $conteneur->getGestionBdd();
$this->bdd = $this->gestionBdd->getBdd();
}
156,6 → 158,7
$images = $this->bdd->recupererTous($requeteImages);
$images = $this->formaterImages($images);
$images = $this->chargerVotesImage($images);
$observation['images'] = $images;
return $observation;
162,6 → 165,43
}
/**
* Charger les votes pour chaque image
* */
private function chargerVotesImage($images) {
$requeteVotes = 'SELECT v.*, p.* FROM '.
$this->gestionBdd->formaterTable('del_image_vote', 'v').
' INNER JOIN del_image_protocole p '.
'ON v.ce_protocole = p.id_protocole '.
$this->chargerClauseWhereVotesImage();
$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
 
$votes = $this->formaterVotesImages($resultatsVotes);
 
foreach ($images as $id => $image) {
if (isset($votes[$image['id_image']])) {
foreach($votes[$image['id_image']] as $id_vote => $vote_image) {
$images[$id]['protocoles_votes'][$id_vote] = $vote_image;
}
}
}
return $images;
}
private function chargerClauseWhereVotesImage() {
if (sizeof($this->imageIds) > 0) {
$chaineImageIds = implode(',', $this->imageIds);
$where[] = 'v.ce_image IN ('.$chaineImageIds.')';
}
if (isset($this->parametres['protocole'])) {
$where[] = 'v.ce_protocole = '.$this->proteger($this->parametres['protocole']);
}
$where = (!empty($where)) ? 'WHERE '.implode(' AND ', $where) : '';
return $where;
}
/**
* Récupérer tous les commentaires au total
* @param array $observations la liste des observations à mettre à jour
* */
170,13 → 210,15
$requeteCommentaires = 'SELECT * FROM '.$this->gestionBdd->formaterTable('del_commentaire', 'dc').
'WHERE ce_observation = '.$observation['id_observation'];
$commentaires = $this->bdd->recupererTous($requeteCommentaires);
foreach ($commentaires as $id=>$commentaire) {
$commentaires_formates = array();
foreach ($commentaires as $commentaire) {
if ($commentaire['nom_sel'] != null) {
$commentaire['votes'] = $this->chargerVotes($commentaire['id_commentaire']);
}
$commentaires[$id] = $commentaire;
$commentaires_formates[$commentaire['id_commentaire']] = $commentaire;
}
$observation['commentaires'] = $commentaires;
$observation['commentaires'] = $commentaires_formates;
return $observation;
}
186,7 → 228,10
$this->gestionBdd->formaterTable('del_commentaire_vote').
'WHERE ce_proposition = '.$this->proteger($id_commentaire);
$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
$votes = $this->formaterVotes($resultatsVotes);
$votes = array();
foreach ($resultatsVotes as $vote) {
$votes[$vote['id_vote']] = $this->formaterVotes($vote);
}
return $votes;
}
202,6 → 247,8
private function formaterImages($images) {
$imagesRetour = array();
foreach ($images as $image) {
$this->imageIds[] = $image['id_image'];
$imageCourante = array();
$imageCourante['id_image'] = $image['id_image'];
$imageCourante['date'] = $image['date_prise_de_vue'];
254,13 → 301,36
* Formater un vote en fonction du fichier de configuration config_votes.ini
* @param $votes array()
* */
private function formaterVotes($votes) {
private function formaterVotes($vote) {
$retour = array();
foreach ($vote as $param => $valeur) {
$retour[$this->mappingVotes[$param]] = $valeur;
}
return $retour;
}
/**
* Formater une observation depuis une ligne liaison
* @param $liaison liaison issue de la recherche
* @return $observation l'observation mise en forme
* */
private function formaterVotesImages($votes) {
$retour = array();
foreach ($votes as $vote) {
foreach ($vote as $p=>$valeur) {
$retour[$vote['id_vote']][$this->mappingVotes[$p]] = $valeur;
$retour_vote = array();
foreach ($vote as $param=>$valeur) {
if (strpos($this->mappingVotes[$param], 'protocole.') === 0) {
$retour_protocole[$this->mappingVotes[$param]] = $valeur;
} else {
$retour_vote[$this->mappingVotes[$param]] = $valeur;
}
}
if (!isset($retour[$vote['ce_image']][$vote['ce_protocole']])) {
$retour[$vote['ce_image']][$vote['ce_protocole']] = $retour_protocole;
}
$retour[$vote['ce_image']][$vote['ce_protocole']]['votes'][$vote['id_vote']] = $retour_vote;
}
return $retour;
}
}