/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/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.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) { |