Rev 1681 | Blame | Last modification | View Log | RSS feed
<?php
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
/**
* PHP Version 5
*
* @category PHP
* @package jrest
* @author David Delon <david@tela-botanica.org>
* @author Aurelien Peronnet <aurelien@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @version SVN: <svn_id>
* @link /doc/jrest/
*/
/**
* CRUD observation
*
* in=utf8
* out=utf8
*
**/
class Inventory extends Cel {
// TODO: faire un descriptif du service
function getRessource(){
}
function getElement($uid){
// Controle detournement utilisateur
$this->controleUtilisateur($uid[0]);
$value=array();
if(!isset($uid[0])) {
return;
}
$parametres_recherche = array(array('ce_utilisateur',$uid[0]),array('ordre',$uid[1]));
$chercheur_observations = new RechercheObservation($this->config);
$retour_recherche = $chercheur_observations->rechercherObservations($uid[0], $parametres_recherche, 0, 1)->get();
$observation = array();
if(is_array($retour_recherche) && count($retour_recherche) > 0) {
$observation = $retour_recherche[0];
}
$observation = $this->formaterObservationVersTableauSequentiel($observation);
$output = json_encode($observation);
$this->envoyerJson($output);
return true;
}
private function formaterObservationVersTableauSequentiel(&$observation) {
if ($observation['date_observation']!="0000-00-00 00:00:00") {
list($year,$month,$day)= explode('-',$observation['date_observation']);
list($day)= explode(' ',$day);
$observation['date_observation']=$day."/".$month."/".$year;
}
$observation = array($observation['nom_sel'], $observation['nom_sel_nn'],
$observation['nom_ret'], $observation['nom_ret_nn'],
$observation['nt'], $observation['famille'], $observation['zone_geo'],
$observation['ce_zone_geo'], $observation['ordre'],
$observation['date_observation'], $observation['lieudit'],
$observation['station'], $observation['milieu'],
$observation['commentaire'], $observation['latitude'],
$observation['longitude']);
return $observation;
}
function updateElement($uid,$pairs) {
// Controle detournement utilisateur
$this->controleUtilisateur($uid[0]);
if (!isset($uid[1])) {
//TODO: envoyer un message d'erreur
return;
}
$uid[1] = rtrim($uid[1],',');
$champs_etendus = isset($pairs['obs_etendue']) ? json_decode(stripslashes($pairs['obs_etendue']),true) : null;
unset($pairs['obs_etendue']);
if(isset($pairs['date_observation']) && !empty($pairs['date_observation'])) {
$time = strtotime(str_replace("/", "-", $pairs['date_observation']));
if(!$time || $time > time()) {
throw new Exception('Date invalide');
}
}
$gestionnaire_observation = new GestionObservation($this->config);
$modification_observation = $gestionnaire_observation->modifierObservation($uid[0],$uid[1],$pairs);
if($champs_etendus != null) {
$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
$id_obs = $gestionnaire_observation->renvoyerIdPourOrdre($uid[0],$uid[1]);
foreach($champs_etendus as &$champ_etendu) {
$objet_champ_etendu = new ChampEtendu();
$objet_champ_etendu->id = $id_obs;
$objet_champ_etendu->cle = $champ_etendu['cle'];
$objet_champ_etendu->label = $champ_etendu['label'];
$objet_champ_etendu->valeur = $champ_etendu['valeur'];
$champ_etendu = $objet_champ_etendu;
}
// ajouterParLots modifie les champs et ajoute ceux qui existent déjà
$champs_supp = $gestion_champs_etendus->ajouterParLots($champs_etendus);
}
return true;
}
function createElement($pairs) {
// Controle detournement utilisateur
$this->controleUtilisateur($pairs['ce_utilisateur']);
$champs_etendus = isset($pairs['obs_etendue']) ? json_decode(stripslashes($pairs['obs_etendue']),true) : null;
unset($pairs['obs_etendue']);
if(isset($pairs['date_observation']) && !empty($pairs['date_observation'])) {
$time = strtotime(str_replace("/", "-", $pairs['date_observation']));
if(!$time || $time > time()) {
throw new Exception('Date invalide');
}
}
$gestionnaire_observation = new GestionObservation($this->config);
$id_nouvelle_obs = $gestionnaire_observation->ajouterObservation($pairs['ce_utilisateur'], $pairs);
if($champs_etendus != null) {
$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
foreach($champs_etendus as &$champ_etendu) {
$objet_champ_etendu = new ChampEtendu();
$objet_champ_etendu->id = $id_nouvelle_obs;
$objet_champ_etendu->cle = $champ_etendu['cle'];
$objet_champ_etendu->label = $champ_etendu['label'];
$objet_champ_etendu->valeur = $champ_etendu['valeur'];
$champ_etendu = $objet_champ_etendu;
}
$champs_supp = $gestion_champs_etendus->ajouterParLots($champs_etendus);
}
return true;
}
/**
* Supprime une observation
*
* uid[0] : utilisateur obligatoire
* uid[1] : ordres de l'observation à supprimer
*/
function deleteElement($uid){
// Controle detournement utilisateur
$this->controleUtilisateur($uid[0]);
if (!isset($uid[1])) {
//TODO: envoyer un message d'erreur
return;
}
$uid[1] = rtrim($uid[1],',');
$gestionnaire_observation = new GestionObservation($this->config);
$id_obs = $gestionnaire_observation->renvoyerIdPourOrdre($uid[0],$uid[1]);
$suppression_observation = $gestionnaire_observation->supprimerObservation($uid[0],$uid[1]);
$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
$champs_supp = $gestion_champs_etendus->vider($id_obs);
if ($suppression_observation) {
echo "OK";
}
exit() ;
}
}
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.11 2008-11-13 11:29:12 ddelon
* Reecriture gwt-ext
*
* Revision 1.10 2008-01-30 08:57:28 ddelon
* fin mise en place mygwt
*
* Revision 1.9 2007-05-22 12:54:09 ddelon
* Securisation acces utilisateur
*
*/
?>