Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2457 → Rev 2458

/trunk/jrest/services/InventoryObservationList.php
1,42 → 1,43
<?php
// declare(encoding='UTF-8');
/**
* PHP Version 5.2
*
* @category PHP
* @package jrest
* @author Raphaël Droz <raphael@tela-botanica.org>
* @author Aurelien Peronnet <aurelien@tela-botanica.org>
* @copyright 2010, 2013 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @link /doc/jrest/
*
* InventoryObservationList.php
* Cas d'utilisation :
* 1: Service recherche d'observations a partir de divers critères
* GET : Service recherche d'observations a partir de divers critères
* a: Le service recherche les observations correspondant aux critères demandés
* b: Le service renvoie la liste des observations correspondantes
*
* 2: Service modification en masse d'observations
*
* POST : Service modification en masse d'observations
* a: Le service recherche les observations correspondant aux identifiants donnés
* b: Le service modifie les observations correspondantes avec les infos données en paramètres
*
* 3: Service de suppression d'observations en masse
*
* DELETE : Service de suppression d'observations en masse
* a: Le service recherche les observations correspondant aux critères demandés
* b: Le service supprime la liste des observations correspondantes
*
* @internal Mininum PHP version : 5.2
* @category CEL
* @package Services
* @subpackage Mots-clés
* @version 0.1
* @author Mathias CHOUET <mathias@tela-botanica.org>
* @author Raphaël Droz <raphael@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Aurelien PERONNET <aurelien@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
*/
class InventoryObservationList extends Cel {
 
/**
* renvoie les observations correspondant au critères de filtrage
*
* Renvoie les observations correspondant au critères de filtrage
*
* uid[0] : utilisateur obligatoire
* uid[1] : criteres de filtrage de la forme critere1=valeur1&critere2=valeur2
*/
function getElement($uid)
{
*/
public function getElement($uid) {
// Controle detournement utilisateur
$this->controleUtilisateur($uid[0]);
$this->controleUtilisateur($uid[0]);
 
$chercheur_observations = new RechercheObservation($this->config);
 
49,96 → 50,87
$numero_page = $criteres['numero_page'];
unset($criteres['numero_page']);
$taille_page = $criteres['limite'];
unset($criteres['limite']);
unset($criteres['limite']);
}
 
$debut = $taille_page*$numero_page ;
 
$retour = $chercheur_observations->rechercherObservations($uid[0], $criteres, $debut, $taille_page)->get();
$retour_formate = $chercheur_observations->formaterPourEnvoiCel($retour);
 
$this->envoyerJson($retour_formate);
return true;
$this->envoyerJson($retour_formate);
return true;
}
 
/**
* met à jour les métadonnées d'une liste d'observations
*
*
* uid[0] : utilisateur obligatoire
* uid[1] : ordres des observations à modifier séparés par des virgules
* pairs : données à mettre à jour sous la forme de clés => valeurs
*/
function updateElement($uid,$pairs) {
 
*/
public function updateElement($uid,$pairs) {
// Controle detournement utilisateur
$this->controleUtilisateur($uid[0]);
 
if (!isset($uid[1])) {
//TODO: envoyer un message d'erreur
return;
return;
}
 
$obs = array_filter(explode(',', $uid[1]), 'is_numeric');
if(count($obs) == 0) {
return;
}
$obs = array_filter(explode(',', $uid[1]), 'is_numeric');
if (count($obs) == 0) {
return;
}
 
$gestionnaire_observation = new GestionObservation($this->config);
if(count($obs) == 1) {
return $gestionnaire_observation->modifierObservation($uid[0], $obs[0], $pairs);
}
if (count($obs) == 1) {
return $gestionnaire_observation->modifierObservation($uid[0], $obs[0], $pairs);
}
 
// cas de mise à jour de multiples observations:
$ret = GestionObservation::modifierMultiplesObservation($uid[0], $obs, $pairs);
if($ret === FALSE) return FALSE; // JRest::badRequest();
if($ret === 0) {
header('HTTP/1.0 304 Not Modified');
die;
}
 
header('HTTP/1.0 200 OK'); // et non pas une 201 !
// die(); // non, car incompatible avec PHPUnit
// throw(new Exception()); // non, lance une 400 (cf JRest::updateElement())
// return TRUE; // non, lance une 201
// return FALSE; // non, lance une 400
 
die; // tant pis
// cas de mise à jour de multiples observations:
$ret = GestionObservation::modifierMultiplesObservation($uid[0], $obs, $pairs);
if ($ret === false) {
return false; // JRest::badRequest();
}
if ($ret === 0) {
header('HTTP/1.0 304 Not Modified');
} else {
header('HTTP/1.0 200 OK'); // et non pas une 201 !
}
die();
}
 
/**
* Supprime une liste d'observations
*
*
* uid[0] : utilisateur obligatoire
* uid[1] : ordres des observations à supprimer séparés par des virgules
*/
function deleteElement($uid)
{
*/
public function deleteElement($uid) {
// Controle detournement utilisateur
$this->controleUtilisateur($uid[0]);
 
if (!isset($uid[1])) {
//TODO: envoyer un message d'erreur
return;
return;
}
$uid[1] = rtrim($uid[1],',');
$gestionnaire_observation = new GestionObservation($this->config);
$uid[1] = rtrim($uid[1], ',');
 
$gestionnaireObs = new GestionObservation($this->config);
$tableau_ordres = explode(',', $uid[1]);
foreach($tableau_ordres as $ordre) {
$ids_obs[] = $gestionnaire_observation->renvoyerIdPourOrdre($uid[0], $ordre);
foreach ($tableau_ordres as $ordre) {
$ids_obs[] = $gestionnaireObs->renvoyerIdPourOrdre($uid[0], $ordre);
}
$suppression_observations = $gestionnaire_observation->supprimerObservation($uid[0],$uid[1]);
$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
$champs_supp = $gestion_champs_etendus->viderParLots($ids_obs);
 
$suppression_observations = $gestionnaireObs->supprimerObservation($uid[0], $uid[1]);
 
$gestionnaireChampsEtendus = new GestionChampsEtendus($this->config, 'obs');
$gestionnaireChampsEtendus->viderParLots($ids_obs);
 
if ($suppression_observations) {
echo "OK";
echo 'OK';
}
exit() ;
exit() ;
}
}
?>
}