Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 840 → Rev 841

/trunk/services/modules/0.1/observations/VoteObservation.php
14,10 → 14,10
* @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
*/
 
class VoteObservation {
private $conteneur;
private $gestionBdd;
private $bdd;
class VoteObservation extends RestService {
protected $conteneur;
protected $gestionBdd;
protected $bdd;
public function __construct(Conteneur $conteneur = null) {
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
38,10 → 38,10
}
public function ajouter($ressources, $parametres) {
$insertion = 'INSERT INTO `del`.`del_commentaire_vote` '.
'(`ce_proposition` , `ce_utilisateur` , `valeur` , `date`) '.
'VALUES ('.$ressources[1].','.$parametres['utilisateur'].','.
$parametres['valeur'].', NOW());';
$insertion = 'INSERT INTO del_commentaire_vote '.
'(ce_proposition , ce_utilisateur , valeur , date) '.
'VALUES ('.$this->proteger($ressources[1]).','.$this->proteger($parametres['utilisateur']).','.
$this->proteger($parametres['valeur']).', NOW());';
$resultatsVotes = $this->bdd->requeter($insertion);
if ($resultatsVotes == false) {
RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
49,5 → 49,28
RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_CREATION_OK);
}
}
public function modifier($ressources, $parametres) {
$modification = 'UPDATE del_commentaire_vote '.
'SET valeur ='.$this->proteger($parametres['valeur']).', '.
'date = NOW() '.
'WHERE '.
'ce_proposition = '.$this->proteger($ressources[1]).' AND '.
'ce_utilisateur = '.$this->proteger($parametres['utilisateur']);
$resultatsVotes = $this->bdd->requeter($modification);
if ($resultatsVotes == false) {
RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
} else {
RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_OK);
}
}
protected function proteger($valeur) {
if (is_array($valeur)) {
return $this->bdd->protegerTableau($valeur);
} else {
return $this->bdd->proteger($valeur);
}
}
}
?>
/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;
}
}
/trunk/services/modules/0.1/observations/ListeObservations.php
441,7 → 441,7
$requetePropositions = 'SELECT * FROM '.$this->gestionBdd->formaterTable('del_commentaire', 'dc').
'WHERE dc.nom_sel IS NOT NULL AND ce_observation = '.$observation['id_observation'];
$propositions = $this->bdd->recupererTous($requetePropositions);
$observations[$id]['propositions'] = $this->formaterDeterminations($propositions);
$observations[$id]['commentaires'] = $this->formaterDeterminations($propositions);
}
return $observations;
}
469,7 → 469,7
$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
foreach ($resultatsVotes as $vote) {
$propositions[$vote['ce_proposition']]['votes'][] = $this->formaterVotes($vote);
$propositions[$vote['ce_proposition']]['votes'][$vote['id_vote']] = $this->formaterVotes($vote);
}
return $propositions;
}
483,8 → 483,8
'FROM '.$this->gestionBdd->formaterTable('del_commentaire').
'WHERE ce_proposition IN ('.implode(', ', $ids_proposition).')';
$nbCommentaires = $this->bdd->recuperer($requeteNbCommentaires);
foreach ($nbCommentaires as $vote) {
$propositions[$vote['ce_proposition']]['commentaires']= $vote;
foreach ($nbCommentaires as $nbCommentaire) {
$propositions[$nbCommentaire['ce_proposition']]['nb_commentaires']= $nbCommentaire;
}
return $propositions;
}
548,7 → 548,7
private function formaterVotes($vote) {
$retour = array();
foreach ($vote as $param=>$valeur) {
$retour[$vote['id_vote']][$this->mappingVotes[$param]] = $valeur;
$retour[$this->mappingVotes[$param]] = $valeur;
}
return $retour;
}
/trunk/services/modules/0.1/Observations.php
69,6 → 69,20
$reponseHttp->emettreLesEntetes();
}
}
public function modifier($ressources, $requeteDonnees) {
$this->methode = 'modifier';
$resultat = '';
$reponseHttp = new ReponseHttp();
try {
$this->initialiserRessourcesEtParametres($ressources, $requeteDonnees);
$this->conteneur = new Conteneur($this->parametres);
$resultat = $this->traiterRessources();
} catch (Exception $e) {
$reponseHttp->ajouterErreur($e);
$reponseHttp->emettreLesEntetes();
}
}
 
private function initialiserRessourcesEtParametres($ressources, $parametres) {
$this->ressources = $ressources;
178,6 → 192,8
$retour = $service->consulter($this->ressources, $this->parametres);
} elseif ($this->methode == 'ajouter') {
$retour = $service->ajouter($this->ressources, $this->parametres);
} elseif ($this->methode == 'modifier') {
$retour = $service->modifier($this->ressources, $this->parametres);
}
}
}
/trunk/services/modules/0.1/images/ListeImages.php
435,8 → 435,6
$this->chargerClauseWhereVotes();
$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
//TODO : faire une méthode formater vote
$votes = $this->formaterVotes($resultatsVotes);
foreach ($images as $id => $image) {