Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 786 → Rev 787

/trunk/services/modules/0.1/Observations.php
25,6 → 25,7
private $parametres = array();
private $ressources = array();
private $methode = null;
private $projetNom = array();
private $serviceNom = array();
private $cheminCourant = null;
39,7 → 40,7
}
 
public function consulter($ressources, $parametres) {
$this->methode = 'consulter';
$resultat = '';
$reponseHttp = new ReponseHttp();
try {
54,6 → 55,18
$corps = $reponseHttp->getCorps();
return $corps;
}
public function ajouter($ressources, $requeteDonnees) {
$this->methode = 'ajouter';
$resultat = '';
try {
$this->initialiserRessourcesEtParametres($ressources, $requeteDonnees);
$this->conteneur = new Conteneur($this->parametres);
$resultat = $this->traiterRessources();
} catch (Exception $e) {
$reponseHttp->ajouterErreur($e);
}
}
 
private function initialiserRessourcesEtParametres($ressources, $parametres) {
$this->ressources = $ressources;
69,9 → 82,9
return $retour;
}
private function avoirRessourceIdentifiant() {
private function avoirRessourceIdentifiant($num) {
$presenceId = false;
if (is_numeric($this->ressources[0])) {
if (is_numeric($this->ressources[$num])) {
$presenceId = true;
} else {
$message = "Le service demandé '$service' nécessite d'avoir un identifiant d'image valide";
110,7 → 123,7
* */
$presenceRessourceService = false;
if (isset($this->ressources[0])) {
if ($this->avoirRessourceIdentifiant()) {
if ($this->avoirRessourceIdentifiant(0)) {
if (sizeof($this->ressources) == 1) {
$presenceRessourceService = true;
$this->serviceNom = 'observation';
130,15 → 143,17
private function avoirRessourceSousService() {
$presenceRessourceService = false;
$servicesDispo = Outils::recupererTableauConfig('servicesDispo');
$service = $this->ressources[1];
if (in_array($service, $servicesDispo)) {
$presenceRessourceService = true;
$this->serviceNom = 'votes-image';
} else {
$message = "Le service demandé '$service' n'est pas disponible pour le projet {$this->projetNom} !\n".
"Les services disponibles sont : ".implode(', ', $servicesDispo);
$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
throw new Exception($message, $code);
if ($this->avoirRessourceIdentifiant(1)) {
$service = $this->ressources[2];
if (in_array($service, $servicesDispo)) {
$presenceRessourceService = true;
$this->serviceNom = 'vote-observation';
} else {
$message = "Le service demandé '$service' n'est pas disponible pour le projet {$this->projetNom} !\n".
"Les services disponibles sont : ".implode(', ', $servicesDispo);
$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
throw new Exception($message, $code);
}
}
return $presenceRessourceService;
}
157,7 → 172,11
$this->conteneur->chargerConfiguration('config_'.$this->projetNom.'.ini');
require_once $chemin;
$service = new $classe($this->conteneur);
$retour = $service->consulter($this->ressources, $this->parametres);
if ($this->methode == 'consulter') {
$retour = $service->consulter($this->ressources, $this->parametres);
} elseif ($this->methode == 'ajouter') {
$retour = $service->ajouter($this->ressources, $this->parametres);
}
}
}
/trunk/services/modules/0.1/observations/VoteObservation.php
New file
0,0 → 1,54
<?php
// declare(encoding='UTF-8');
/**
* Le web service image récupère toutes les données de la table del_obs_images
* pour retourner une liste d'images associée à une observation
*
* @category php 5.2
* @package del
* @subpackage images
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version $Id: Bdd.php 403 2012-02-22 14:35:20Z gduche $
* @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
*/
 
class VoteObservation {
private $conteneur;
private $gestionBdd;
private $bdd;
public function __construct(Conteneur $conteneur = null) {
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
$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
* 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
* */
public function consulter($ressources, $parametres) {
RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
RestServeur::ajouterMessage("Le service 'images/#id/#id_proposition/vote' n'autorise pas la consultation.");
}
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());';
$resultatsVotes = $this->bdd->requeter($insertion);
if ($resultatsVotes == false) {
RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
} else {
RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_CREATION_OK);
}
}
}
?>
/trunk/services/modules/0.1/observations/Observation.php
25,6 → 25,7
public function __construct(Conteneur $conteneur = null) {
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
$this->conteneur->chargerConfiguration('config_votes.ini');
$this->gestionBdd = $conteneur->getGestionBdd();
$this->bdd = $this->gestionBdd->getBdd();
}
63,6 → 64,7
* */
private function configurer($ressources) {
$this->mappingObservation = $this->conteneur->getParametre('mapping_observation');
$this->mappingVotes = $this->conteneur->getParametre('mapping_votes');
if (empty($ressources) || sizeof($ressources) > 1 ) {
$e = 'Le service observation accepete 1 et 1 seule ressource';
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
168,11 → 170,25
$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) {
if ($commentaire['nom_sel'] != null) {
$commentaire['votes'] = $this->chargerVotes($commentaire['id_commentaire']);
}
$commentaires[$id] = $commentaire;
}
$observation['commentaires'] = $commentaires;
return $observation;
}
private function chargerVotes($id_commentaire) {
$requeteVotes = 'SELECT * FROM '.
$this->gestionBdd->formaterTable('del_commentaire_vote').
'WHERE ce_proposition = '.$this->proteger($id_commentaire);
$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
$votes = $this->formaterVotes($resultatsVotes);
return $votes;
}
/*-------------------------------------------------------------------------------
233,5 → 249,19
return $this->bdd->proteger($valeur);
}
}
/**
* Formater un vote en fonction du fichier de configuration config_votes.ini
* @param $votes array()
* */
private function formaterVotes($votes) {
$retour = array();
foreach ($votes as $vote) {
foreach ($vote as $p=>$valeur) {
$retour[$vote['id_vote']][$this->mappingVotes[$p]] = $valeur;
}
}
return $retour;
}
}
?>
/trunk/services/modules/0.1/observations/ListeObservations.php
28,6 → 28,7
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
$this->conteneur->chargerConfiguration('config_departements.ini');
$this->conteneur->chargerConfiguration('config_observations.ini');
$this->conteneur->chargerConfiguration('config_votes.ini');
$this->navigation = $conteneur->getNavigation();
$this->masque = $conteneur->getMasque();
$this->gestionBdd = $conteneur->getGestionBdd();
70,6 → 71,7
private function configurer() {
$this->mappingFiltre = $this->conteneur->getParametre('mapping_masque');
$this->mappingObservation = $this->conteneur->getParametre('mapping_observation');
$this->mappingVotes = $this->conteneur->getParametre('mapping_votes');
}
/**
313,7 → 315,7
$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
foreach ($resultatsVotes as $vote) {
$propositions[$vote['ce_proposition']]['votes'][] = $vote;
$propositions[$vote['ce_proposition']]['votes'][] = $this->formaterVotes($vote);
}
return $propositions;
}
385,6 → 387,18
return $urlImage;
}
/**
* Formater un vote en fonction du fichier de configuration config_votes.ini
* @param $votes array()
* */
private function formaterVotes($vote) {
$retour = array();
foreach ($vote as $param=>$valeur) {
$retour[$vote['id_vote']][$this->mappingVotes[$param]] = $valeur;
}
return $retour;
}
private function proteger($valeur) {
if (is_array($valeur)) {
return $this->bdd->protegerTableau($valeur);