/trunk/jrest/services/InventoryByDept.php |
---|
File deleted |
\ No newline at end of file |
/trunk/jrest/services/InventoryCheck.php |
---|
File deleted |
\ No newline at end of file |
/trunk/jrest/services/TestNameParser.php |
---|
File deleted |
/trunk/jrest/services/NameSearch.php |
---|
1,75 → 1,41 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author David Delon <david.delon@clapas.net> |
* @copyright 2010 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/jrest/ |
*/ |
/** |
* |
* in : utf8 |
* out : utf8 |
* |
* NameSearch.php |
* |
* Cas d'utilisation : |
* Service completion nom scientifique |
* |
* 1 : L'application recoit un debut de nom scientifique ainsi qu'un code de référentiel |
* 2 : Si le genre recu est >1, l'application retourne les 50 premieres genre commencant par ce prefixe |
* 3 : Si l'espece est presente l'application retourne les 50 premieres genre+espece commencant par ce prefixe |
*/ |
* Service de complétion du nom scientifique. |
* |
* Cas d'utilisation : |
* 1 : L'application recoit un debut de nom scientifique ainsi qu'un code de référentiel |
* 2 : Si le genre recu est >1, l'application retourne les 50 premieres genre commencant par ce prefixe |
* 3 : Si l'espece est presente l'application retourne les 50 premieres genre+espece commencant par ce prefixe |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Auto-complétions |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 NameSearch extends Cel { |
public function getRessource(){ |
//TODO: description du service à renvoyer |
print "[]"; |
return; |
//TODO: description du service à renvoyer |
print '[]'; |
return; |
} |
public function getElement($uid){ |
$liste_genre_espece = array(); |
$referentiel = null; |
$genre = null; |
$espece = null; |
if(isset($uid[0])) { |
$referentiel = $uid[0]; |
} |
if(isset($uid[1])) { |
$genre = $uid[1]; |
} |
if(isset($uid[2])) { |
$espece = $uid[2]; |
} |
$referentiel = isset($uid[0]) ? $uid[0] : null; |
$genre = isset($uid[1]) ? $uid[1] : null; |
$espece = isset($uid[2]) ? $uid[2] : null; |
$chercheur_infos_taxon = new RechercheInfosTaxonBeta($this->config, $referentiel); |
$liste_genre_espece = $chercheur_infos_taxon->rechercherGenreEspeceSurPrefixe($genre,$espece); |
$this->envoyerJson($liste_genre_espece); |
return true; |
$this->envoyerJson($liste_genre_espece); |
return true; |
} |
} |
/* +--Fin du code ---------------------------------------------------------------------------------------+ |
* $Log$ |
* Revision 1.6 2008-01-30 08:57:28 ddelon |
* fin mise en place mygwt |
* |
* Revision 1.5 2007-05-21 18:13:30 ddelon |
* Refactoring et documentation |
* |
* |
*/ |
?> |
} |
/trunk/jrest/services/ExportXLS.php |
---|
1,16 → 1,7 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* @category PHP |
* @package jrest |
* @author Raphaël Droz <raphael@tela-botania.org> |
* @copyright 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> |
*/ |
/** |
* Service d'export de données d'observation du CEL au format XLS |
* Service d'export de données d'observation du CEL au format XLS. |
* |
* Format du service : |
* POST /ExportXLS |
19,7 → 10,7 |
* |
* Les données POST acceptées sont: |
* range (obligatoire): un range d'id_observation sous la forme d'entier ou d'intervalles d'entiers |
* séparés par des virgules ou bien '*' (pour toutes) |
* séparés par des virgules ou bien '*' (pour toutes) |
* TODO: limit |
* TODO: départ |
* TODO: sets (ou colonnes, ou extended) |
30,50 → 21,60 |
* |
* Si <Utilisateur> est fourni, le observations seront le résultat de l'intersection des 2 contraintes |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@tela-botanica.org> |
* @author Raphaël Droz <raphael@tela-botania.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> |
*/ |
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(dirname(realpath(__FILE__))) . '/lib'); |
// TERM |
ini_set('html_errors', 0); |
ini_set('xdebug.cli_color', 2); |
require_once('lib/PHPExcel/Classes/PHPExcel.php'); |
require_once('lib/FormateurGroupeColonne.php'); |
require_once 'lib/PHPExcel/Classes/PHPExcel.php'; |
require_once 'lib/FormateurGroupeColonne.php'; |
class ExportXLS extends Cel { |
private $id_utilisateur = NULL; |
private $parametres_defaut = array("range" => "*", |
"format" => "CSV"); |
private $parametres_defaut = array('range' => '*', 'format' => 'CSV'); |
private $filtres_autorises = array( |
'id_utilisateur' => 'id_utilisateur', |
'utilisateur' => 'courriel_utilisateur', |
'commune' => 'zone_geo', |
'dept' => 'departement', |
'projet' => 'mots_cles', |
'num_taxon' => 'nt', |
'date_debut' => 'date_debut', |
'date_fin' => 'date_fin', |
'taxon' => 'taxon' |
'id_utilisateur' => 'id_utilisateur', |
'utilisateur' => 'courriel_utilisateur', |
'commune' => 'zone_geo', |
'dept' => 'departement', |
'projet' => 'mots_cles', |
'num_taxon' => 'nt', |
'date_debut' => 'date_debut', |
'date_fin' => 'date_fin', |
'taxon' => 'taxon' |
); |
function ExportXLS($config) { |
public function __construct($config) { |
parent::__construct($config); |
} |
function getRessource() { |
public function getRessource() { |
return $this->getElement(array()); |
} |
function getElement($uid) { |
$parametres_format = $this->traiterParametresFormat($uid, $_GET); |
public function getElement($uid) { |
$parametres_format = $this->traiterParametresFormat($uid, $_GET); |
$filtres = $this->traiterFiltres($_GET); |
$this->export($parametres_format, $filtres); |
exit; |
exit(); |
} |
function traiterParametresFormat($uid, $params) { |
private function traiterParametresFormat($uid, $params) { |
$parametres = $this->parametres_defaut; |
if(isset($params['format'])) { |
if (isset($params['format'])) { |
if($params['format'] == 'csv') $parametres['format'] = 'CSV'; |
if($params['format'] == 'xls') $parametres['format'] = 'Excel5'; |
if($params['format'] == 'xlsx') $parametres['format'] = 'Excel2007'; |
80,44 → 81,42 |
if($params['format'] == 'pdf') $parametres['format'] = 'pdf'; |
} |
// TODO: $params['part'] pour le multi-part |
$parametres['widget'] = isset($params['widget']) ? $params['widget'] : 'CEL'; |
$parametres['widget'] = isset($params['widget']) ? $params['widget'] : 'CEL'; |
$parametres['debut'] = isset($params['debut']) ? intval($params['debut']) : 0; |
$parametres['limite'] = isset($params['limite']) ? intval($params['limite']) : 0; |
$parametres['id_utilisateur'] = $this->traiterIdUtilisateur($uid); |
$parametres['groupe_champs'] = isset($params['colonnes']) ? $params['colonnes'] : 'standard,avance'; |
return $parametres; |
} |
function traiterIdUtilisateur($uid) { |
private function traiterIdUtilisateur($uid) { |
$id_utilisateur = null; |
// TODO: controleUtilisateur() |
if(isset($uid[0])) { |
if (isset($uid[0])) { |
$id_utilisateur = intval($uid[0]); |
} |
return $id_utilisateur; |
} |
function traiterFiltres($params) { |
private function traiterFiltres($params) { |
$obs_ids = $this->traiterObsIds($params); |
$filtres = array(); |
if(!$obs_ids || count($obs_ids) == 1 && $obs_ids[0] == '*') { |
if (!$obs_ids || count($obs_ids) == 1 && $obs_ids[0] == '*') { |
unset($filtres['sql_brut']); |
} |
else { |
} else { |
$filtres = Array('sql_brut' => |
sprintf('id_observation IN (%s)', implode(',', $obs_ids))); |
} |
foreach($params as $cle => $valeur) { |
if(trim($valeur) != '' && isset($this->filtres_autorises[$cle])) { |
foreach ($params as $cle => $valeur) { |
if (trim($valeur) != '' && isset($this->filtres_autorises[$cle])) { |
$filtres[$this->filtres_autorises[$cle]] = $valeur; |
} |
} |
return $filtres; |
} |
function traiterObsIds($params) { |
private function traiterObsIds($params) { |
$obs_ids = Array('*'); |
if (isset($params['range']) && trim($params['range']) != '*') { |
// trim() car: `POST http://url<<<"range=*"` |
128,10 → 127,10 |
/* |
* $param: Tableau associatif, indexes supportés: |
* - widget: le nom du widget d'origine (utilisé pour les méta-données du tableur) |
* - widget: le nom du widget d'origine (utilisé pour les méta-données du tableur) |
* |
*/ |
function export(Array $parametres_format = Array(),Array $filtres = array()) { |
private function export(Array $parametres_format = Array(),Array $filtres = array()) { |
$chercheur_observations = new RechercheObservation($this->config); |
$observations = $chercheur_observations |
139,13 → 138,15 |
->get(); |
// debug //echo ($chercheur_observations->requete_selection_observations); |
// XXX: malheureusement l'instance de JRest n'est pas accessible ici |
if(!$observations) { |
if (!$observations) { |
header('HTTP/1.0 204 No Content'); |
exit; |
exit(); |
} |
if($parametres_format['format'] == 'pdf') { |
if(count($observations) > 300) die('too much'); |
if ($parametres_format['format'] == 'pdf') { |
if (count($observations) > 300) { |
die('too much'); |
} |
require_once('GenerateurPDF.php'); |
$pdf = new GenerateurPDF(); |
153,7 → 154,7 |
//$pdf->export1($observations); |
//$pdf->export2($observations); |
$pdf->pdf->Output('etiquettes.pdf', 'I'); |
die; |
die(); |
} |
$colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($parametres_format['groupe_champs']); |
173,12 → 174,12 |
$this->envoyerFeuille($objPHPExcel, $parametres_format); |
} |
private function envoyerFeuille($objPHPExcel, $parametres_format) { |
header("Content-Type: application/vnd.ms-excel"); |
header("Content-Disposition: attachment; filename=\"liste.xls\"; charset=utf-8"); |
header("Cache-Control: max-age=0"); |
header('Content-Type: application/vnd.ms-excel'); |
header('Content-Disposition: attachment; filename="liste.xls"; charset=utf-8'); |
header('Cache-Control: max-age=0'); |
// csv|xls|xlsx => CSV|Excel5|Excel2007 |
// Note: le format Excel2007 utilise un fichier temporaire |
$generateur = PHPExcel_IOFactory::createWriter($objPHPExcel, $parametres_format['format']); |
185,43 → 186,44 |
$generateur->save('php://output'); |
exit; |
} |
public function traiterLigneObservation(&$obs, &$colonnes, &$feuille, $no_ligne) { |
private function traiterLigneObservation(&$obs, &$colonnes, &$feuille, $no_ligne) { |
$no_colonne = 0; |
foreach($colonnes as $abbrev => $colonne) { |
foreach ($colonnes as $abbrev => $colonne) { |
$valeur = null; |
if($colonne['extra'] == 2 || ! is_null($colonne['dyna'])) continue; |
if ($colonne['extra'] == 2 || ! is_null($colonne['dyna'])) { |
continue; |
} |
// valeur direct depuis cel_obs ? |
if(isset($obs[$abbrev])) $valeur = $obs[$abbrev]; |
if (isset($obs[$abbrev])) { |
$valeur = $obs[$abbrev]; |
} |
// pré-processeur de la champs |
if(function_exists($colonne['fonction'])) { |
if (function_exists($colonne['fonction'])) { |
$valeur = $colonne['fonction']($valeur); |
} elseif(method_exists('FormateurGroupeColonne', $colonne['fonction'])) { |
} else if (method_exists('FormateurGroupeColonne', $colonne['fonction'])) { |
$valeur = call_user_func(array('FormateurGroupeColonne', $colonne['fonction']), $valeur); |
} elseif(method_exists(__CLASS__, $colonne['fonction'])) { |
} else if (method_exists(__CLASS__, $colonne['fonction'])) { |
$valeur = call_user_func(array(__CLASS__, $colonne['fonction']), $valeur); |
} elseif($colonne['fonction']) { |
} else if ($colonne['fonction']) { |
die("méthode {$colonne['fonction']} introuvable"); |
} |
// fonction pour obtenir des champs (étendus) |
elseif(function_exists($colonne['fonction_data'])) { |
} else if (function_exists($colonne['fonction_data'])) { // fonction pour obtenir des champs (étendus) |
$valeur = $colonne['fonction_data']($obs); |
} |
elseif(method_exists(__CLASS__, $colonne['fonction_data'])) { |
} else if (method_exists(__CLASS__, $colonne['fonction_data'])) { |
$valeur = call_user_func(array(__CLASS__, $colonne['fonction_data']), $obs); |
} |
// // cette section devrait être vide: |
// // cas particuliers ingérable avec l'architecture actuelle: |
if(false && $abbrev == 'date_observation' && $valeur == "0000-00-00") { |
/* blah */ |
if (false && $abbrev == 'date_observation' && $valeur == "0000-00-00") { |
/* blah */ |
} |
if($abbrev == 'images') { |
if ($abbrev == 'images') { |
$valeur = FormateurGroupeColonne::getImages($obs, $this->id_utilisateur, $this); |
} |
if($abbrev == 'nom-commun') { |
if ($abbrev == 'nom-commun') { |
$valeur = FormateurGroupeColonne::getNomCommun_v4($obs, $this); |
} |
230,29 → 232,29 |
$no_colonne++; |
} |
} |
private function gerenerFeuilleImportFormatee($parametres_format) { |
$objPHPExcel = new PHPExcel(); |
$objPHPExcel->getProperties()->setCreator($parametres_format['widget']) // ou $uid ? |
->setLastModifiedBy("XX") // TODO: $uid |
->setTitle("Export des observation du carnet en ligne") // TODO |
->setSubject("Export") // TODO |
->setDescription("Export"); |
//->setKeywords("office PHPExcel php") |
//->setCategory("Test result file") |
->setLastModifiedBy("XX") // TODO: $uid |
->setTitle("Export des observation du carnet en ligne") // TODO |
->setSubject("Export") // TODO |
->setDescription("Export"); |
$objPHPExcel->getActiveSheet()->setTitle("Observations"); |
return $objPHPExcel; |
} |
private function formaterColonnesFeuille(&$feuille, &$colonnes, $parametres_format) { |
$colid = 0; |
foreach($colonnes as $colonne) { |
if($colonne['extra'] == 2) continue; |
foreach ($colonnes as $colonne) { |
if ($colonne['extra'] == 2) { |
continue; |
} |
$feuille->setCellValueByColumnAndRow($colid, 1, $colonne['nom']); |
if($colonne['extra'] == 1) { |
if ($colonne['extra'] == 1) { |
$feuille->getStyleByColumnAndRow($colid, 1)->getBorders()->applyFromArray( |
array( |
'allborders' => array( |
262,7 → 264,7 |
) |
); |
} |
if(! $colonne['importable']) { |
if (! $colonne['importable']) { |
$feuille->getStyleByColumnAndRow($colid, 1)->getFill()->applyFromArray( |
array( |
'type' => PHPExcel_Style_Fill::FILL_SOLID, |
270,7 → 272,6 |
) |
); |
} |
$colid++; |
} |
} |
284,10 → 285,12 |
$inSets = explode(',', $in); |
$outSets = array(); |
foreach($inSets as $inSet) { |
foreach ($inSets as $inSet) { |
list($start,$end) = explode('-', $inSet . '-' . $inSet); |
// ignore les ranges trop importants |
if($start > 10000000 || $end > 10000000 || abs($start-$end) > 10000) continue; |
if ($start > 10000000 || $end > 10000000 || abs($start-$end) > 10000) { |
continue; |
} |
$outSets = array_merge($outSets,range($start,$end)); |
} |
$outSets = array_unique($outSets); |
/trunk/jrest/services/InventoryImageCount.php |
---|
1,58 → 1,46 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* @author Aurélien 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> |
* @version $Id$ |
* @copyright © 2010, Aurélien Peronnet |
*/ |
/** |
* InventoryImageCount.php |
* |
* in : utf8 |
* out : utf8 |
* Cas d'utilisation : |
* Service recherche du nombre a partir de divers critères |
* |
* |
* 2: Le service recherche le nombre d'images correspondant aux critères demandés |
* 3: Le service renvoie le nombre calculé |
*/ |
class InventoryImageCount extends Cel { |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryImageCount extends Cel { |
/** |
* renvoie le nombre d'images correspondant aux criteres |
* Renvoie le nombre d'images correspondant aux criteres |
* uid[0] : utilisateur obligatoire |
* uid[1] : critères de filtrage de la forme critère1=valeur1;critère2=valeur2 |
*/ |
function getElement($uid) |
{ |
//TODO : remplacer le contenu du $uid[1] par le tableau $_GET; |
public function getElement($uid) { |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
$chercheur_images = new RechercheImage($this->config); |
$numero_page = 0; |
$taille_page = 50; |
$criteres = array(); |
$criteres = $_GET; |
$chercheurImages = new RechercheImage($this->config); |
$retour = $chercheurImages->compterImages($uid[0], $criteres); |
$retour = $chercheur_images->compterImages($uid[0], $criteres); |
$retour_encode = json_encode($retour) ; |
$retour_encode = json_encode($retour); |
$retour_encode = $this->nettoyerCaracteresNuls($retour_encode); |
header("content-type: application/json"); |
header('content-type: application/json'); |
print $retour_encode ; |
exit() ; |
} |
private function nettoyerCaracteresNuls($chaine) { |
return str_replace('\u0000','',$chaine); |
return str_replace('\u0000','',$chaine); |
} |
} |
?> |
} |
/trunk/jrest/services/ImageDateList.php |
---|
1,33 → 1,30 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package papyrus_bp |
* @author aurelien <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/papyrus_bp/ |
*/ |
/** |
* Liste les date des images par utilisateur |
* Liste les date des images par utilisateur. |
* |
* in=utf8 |
* out=utf8 |
* |
* uid[0] : utilisateur obligatoire |
* uid[1] : si absent : valeur 'all' (annee) |
* uid[2] : si absent : valeur 'all' (mois) |
* uid[3] : si absent : valeur 'all' (jour) |
**/ |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 ImageDateList extends Cel { |
private $correspondance_fonction = array(1 => 'year', 2 => 'month', 3 => 'day'); |
/** |
* uid[0] : utilisateur obligatoire |
* uid[1] : si absent : valeur 'all' (annee) |
* uid[2] : si absent : valeur 'all' (mois) |
* uid[3] : si absent : valeur 'all' (jour) |
*/ |
public function getElement($uid){ |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
38,11 → 35,11 |
$conditions = $this->traiterParametresEtConstruireRequete($uid); |
$requete_liste_dates = 'SELECT DISTINCT '. |
'date_prise_de_vue AS id '. |
$requete_liste_dates = 'SELECT DISTINCT date_prise_de_vue AS id '. |
'FROM cel_images '. |
"WHERE $conditions ". |
'ORDER BY date_prise_de_vue'; |
'ORDER BY date_prise_de_vue '. |
' -- '.__FILE__.':'.__LINE__; |
$liste_dates = Cel::db()->requeter($requete_liste_dates); |
$liste_dates = $this->formaterListeResultats($liste_dates); |
60,11 → 57,7 |
$date = '0000-00-00'; |
} else { |
$date_heures = explode(' ',$date['id']); |
if (count($date_heures) > 1) { |
$date = $date_heures[0]; |
} else { |
$date = $date['id']; |
} |
$date = (count($date_heures) > 1) ? $date_heures[0] : $date['id']; |
} |
} |
return $liste_dates; |
/trunk/jrest/services/ImageRDF.php |
---|
1,19 → 1,20 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* Retourne un RDF des images pour eflore |
* |
* @category PHP |
* @package jrest |
* @author david <david@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/ |
*/ |
* Retourne des infos au format RDF sur les imags. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 ImageRDF extends Cel { |
/** |
20,7 → 21,7 |
* Recherche des images associee au numero nomenclatural |
* @param numeric $uid [0] : numero nomenclatural obligatoire , $uid[1] (optionnel) : taille image : S , M, L (default) |
*/ |
function getElement($uid){ |
public function getElement($uid){ |
$nomSelNnP = Cel::db()->proteger($uid[0]); |
$taille = isset($uid[1]) ? $uid[1] : 'L'; |
/trunk/jrest/services/User.php |
---|
1,56 → 1,51 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author David Delon <devid.delon@clapas.net> |
* @author Aurélien Peronnet <devid.delon@clapas.net> |
* @copyright 2010 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/jrest/ |
*/ |
/** |
* User.php |
* |
* Cas d'utilisation : |
* Service identification utilisateur |
* |
* |
* 1: Aucun identifiant ni mot de passe transmis |
* 1: L'application retourne l'identifiant de session en cours |
* 2: Une identification est toujours active, cette identification est retournee |
* |
* 1: L'application recoit un identifiant et un mot de passe |
* 1 : On tente login |
* 2 : Si reussi etat connecte, retour de l'identification obtenue |
* 3 : sinon pas connecte, retour d'infos utilisateur anonyme |
* |
* 1: L'application recoit un identifiant et pas de mot de passe : |
* 1 : Deconnection, retour d'infos utilisateur anonyme |
* |
* En resume : |
* /User/ : retour infos utilisateur si connecté sinon infos utilisateur anonyme |
* /User/login_utilisateur : logout retour infos utilisateur anonyme |
* /User/login_utilisateur/password : login retour infos utilisateur si succès sinon infos utilisateur anonyme |
* |
*/ |
* Service identification utilisateur. |
* |
* Cas d'utilisation : |
* |
* 1: Aucun identifiant ni mot de passe transmis |
* 1: L'application retourne l'identifiant de session en cours |
* 2: Une identification est toujours active, cette identification est retournee |
* |
* 1: L'application recoit un identifiant et un mot de passe |
* 1 : On tente login |
* 2 : Si reussi etat connecte, retour de l'identification obtenue |
* 3 : sinon pas connecte, retour d'infos utilisateur anonyme |
* |
* 1: L'application recoit un identifiant et pas de mot de passe : |
* 1 : Deconnection, retour d'infos utilisateur anonyme |
* |
* En resume : |
* /User/ : retour infos utilisateur si connecté sinon infos utilisateur anonyme |
* /User/login_utilisateur : logout retour infos utilisateur anonyme |
* /User/login_utilisateur/password : login retour infos utilisateur si succès sinon infos utilisateur anonyme |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Utilisateurs |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 User extends Cel { |
// TODO : controle systematique ....dans tous les services |
// Si connected : name cookie = name service |
function getRessource(){ |
public function getRessource(){ |
$temps_expiration = 60*60*24*100; // 100 jours |
session_set_cookie_params($temps_expiration); |
$utilisateur = $this->getUtilisateurAnonyme(); |
$login_utilisateur = $this->utilisateurEstIdentifie(); |
if ($login_utilisateur) { |
$utilisateur = $this->chargerInfosUtilisateur($login_utilisateur); |
$utilisateur['connecte'] = true; |
59,31 → 54,28 |
$this->envoyerInfosUtilisateur($utilisateur); |
} |
function getElement($uid){ |
public function getElement($uid){ |
$utilisateur = $this->getUtilisateurAnonyme(); |
$utilisateur = $this->getUtilisateurAnonyme(); |
if ($this->identificationEstDemandee($uid)) { |
if (!$utilisateur = $this->utilisateurEstIdentifie()) { |
if ($this->identifierUtilisateur($uid[0],$uid[1],1)) { |
if ($this->identificationEstDemandee($uid)) { |
if (!$utilisateur = $this->utilisateurEstIdentifie()) { |
if ($this->identifierUtilisateur($uid[0],$uid[1],1)) { |
$utilisateur= $this->chargerInfosUtilisateur($uid[0]); |
$utilisateur['connecte'] = true; |
} |
// TODO: utilisateur inexistant ? |
} |
else { |
} else { |
$utilisateur = $this->chargerInfosUtilisateur($utilisateur); |
$utilisateur['connecte'] = true; |
} |
} |
else { |
} else { |
$this->deconnecterUtilisateur(); |
} |
$this->envoyerInfosUtilisateur($utilisateur); |
} |
public function obtenirIdentiteConnectee() { |
} |
public function obtenirIdentiteConnectee() { |
$login_utilisateur = $this->utilisateurEstIdentifie(); |
if ($login_utilisateur) { |
$utilisateur = $this->chargerInfosUtilisateur($login_utilisateur); |
92,114 → 84,106 |
$utilisateur = $this->getUtilisateurAnonyme(); |
} |
return $utilisateur; |
} |
public function obtenirUtilisateurSiExiste($login_utilisateur) { |
$utilisateur = $this->getUtilisateurAnonyme(); |
if($utilisateur_existe = $this->chargerInfosUtilisateur($login_utilisateur)) { |
$utilisateur = $utilisateur_existe; |
$utilisateur['connecte'] = true; |
} |
return $utilisateur; |
} |
private function identificationEstDemandee($tableau_param) { |
return (isset($tableau_param[1]) && trim($tableau_param[1] != '')); |
} |
private function envoyerInfosUtilisateur($utilisateur) { |
if(!$utilisateur) { |
$this->envoyerJson($this->getUtilisateurAnonyme()); |
return true; |
} |
$utilisateur['connecte'] = ($utilisateur['connecte']) ? true : false; |
$utilisateur['licence_acceptee'] = ($utilisateur['licence_acceptee']) ? true : false; |
$utilisateur['admin'] = ($utilisateur['admin']) ? true : false; |
$this->envoyerJson($utilisateur); |
return true; |
} |
function chargerInfosUtilisateur($login) { |
} |
$requete_selection_utilisateur = 'SELECT * FROM cel_utilisateurs cu '. |
'WHERE courriel = '.Cel::db()->proteger($login); |
public function obtenirUtilisateurSiExiste($login_utilisateur) { |
$utilisateur = $this->getUtilisateurAnonyme(); |
if ($utilisateur_existe = $this->chargerInfosUtilisateur($login_utilisateur)) { |
$utilisateur = $utilisateur_existe; |
$utilisateur['connecte'] = true; |
} |
return $utilisateur; |
} |
$resultat_selection_utilisateur = Cel::db()->requeter($requete_selection_utilisateur); |
$retour = false; |
if(is_array($resultat_selection_utilisateur) && count($resultat_selection_utilisateur) > 0) { |
$retour = $resultat_selection_utilisateur[0]; |
private function identificationEstDemandee($tableau_param) { |
return (isset($tableau_param[1]) && trim($tableau_param[1] != '')); |
} |
private function envoyerInfosUtilisateur($utilisateur) { |
if (!$utilisateur) { |
$this->envoyerJson($this->getUtilisateurAnonyme()); |
return true; |
} |
if(is_array($retour) && ($retour['date_premiere_utilisation'] == NULL || $retour['date_premiere_utilisation'] == '0000-00-00 00:00:00')) { |
$utilisateur['connecte'] = ($utilisateur['connecte']) ? true : false; |
$utilisateur['licence_acceptee'] = ($utilisateur['licence_acceptee']) ? true : false; |
$utilisateur['admin'] = ($utilisateur['admin']) ? true : false; |
$this->envoyerJson($utilisateur); |
return true; |
} |
private function chargerInfosUtilisateur($login) { |
$requete = 'SELECT * '. |
'FROM cel_utilisateurs AS cu '. |
'WHERE courriel = '.Cel::db()->proteger($login).' '. |
' -- '.__FILE__.':'.__LINE__; |
$resultats = Cel::db()->requeter($requete); |
$retour = false; |
if (is_array($resultats) && count($resultats) > 0) { |
$retour = $resultats[0]; |
} |
if (is_array($retour) && ($retour['date_premiere_utilisation'] == NULL || $retour['date_premiere_utilisation'] == '0000-00-00 00:00:00')) { |
$this->initialiserInfosUtilisateur($retour['id_utilisateur']); |
$this->affecterDonneesWidgetSaisie($login, $retour); |
} |
return $retour; |
} |
private function utilisateurEstIdentifie() { |
$login_utilisateur = false; |
if (!$login_utilisateur = $this->utilisateurEstIdentifieSession()) {$login_utilisateur = $this->utilisateurEstIdentifieCookie();} |
private function utilisateurEstIdentifie() { |
$login_utilisateur = false; |
if (!$login_utilisateur = $this->utilisateurEstIdentifieSession()) { |
$login_utilisateur = $this->utilisateurEstIdentifieCookie(); |
} |
return $login_utilisateur; |
} |
} |
function utilisateurEstIdentifieSession() { |
return (isset($_SESSION["user"]) && isset($_SESSION["user"]["courriel"])) ? $_SESSION["user"]["courriel"] : false; |
} |
function utilisateurEstIdentifieCookie() { |
return isset($_COOKIE["cel_name"]) && ($this->identifierUtilisateurSansEncryptionMotDePasse($_COOKIE["cel_name"], $_COOKIE["cel_password"])) ? $_COOKIE["cel_name"] : false; |
} |
private function utilisateurEstIdentifieSession() { |
return (isset($_SESSION['user']) && isset($_SESSION['user']['courriel'])) ? $_SESSION['user']['courriel'] : false; |
} |
function setUtilisateur($user, $remember=1) { |
$_SESSION["user"] = $user; |
$this->setPersistentCookie("cel_id", $user["id_utilisateur"], $remember); |
$this->setPersistentCookie("cel_name", $user["courriel"], $remember); |
$this->setPersistentCookie("cel_password", $user["mot_de_passe"], $remember); |
$this->setPersistentCookie("cel_remember", $remember, $remember); |
} |
private function utilisateurEstIdentifieCookie() { |
return isset($_COOKIE['cel_name']) && ($this->identifierUtilisateurSansEncryptionMotDePasse($_COOKIE['cel_name'], $_COOKIE['cel_password'])) ? $_COOKIE['cel_name'] : false; |
} |
function deconnecterUtilisateur() { |
$_SESSION["user"] = ""; |
$this->supprimerCookie("cel_id"); |
$this->supprimerCookie("cel_name"); |
$this->supprimerCookie("cel_password"); |
$this->supprimerCookie("cel_remember"); |
} |
private function deconnecterUtilisateur() { |
$_SESSION['user'] = ''; |
$this->supprimerCookie('cel_id'); |
$this->supprimerCookie('cel_name'); |
$this->supprimerCookie('cel_password'); |
$this->supprimerCookie('cel_remember'); |
} |
function setPersistentCookie($name, $value, $remember = 1) { |
SetCookie($name, $value, time() + ($remember ? (60*60*24*100) : (60*60)),'/'); |
$_COOKIE[$name] = $value; |
} |
private function supprimerCookie($name) { |
SetCookie($name, '', 1,'/'); $_COOKIE[$name] = ''; |
} |
function supprimerCookie($name) { |
SetCookie($name, "", 1,'/'); $_COOKIE[$name] = ""; |
} |
function identifierUtilisateur($login, $mot_de_passe, $remember = 1) { |
private function identifierUtilisateur($login, $mot_de_passe, $remember = 1) { |
$identification = false; |
if ($utilisateur = $this->chargerInfosUtilisateur($login)) { |
if ($utilisateur['mot_de_passe'] == $this->encrypterMotDePasse($mot_de_passe) || $mot_de_passe == "debug") { |
$this->setUtilisateur($utilisateur, $remember); |
$identification = true; |
} |
if ($utilisateur = $this->chargerInfosUtilisateur($login)) { |
if ($utilisateur['mot_de_passe'] == $this->encrypterMotDePasse($mot_de_passe) || $mot_de_passe == 'debug') { |
$this->setUtilisateur($utilisateur, $remember); |
$identification = true; |
} |
} |
return $identification; |
} |
function identifierUtilisateurSansEncryptionMotDePasse($login, $mot_de_passe, $remember = 1) { |
private function setUtilisateur($user, $remember=1) { |
$_SESSION['user'] = $user; |
$this->setPersistentCookie('cel_id', $user['id_utilisateur'], $remember); |
$this->setPersistentCookie('cel_name', $user['courriel'], $remember); |
$this->setPersistentCookie('cel_password', $user['mot_de_passe'], $remember); |
$this->setPersistentCookie('cel_remember', $remember, $remember); |
} |
private function setPersistentCookie($name, $value, $remember = 1) { |
SetCookie($name, $value, time() + ($remember ? (60*60*24*100) : (60*60)), '/'); |
$_COOKIE[$name] = $value; |
} |
private function identifierUtilisateurSansEncryptionMotDePasse($login, $mot_de_passe, $remember = 1) { |
$souvenir = false; |
if ($utilisateur = $this->chargerInfosUtilisateur($login)) { |
if ($utilisateur['mot_de_passe'] == $mot_de_passe) { |
$this->setUtilisateur($utilisateur, $remember); |
206,37 → 190,36 |
$souvenir = true; |
} |
} |
return $souvenir; |
} |
private function getUtilisateurAnonyme() { |
return array('connecte' => false, |
'id_utilisateur' => session_id(), |
'courriel' => '', |
'mot_de_passe' => '', |
'nom' => '', |
'prenom' => '', |
'licence_acceptee' => false, |
'preferences_utilisateur' => '', |
'admin' => false |
); |
'id_utilisateur' => session_id(), |
'courriel' => '', |
'mot_de_passe' => '', |
'nom' => '', |
'prenom' => '', |
'licence_acceptee' => false, |
'preferences_utilisateur' => '', |
'admin' => false |
); |
} |
private function encrypterMotDePasse($mot_de_passe) { |
return md5($mot_de_passe); |
} |
private function initialiserInfosUtilisateur($id_utilisateur) { |
$requete = 'INSERT INTO cel_utilisateurs_infos '. |
'(id_utilisateur, admin, licence_acceptee, preferences, date_premiere_utilisation )'. |
'VALUES '. |
"(".Cel::db()->proteger($id_utilisateur).", '0', '0', NULL, NOW()) ". |
'ON DUPLICATE KEY UPDATE date_premiere_utilisation = NOW() '; |
$resultat_insertion_infos = Cel::db()->executer($requete); |
'(id_utilisateur, admin, licence_acceptee, preferences, date_premiere_utilisation ) '. |
'VALUES '. |
'('.Cel::db()->proteger($id_utilisateur).", '0', '0', NULL, NOW()) ". |
'ON DUPLICATE KEY UPDATE date_premiere_utilisation = NOW() '. |
' -- '.__FILE__.':'.__LINE__; |
Cel::db()->executer($requete); |
} |
/** |
* Lors de la première connection au cel d'un utilisateur, affecte à son compte ses observations saisies |
* dans les widgets de saisie, où seul son mail avait été conservé en attendant |
248,10 → 231,9 |
//TODO tout ceci pourrait être simplifié sans avoir besoin d'instancier quoi que ce soit |
$gestion_obs = new GestionObservation($this->config); |
$gestion_img = new GestionImage($this->config); |
$gestion_obs->migrerObservationsMailVersId($mail_utilisateur, $infos_utilisateur); |
$gestion_img->migrerImagesMailVersId($mail_utilisateur, $infos_utilisateur); |
GestionMotsClesChemin::migrerMotsClesMailVersId($mail_utilisateur, $infos_utilisateur); |
} |
} |
?> |
} |
/trunk/jrest/services/InventoryTransmit.php |
---|
1,34 → 1,44 |
<?php |
/* |
* @author Aurélien Peronnet <aurelien@tela-botanica.org> |
* @author David Delon <david.delon@clapas.net> |
* @copyright 2010, 2013 Tela-Botanica |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt> |
// declare(encoding='UTF-8'); |
/** |
* Service rendant publique une observation. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryTransmit extends Cel { |
function updateElement($uid, $pairs) { |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
if (!isset($uid[1])) return false; |
public function updateElement($uid, $pairs) { |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
if (!isset($uid[1])) { |
return false; |
} |
$transmission = intval($pairs['transmission']); |
if($transmission != 0 && $transmission != 1) return false; |
if ($transmission != 0 && $transmission != 1) { |
return false; |
} |
$ids = array_filter(array_map(create_function('$v','return intval($v);'), |
explode(',', $uid[1])), 'strlen'); |
$ids = array_filter(array_map(create_function('$v','return intval($v);'), explode(',', $uid[1])), 'strlen'); |
$date = ($transmission == 1) ? 'now()' : 'NULL'; |
//TODO: modification pour passer ceci dans la classe gestion observation |
$requete_transmission = 'UPDATE cel_obs '. |
'SET transmission = '.$pairs['transmission'].', '. |
'date_modification = now(), date_transmission = '.$date.' '. |
'WHERE ce_utilisateur = '.Cel::db()->proteger($uid[0]).' AND ordre in ('.implode(',', $ids).')'; |
$resultat_transmission = Cel::db()->executer($requete_transmission); |
return ($resultat_transmission != 0); |
$requete = 'UPDATE cel_obs '. |
'SET transmission = '.$pairs['transmission'].', '. |
'date_modification = now(), date_transmission = '.$date.' '. |
'WHERE ce_utilisateur = '.Cel::db()->proteger($uid[0]).' '. |
'AND ordre in ('.implode(',', $ids).') '. |
' -- '.__FILE__.':'.__LINE__; |
$resultat = Cel::db()->executer($requete); |
return ($resultat != 0); |
} |
} |
?> |
} |
/trunk/jrest/services/Name.php |
---|
1,56 → 1,37 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author David Delon <david.delon@clapas.net> |
* @copyright 2010 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/jrest/ |
*/ |
/** |
* Name.php |
* |
* in : utf8 |
* out : utf8 |
* |
* Cas d'utilisation : |
* Service recherche nom retenu depuis un numero nomenclatural pour la BDNFF |
* |
* 1 : L'application recoit un numero nomenclatural |
* 2 : L'application retourne le nom retenu associé |
*/ |
* Service recherche nom retenu depuis un numero nomenclatural pour la BDNFF |
* |
* 1 : L'application recoit un numero nomenclatural |
* 2 : L'application retourne le nom retenu associé |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 Name extends Cel { |
function getElement($uid){ |
$retour = array("null"); |
if (isset($uid[0])) { |
$chercheur_info_taxon = new RechercheInfosTaxonBeta($this->config); |
$retour = $chercheur_info_taxon->effectuerRequeteInfosComplementairesEtFormaterNom($uid[0]); |
public function getElement($uid){ |
$retour = array('null'); |
if (isset($uid[0])) { |
$chercheurInfoTaxon = new RechercheInfosTaxonBeta($this->config); |
$retour = $chercheurInfoTaxon->effectuerRequeteInfosComplementairesEtFormaterNom($uid[0]); |
} |
$this->envoyerJson($retour); |
return true; |
$this->envoyerJson($retour); |
return true; |
} |
function getRessource(){ |
print "[\"null\"]"; |
return; |
public function getRessource(){ |
print '["null"]'; |
return; |
} |
} |
/* +--Fin du code ---------------------------------------------------------------------------------------+ |
* $Log$ |
* Revision 1.3 2008-01-30 08:57:28 ddelon |
* fin mise en place mygwt |
* |
* Revision 1.2 2007-05-21 18:13:30 ddelon |
* Refactoring et documentation |
* |
*/ |
?> |
} |
/trunk/jrest/services/ImageContribution.php |
---|
1,11 → 1,12 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe renvoyant une liste très succinte des observations liées à une image de l'utilisateur |
* Service renvoyant une liste HTML très succinte des images (et infos sur l'obs liée) d'un utilisateur. |
* |
* @category DEL |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Communes |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
/trunk/jrest/services/InventoryLocationList.php |
---|
1,55 → 1,36 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* @author David Delon <david@tela-botanica.org> |
* @author Aurélien 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> |
* @version $Id$ |
* @copyright © 2010, David Delon, Aurélien Peronnet |
*/ |
* Service de listage des zones géographiques d'un utilisateur |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryLocationList extends Cel { |
/** |
* InventoryLocationList.php |
* |
* in : utf8 |
* out : utf8 |
* Cas d'utilisation : |
* Service listage des zones géographiques d'un utilisateur |
*/ |
class InventoryLocationList extends Cel { |
function getElement($uid){ |
public function getElement($uid) { |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
$idUtilisateurP = Cel::db()->proteger($uid[0]); |
$retour = array(); |
$requete = 'SELECT DISTINCT ce_zone_geo, zone_geo, lieudit, station '. |
'FROM cel_obs '. |
"WHERE ce_utilisateur = $idUtilisateurP ". |
'ORDER BY ce_zone_geo ASC, zone_geo ASC, lieudit ASC, station ASC '. |
' -- '.__FILE__.':'.__LINE__; |
$resultats = Cel::db()->requeter($requete); |
$requete_zones_geo = 'SELECT DISTINCT ce_zone_geo, zone_geo, lieudit, station FROM cel_obs '. |
'WHERE ce_utilisateur = '.Cel::db()->proteger($uid[0]).' '. |
'ORDER BY ce_zone_geo ASC, zone_geo ASC, lieudit ASC, station ASC'; |
$resultat_zones_geo = Cel::db()->requeter($requete_zones_geo); |
if (is_array($resultat_zones_geo)) { |
$retour = $resultat_zones_geo; |
} |
$this->envoyerJson($retour); |
return true; |
$retour = (is_array($resultats)) ? $resultats : array(); |
$this->envoyerJson($retour); |
return true; |
} |
} |
/* +--Fin du code ---------------------------------------------------------------------------------------+ |
* $Log$ |
* Revision 1.6 2008-01-30 08:57:28 ddelon |
* fin mise en place mygwt |
* |
* Revision 1.5 2007-05-22 12:54:09 ddelon |
* Securisation acces utilisateur |
* |
* |
* |
*/ |
?> |
} |
/trunk/jrest/services/InventoryObservationCount.php |
---|
1,51 → 1,37 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author David Delon <david.delon@clapas.net> |
* @author Aurélien 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/ |
*/ |
/** |
* InventoryObservationCount.php |
* |
* in : utf8 |
* out : utf8 |
* |
* Cas d'utilisation : |
* Service recherche du nombre a partir de divers critères |
* |
* 2: Le service recherche le nombre d'images correspondant au critères demandé |
* 3: Le service renvoie le nombre calcule |
*/ |
* Service recherche du nombre a partir de divers critères |
* |
* 2: Le service recherche le nombre d'observations correspondant aux critères demandés |
* 3: Le service renvoie le nombre calcule |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryObservationCount extends Cel { |
/** |
* renvoie le nombre d' observations correspondant aux criteres |
* uid[0] : utilisateur obligatoire |
* uid[1] : criteres de filtrage de la forme critere1=valeur1&critere2=valeur2 |
* |
* Renvoie le nombre d' observations correspondant aux critères |
* 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]); |
$chercheur_observations = new RechercheObservation($this->config); |
$criteres = $_GET; |
$retour = $chercheur_observations->compterObservations($uid[0], $criteres); |
$chercheurObs = new RechercheObservation($this->config); |
$retour = $chercheurObs->compterObservations($uid[0], $_GET); |
$this->envoyerJson($retour); |
return true; |
} |
} |
?> |
} |
/trunk/jrest/services/SelfRefList.php |
---|
1,10 → 1,20 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// in utf8 |
// out utf8 |
// Fournit un référentiel relatif à l'utilisateur sur l'un des champs demandes |
// declare(encoding='UTF-8'); |
/** |
* Fournit une liste d'auto-complétions (=référentiel) relative à l'utilisateur sur l'un des champs demandés. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Auto-complétions |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 SelfRefList extends Cel { |
private $referentiels = array('station', 'lieudit', 'milieu'); |
31,17 → 41,28 |
} |
$referentiel_demande = $uid[1]; |
$idUtilisateur = Cel::db()->proteger($uid[0]); |
$idUtilisateurP = Cel::db()->proteger($uid[0]); |
$requete = "SELECT DISTINCT $referentiel_demande " . |
'FROM cel_obs '. |
"WHERE ce_utilisateur = '$idUtilisateur' "; |
$filtreSql = ''; |
if ($this->filtreRechercheEstDemande()) { |
$requete .= " AND $referentiel_demande LIKE '".$_GET["recherche"]."%'"; |
$rechercheP = Cel::db()->proteger($_GET['recherche'].'%'); |
$filtreRecherche = "AND $referentiel_demande LIKE $rechercheP "; |
} |
$limiteSql = ''; |
if ($this->limiteEstDemandee()) { |
$requete .= " ORDER BY $referentiel_demande LIMIT ".$_GET['start'].','.$_GET['limit']; |
$start = intval($_GET['start']); |
$limit = intval($_GET['limit']); |
$limite = "LIMIT $start,$limit "; |
} |
$requete = "SELECT DISTINCT $referentiel_demande " . |
'FROM cel_obs '. |
"WHERE ce_utilisateur = $idUtilisateurP ". |
$filtreSql. |
"ORDER BY $referentiel_demande ". |
$limiteSql. |
' -- '.__FILE__.':'.__LINE__; |
$resultat = Cel::db()->requeter($requete); |
$referentiel = array(); |
50,7 → 71,6 |
if ($this->estUneValeurValide($valeur[$referentiel_demande])) { |
$referentiel[] = $valeur[$referentiel_demande]; |
} |
} |
} |
$this->envoyerJson($referentiel); |
/trunk/jrest/services/NameImage.php |
---|
1,85 → 1,62 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author David Delon <david.delon@clapas.net> |
* @copyright 2010 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/jrest/ |
*/ |
/** |
* NameImage.php |
* |
* in : utf8 |
* out : 8859 |
* |
* Cas d'utilisation : |
* Service recherche d'image a partir d'un numero nomenclatural |
* |
* 1: Le service recoit un numero nomenclatural |
* 2: Le service calcul le numero taxonomique associe |
* 3: Le service recherche une image disponible pour ce numero taxonomique |
* 4: Le service redimensionne l'image et la renvoie |
*/ |
* Service recherche d'image a partir d'un numero nomenclatural. |
* |
* Cas d'utilisation : |
* 1: Le service recoit un numero nomenclatural |
* 2: Le service calcul le numero taxonomique associe |
* 3: Le service recherche une image disponible pour ce numero taxonomique |
* 4: Le service redimensionne l'image et la renvoie |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 NameImage extends Cel { |
function getElement($uid){ |
$image = array("",""); |
if(isset($uid[0]) && isset($uid[1])) { |
public function getElement($uid){ |
$image = array('', ''); |
if (isset($uid[0]) && isset($uid[1])) { |
$uid[0] = $uid[0] != '' ? $uid[0] : 'bdtfx'; |
$image = $this->obtenirIllustration($uid[0], $uid[1]); |
} |
$this->envoyerJson($image); |
return true; |
$this->envoyerJson($image); |
return true; |
} |
function obtenirIllustration($referentiel_taxo, $nn) { |
private function obtenirIllustration($referentiel_taxo, $nn) { |
// TODO: gérer ici les images d'autres référentiels si celles si sont disponibles |
$retour = array("",""); |
switch($referentiel_taxo) { |
case 'bdtfx': |
$retour = $this->effectuerRequetePhotoFlora($nn); |
break; |
default: |
break; |
$retour = array('', ''); |
if ($referentiel_taxo == 'bdtfx') { |
$retour = $this->effectuerRequetePhotoFlora($nn); |
} |
return $retour; |
} |
private function effectuerRequetePhotoFlora($nn) { |
$url_photoflora = $this->config['eflore']['url_service_photoflora']; |
$url = $url_photoflora.'?masque.nn='.$nn.'&navigation.limite=1'; |
$resultat = @file_get_contents($url); |
$resultat = json_decode($resultat); |
if(is_object($resultat) && isset($resultat->resultats)) { |
if (is_object($resultat) && isset($resultat->resultats)) { |
$element = (array)$resultat->resultats; |
$element = array_pop($element); |
if(is_object($element)) { |
$image = array($element->{'binaire.href'}, $element->{'binaire.hrefmax'}); |
} else { |
$image = array('',''); |
$image = array('', ''); |
} |
} |
return $image; |
} |
} |
/* +--Fin du code ---------------------------------------------------------------------------------------+ |
* $Log$ |
* Revision 1.4 2008-11-13 11:29:12 ddelon |
* Reecriture gwt-ext |
* |
* Revision 1.2 2008-01-30 08:57:28 ddelon |
* fin mise en place mygwt |
* |
* Revision 1.1 2007-06-06 13:31:16 ddelon |
* v0.09 |
* |
*/ |
?> |
} |
/trunk/jrest/services/InventoryDateList.php |
---|
1,24 → 1,20 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @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/ |
*/ |
/** |
* Liste les date de releves par utilisateur |
* Liste les date de releves par utilisateur. |
* |
* in=utf8 |
* out=utf8 |
* |
**/ |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryDateList extends Cel { |
private $correspondance_fonction = array(1 => 'year', 2 => 'month', 3 => 'day'); |
29,61 → 25,52 |
* @param int uid[2] : si absent : valeur 'all' (mois) |
* @param int uid[3] : si absent : valeur 'all' (jour) |
*/ |
function getElement($uid){ |
public function getElement($uid){ |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
$condition_requete = $this->traiterParametresEtConstruireRequete($uid); |
$requete_liste_dates = 'SELECT DISTINCT '. |
'date_observation AS id '. |
'FROM cel_obs WHERE '.$condition_requete.' '. |
'ORDER BY date_observation'; |
$requete_liste_dates = 'SELECT DISTINCT date_observation AS id '. |
'FROM cel_obs WHERE '.$condition_requete.' '. |
'ORDER BY date_observation '. |
' -- '.__FILE__.':'.__LINE__; |
$liste_dates = Cel::db()->requeter($requete_liste_dates); |
$liste_dates = $this->formaterListeResultats($liste_dates); |
$liste_dates = Cel::db()->requeter($requete_liste_dates); |
$liste_dates = $this->formaterListeResultats($liste_dates); |
$this->envoyerJson($liste_dates); |
return true; |
} |
private function formaterListeResultats($liste_dates) { |
if (!$liste_dates) { |
$liste_dates = array(); |
} |
$liste_dates = array(); |
} |
foreach($liste_dates as &$date) { |
$date_heures = explode(' ',$date['id']); |
if(count($date_heures) > 1) { |
$date = $date_heures[0]; |
} |
$date = $date; |
} |
return $liste_dates; |
foreach ($liste_dates as &$date) { |
$date_heures = explode(' ',$date['id']); |
if (count($date_heures) > 1) { |
$date = $date_heures[0]; |
} |
$date = $date; |
} |
return $liste_dates; |
} |
private function traiterParametresEtConstruireRequete($params) { |
$requete_condition = ' ce_utilisateur = '.Cel::db()->proteger($params[0]); |
$taille_tableau_parametres = count($params); |
for($i=1; $i < $taille_tableau_parametres; $i++) { |
if($this->estUnParametreDate($params[$i])) { |
for ($i = 1; $i < $taille_tableau_parametres; $i++) { |
if ($this->estUnParametreDate($params[$i])) { |
$fonction_date = $this->correspondance_fonction[$i]; |
$requete_condition .= ' AND '.$fonction_date.'(date_observation) = '.Cel::db()->proteger($params[$i]); |
} |
} |
return $requete_condition; |
} |
private function estUnParametreDate($valeur) { |
return is_numeric($valeur) && $valeur != "all"; |
return is_numeric($valeur) && $valeur != 'all'; |
} |
} |
?> |
} |
/trunk/jrest/services/InventoryContributionList.php |
---|
1,44 → 1,47 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package papyrus_bp |
* @author aurelien <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/ |
*/ |
/** |
* Classe renvoyant fragment html constitué à partir d'une liste très succinte des contributions de l'utilisateur |
* |
* Service renvoyant un fragment de HTML constitué à partir d'une liste très succinte des contributions |
* de l'utilisateur. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryContributionList extends Cel { |
function getRessource() { |
public function getRessource() { |
echo ''; |
} |
function getElement($uid){ |
if(!isset($uid[0])) { |
/** |
* Retourne la liste des contributions au format HTML. |
* |
* @param int $uid[0] identitifiant de l'utilisateur |
*/ |
public function getElement($uid){ |
if (!isset($uid[0])) { |
echo ''; |
} |
$requete_contributions = "SELECT * FROM cel_obs ". |
"WHERE ce_utilisateur = ".Cel::db()->proteger($uid[0])." ". |
"ORDER BY date_modification DESC LIMIT 0,5"; |
$idUtilisateurP = Cel::db()->proteger($uid[0]); |
$requete = 'SELECT * FROM cel_obs '. |
"WHERE ce_utilisateur = $idUtilisateurP ". |
'ORDER BY date_modification DESC '. |
'LIMIT 0,5 '. |
' -- '.__FILE__.':'.__LINE__; |
$resultat_contributions = Cel::db()->requeter($requete); |
$resultat_contributions = Cel::db()->requeter($requete_contributions); |
$resume = ''; |
if (is_array($resultat_contributions)) { |
$resume = ''; |
if (is_array($resultat_contributions)) { |
foreach ($resultat_contributions as $ligne) { |
$ligne['nom_sel'] = htmlspecialchars($ligne['nom_sel']); |
$ligne['ce_utilisateur'] = htmlspecialchars($ligne['ce_utilisateur']); |
48,29 → 51,16 |
$ligne['milieu'] = htmlspecialchars($ligne['milieu']); |
$ligne['commentaire'] = htmlspecialchars($ligne['commentaire']); |
$ligne['transmission'] = htmlspecialchars($ligne['transmission']); |
$resume.= '<p>'.$ligne['nom_sel'] ." (".$ligne['nom_sel_nn'].") ". |
'Location : '. $ligne['zone_geo']." (".$ligne['id_zone_geo']."),". $ligne['station'] . "," . |
$ligne['milieu'] . "," . $ligne['commentaire'] . "," . $ligne['transmission'] . |
'</p>'; |
$resume.= '<p>'.$ligne['nom_sel'] ." (".$ligne['nom_sel_nn'].") ". |
'Location : '. $ligne['zone_geo']." (".$ligne['id_zone_geo']."),". $ligne['station'] . "," . |
$ligne['milieu'] . "," . $ligne['commentaire'] . "," . $ligne['transmission'] . |
'</p>'; |
} |
} |
} |
header("Content-Type: text/html; charset=ISO-8859-1"); |
print $resume; |
exit; |
} |
} |
/* +--Fin du code ---------------------------------------------------------------------------------------+ |
* $Log$ |
* Revision 1.5 2008-11-13 11:29:12 ddelon |
* Reecriture gwt-ext |
* |
* Revision 1.4 2007-06-06 13:31:16 ddelon |
* v0.09 |
* |
* Revision 1.3 2007-05-22 12:54:09 ddelon |
* Securisation acces utilisateur |
* |
*/ |
?> |
header('Content-Type: text/html; charset=ISO-8859-1'); |
print $resume; |
exit(); |
} |
} |
/trunk/jrest/services/Inventory.php |
---|
1,210 → 1,176 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* 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 |
* |
**/ |
* Service CRUD sur une observation. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 Inventory extends Cel { |
// TODO: faire un descriptif du service |
function getRessource(){ |
public function getRessource() { |
} |
function getElement($uid){ |
public function getElement($uid){ |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
if (!isset($uid[0])) { |
return; |
} |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
$parametres_recherche = array(array('ce_utilisateur',$uid[0]),array('ordre',$uid[1])); |
$value=array(); |
$chercheur_observations = new RechercheObservation($this->config); |
$retour_recherche = $chercheur_observations->rechercherObservations($uid[0], $parametres_recherche, 0, 1)->get(); |
if(!isset($uid[0])) { |
return; |
$observation = array(); |
if (is_array($retour_recherche) && count($retour_recherche) > 0) { |
$observation = $retour_recherche[0]; |
} |
$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; |
$observation = $this->formaterObservationVersTableauSequentiel($observation); |
$sortie = json_encode($observation); |
$this->envoyerJson($sortie); |
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; |
} |
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; |
$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) { |
public function updateElement($uid,$pairs) { |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
$this->controleUtilisateur($uid[0]); |
if (!isset($uid[1])) { |
if (!isset($uid[1])) { |
//TODO: envoyer un message d'erreur |
return; |
return; |
} |
$uid[1] = rtrim($uid[1],','); |
$champs_etendus = isset($pairs['obs_etendue']) ? json_decode(stripslashes($pairs['obs_etendue']),true) : null; |
$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'])) { |
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) { |
$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; |
if($this->doitGenererCleChampEtendu($champ_etendu)) { |
$champ_etendu['cle'] = $gestion_champs_etendus->transformerLabelEnCle($champ_etendu['label']); |
} |
$objet_champ_etendu->cle = $champ_etendu['cle']; |
$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); |
$objet_champ_etendu = new ChampEtendu(); |
$objet_champ_etendu->id = $id_obs; |
if($this->doitGenererCleChampEtendu($champ_etendu)) { |
$champ_etendu['cle'] = $gestion_champs_etendus->transformerLabelEnCle($champ_etendu['label']); |
} |
$objet_champ_etendu->cle = $champ_etendu['cle']; |
$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; |
return true; |
} |
function createElement($pairs) { |
public 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'])) { |
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; |
if($this->doitGenererCleChampEtendu($champ_etendu)) { |
$champ_etendu['cle'] = $gestion_champs_etendus->transformerLabelEnCle($champ_etendu['label']); |
} |
$objet_champ_etendu->cle = $champ_etendu['cle']; |
$objet_champ_etendu->valeur = $champ_etendu['valeur']; |
$champ_etendu = $objet_champ_etendu; |
} |
$gestionnaire_observation = new GestionObservation($this->config); |
$id_nouvelle_obs = $gestionnaire_observation->ajouterObservation($pairs['ce_utilisateur'], $pairs); |
$champs_supp = $gestion_champs_etendus->ajouterParLots($champs_etendus); |
} |
return true; |
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; |
if($this->doitGenererCleChampEtendu($champ_etendu)) { |
$champ_etendu['cle'] = $gestion_champs_etendus->transformerLabelEnCle($champ_etendu['label']); |
} |
$objet_champ_etendu->cle = $champ_etendu['cle']; |
$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){ |
*/ |
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); |
$id_obs = $gestionnaire_observation->renvoyerIdPourOrdre($uid[0],$uid[1]); |
$suppression_observation = $gestionnaire_observation->supprimerObservation($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"; |
echo "OK"; |
} |
exit() ; |
exit(); |
} |
function doitGenererCleChampEtendu($champ_etendu) { |
private function doitGenererCleChampEtendu($champ_etendu) { |
return !isset($champ_etendu['cle']) || |
trim($champ_etendu['cle'] == "" || |
strpos($champ_etendu['cle'],'tempid_') !== false); |
trim($champ_etendu['cle'] == "" || |
strpos($champ_etendu['cle'],'tempid_') !== false); |
} |
} |
/* +--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 |
* |
*/ |
?> |
} |
/trunk/jrest/services/LocationSearch.php |
---|
1,70 → 1,67 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* Classe gérant la completion des noms de lieux |
* Encodage en entrée : utf8 |
* Encodage en sortie : utf8 |
* Service gérant la completion des noms de lieux. |
* |
* @author David Delon <david.delon@clapas.net> |
* @author Aurélien 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> |
* @version $Id$ |
* @copyright © 2010, David Delon |
*/ |
/** |
* Cas d'utilisation : |
* Service completion nom de commune (plus tard de lieu en général) |
* |
* 1 : L'application recoit un debut de nom de lieu |
* 2 : Si la longueur du prefixe est > 2, l'application retourne les 50 premieres lieux |
* commencant par ce prefixe |
**/ |
* 2 : Si la longueur du prefixe est > 2, l'application retourne les 50 premieres lieux commencant par ce prefixe |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Auto-complétions |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 LocationSearch extends Cel { |
function getElement($uid){ |
public function getElement($uid){ |
$retour = array(); |
$retour = array(); |
if (isset($uid[0])) { |
$retour = $this->executerRequeteLieu($uid[0]); |
} |
$this->envoyerJson($retour); |
return true; |
$this->envoyerJson($retour); |
return true; |
} |
function getRessource(){ |
print "[]"; |
return; |
public function getRessource() { |
print '[]'; |
return; |
} |
private function executerRequeteLieu($lieu) { |
$lieu_formate = $this->formaterChaineLieuPourRequete($lieu); |
$retour = array(); |
if ($this->estUneChaineRequeteValide($lieu_formate)) { |
$requete_information_lieu = 'SELECT DISTINCT nom, code '. |
'FROM cel_zones_geo '. |
'WHERE '. |
'nom LIKE '.Cel::db()->proteger($lieu_formate.'%').' '. |
'ORDER BY nom LIMIT 50'; |
$liste_lieux = Cel::db()->requeter($requete_information_lieu); |
if($liste_lieux) { |
foreach($liste_lieux as $lieu_trouve) { |
$retour[] = $this->formaterLigneResultat($lieu_trouve); |
} |
} |
} |
return $retour; |
} |
if ($this->estUneChaineRequeteValide($lieu_formate)) { |
$requete = 'SELECT DISTINCT nom, code '. |
'FROM cel_zones_geo '. |
'WHERE nom LIKE '.Cel::db()->proteger($lieu_formate.'%').' '. |
'ORDER BY nom '. |
'LIMIT 50 '. |
' -- '.__FILE__.':'.__LINE__; |
$liste_lieux = Cel::db()->requeter($requete); |
if ($liste_lieux) { |
foreach ($liste_lieux as $lieu_trouve) { |
$retour[] = $this->formaterLigneResultat($lieu_trouve); |
} |
} |
} |
return $retour; |
} |
/** |
* Remplace les * par % pour faire des recherches floues |
* Remplace les + par _ (nginx envoie des "+" dans l'URL à la place des espaces) |
78,23 → 75,12 |
$lieu = str_replace(['+', ' ', '-'], '_', $lieu); |
return $lieu; |
} |
private function estUneChaineRequeteValide($lieu) { |
return (strlen($lieu) > 0) && ($lieu != '%'); |
} |
private function formaterLigneResultat($ligne) { |
return array($ligne['nom']." (".substr(sprintf("%02s",$ligne['code']),0,2).")",$ligne['code']); |
return array($ligne['nom'].' ('.substr(sprintf('%02s', $ligne['code']),0,2).')', $ligne['code']); |
} |
} |
/* +--Fin du code ---------------------------------------------------------------------------------------+ |
* $Log$ |
* Revision 1.4 2008-01-30 08:57:28 ddelon |
* fin mise en place mygwt |
* |
* Revision 1.3 2007-05-21 18:13:03 ddelon |
* Correction bug recherche commune du type "la canourgue" |
* |
* |
*/ |
?> |
} |
/trunk/jrest/services/NomsChampsEtendus.php |
---|
1,10 → 1,20 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// in utf8 |
// out utf8 |
// Fournit un référentiel relatif à l'utilisateur sur les noms ou les valeurs des champs étendus |
// declare(encoding='UTF-8'); |
/** |
* Fournit un référentiel relatif à l'utilisateur sur les noms ou les valeurs des champs étendus. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Auto-complétions |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 NomsChampsEtendus extends Cel { |
/** |
11,21 → 21,19 |
* Suivant le type de référentiel donné en paramètre, renvoie les liste de ses éléments |
* |
* uid[0] : "cle" ou "valeur" |
* $_GET["start"] et $GET_["limit"] : selection intervalle |
* $_GET["cle"] : restreint la recherche sur les valeurs d'une certaine clé |
* $_GET["recherche"] : cherche les noms qui commmencent selon la valeur |
*/ |
function getElement($uid){ |
public function getElement($uid){ |
if (!$this->paramObligatoiresSontPresents($uid)) { |
return; |
} |
$_GET['recherche'] = str_replace('*', '%', $_GET['recherche']); |
$referentiel = array(); |
if($uid[0] == "cle") { |
if ($uid[0] == 'cle') { |
$referentiel = $this->rechercherCles($_GET['recherche']); |
} else if($uid[0] == "valeur") { |
} else if($uid[0] == 'valeur') { |
$referentiel = $this->rechercherValeurs($_GET['cle'], $_GET['recherche']); |
} |
33,38 → 41,43 |
return true; |
} |
function rechercherCles($recherche_cle) { |
private function rechercherCles($recherche_cle) { |
// Recherche dans clé du catalogue et les clés déja saisies par les utilisateurs. |
// Si une clé est présente dans les deux tables, on privilégie celle du catalogue |
// qui contient un label bien formé |
$requete = "(SELECT cle, label, 'catalogue' FROM cel_catalogue_champs_etendus WHERE ". |
"label LIKE ".Cel::db()->proteger($recherche_cle)." ". |
"AND groupe = 0 ". |
") ". |
"UNION ". |
"(SELECT DISTINCT cle, cle as label, 'utilisateur' FROM cel_obs_etendues WHERE ". |
"cle LIKE ".Cel::db()->proteger($recherche_cle). |
"AND cle NOT IN (SELECT cle FROM cel_catalogue_champs_etendus) ". |
") "; |
$labelP = Cel::db()->proteger($recherche_cle); |
$requete = "(SELECT cle, label, 'catalogue' ". |
'FROM cel_catalogue_champs_etendus '. |
"WHERE label LIKE $labelP ". |
'AND groupe = 0 )'. |
'UNION '. |
"(SELECT DISTINCT cle, cle AS label, 'utilisateur' ". |
'FROM cel_obs_etendues '. |
"WHERE cle LIKE $labelP ". |
'AND cle NOT IN (SELECT cle FROM cel_catalogue_champs_etendus) '. |
') '. |
' -- '.__FILE__.':'.__LINE__; |
$resultat = Cel::db()->requeter($requete); |
$resultat = Cel::db()->requeter($requete); |
$referentiel = array(); |
foreach($resultat as $valeur) { |
foreach ($resultat as $valeur) { |
$referentiel[$valeur['cle']] = $valeur['label']; |
} |
return $referentiel; |
} |
function rechercherValeurs($cle, $recherche_valeur) { |
$requete = "SELECT DISTINCT valeur FROM cel_obs_etendues WHERE ". |
"cle = ".Cel::db()->proteger($cle)." AND ". |
"valeur LIKE ".Cel::db()->proteger($recherche_valeur.'%')." "; |
private function rechercherValeurs($cle, $recherche_valeur) { |
$cleP = Cel::db()->proteger($cle); |
$valeurP = Cel::db()->proteger($recherche_valeur.'%'); |
$requete = 'SELECT DISTINCT valeur '. |
'FROM cel_obs_etendues '. |
"WHERE cle = $cleP ". |
"AND valeur LIKE $valeurP ". |
' -- '.__FILE__.':'.__LINE__; |
$resultats = Cel::db()->requeter($requete); |
$referentiel_resultat = Cel::db()->requeter($requete); |
$referentiel = array(); |
foreach ($referentiel_resultat as $valeur) { |
foreach ($resultats as $valeur) { |
if (trim($valeur['valeur']) != '') { |
$referentiel[] = $valeur['valeur']; |
} |
72,19 → 85,7 |
return $referentiel; |
} |
function paramObligatoiresSontPresents($uid) { |
private function paramObligatoiresSontPresents($uid) { |
return (isset($uid[0]) && ($uid[0] == 'cle' || $uid[0] == 'valeur')); |
} |
function filtreRechercheEstDemande() { |
return (isset($_GET["recherche"]) && trim($_GET["recherche"]) != ''); |
} |
function limiteEstDemandee() { |
return isset($_GET["start"]) && is_numeric($_GET["start"]) && isset($_GET["limit"]) && is_numeric($_GET["limit"]); |
} |
function estUneValeurValide($chaine) { |
return ($chaine != null && $chaine != "000null" && trim($chaine) != ''); |
} |
} |
/trunk/jrest/services/Resume.php |
---|
1,16 → 1,21 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe renvoyant un petit bout de json contenant les dernières obs publiques d'un utilisateur |
* Utilisée par l'annuaire appelant les web services résumé de chaque application |
* |
* @category PHP |
* @package papyrus_bp |
* @author aurelien <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/papyrus_bp/ |
*/ |
* Service renvoyant au format JSON les dernières observations publiques d'un utilisateur. |
* Utilisée par l'annuaire appelant les web services résumé de chaque application. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 Resume extends Cel { |
public function getElement($uid){ |
/trunk/jrest/services/ImportXLS.php |
---|
12,9 → 12,10 |
* # 13 observations importées |
* + cf MySQL general_log = 1 |
* |
* @category DEL |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Communes |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@tela-botanica.org> |
* @author Raphaël DROZ <raphael@tela-botanica.org> |
/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() ; |
} |
} |
?> |
} |
/trunk/jrest/services/NameMap.php |
---|
1,49 → 1,42 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author David Delon <david.delon@clapas.net> |
* @copyright 2010 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/jrest/ |
*/ |
/** |
* NameMap.php |
* |
* in utf8 |
* out utf8 |
* |
* Cas d'utilisation : |
* Service recherche d'image a partir d'un numero nomenclatural |
* |
* 1: Le service recoit un référentiell et un numero nomenclatural |
* 2: Le service recherche une carte disponible |
*/ |
* Service recherche d'une carte de chorologie a partir d'un numero nomenclatural et d'un code de référentiel. |
* |
* Cas d'utilisation : |
* 1: Le service recoit un référentiel et un numero nomenclatural |
* 2: Le service recherche une carte disponible |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Cartes |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 NameMap extends Cel { |
function getElement($uid){ |
public function getElement($uid){ |
$retour = array(''); |
if(isset($uid[0]) && isset($uid[1])) { |
if (isset($uid[0]) && isset($uid[1])) { |
$uid[0] = $uid[0] != '' ? $uid[0] : 'bdtfx'; |
$retour = $this->obtenirCarteChorologie($uid[0], $uid[1]); |
} |
} |
$this->envoyerJson($retour); |
return true; |
} |
$this->envoyerJson($retour); |
return true; |
} |
function obtenirCarteChorologie($referentiel_taxo, $nn) { |
private function obtenirCarteChorologie($referentiel_taxo, $nn) { |
// TODO: gérer ici les cartes d'autres référentiels si celles si sont disponibles |
$retour = array(''); |
$chercheur_infos_taxon = new RechercheInfosTaxonBeta($this->config, $referentiel_taxo); |
$nt = $chercheur_infos_taxon->rechercherNumTaxSurNumNom($nn); |
$retour = array(''); |
switch($referentiel_taxo) { |
case 'bdtfx': |
$url_service_chorologie = $this->config['eflore']['url_service_chorologie_carte']; |
50,7 → 43,7 |
$url_service_chorologie = str_replace('{referentiel_choro}','chorodep',$url_service_chorologie); |
$file = $url_service_chorologie.'/nt%3A'.$nt.'?retour.format=587&retour=image%2Fpng'; |
$retour = array($file); |
break; |
break; |
case 'bdtxa': |
// En attendant mieux |
$url_service_chorologie = $this->config['eflore']['url_service_chorologie_carte']; |
57,20 → 50,8 |
$url_service_chorologie = str_replace('{referentiel_choro}','bdtxa',$url_service_chorologie); |
$file = $url_service_chorologie.'/nt%3A'.$nt.'?retour.format=587&retour=image%2Fpng'; |
$retour = array($file); |
break; |
default: |
break; |
break; |
} |
return $retour; |
return $retour; |
} |
} |
/* +--Fin du code ---------------------------------------------------------------------------------------+ |
* $Log$ |
* Revision 1.1 2008-01-30 08:57:28 ddelon |
* fin mise en place mygwt |
* |
* Revision 1.1 2007-06-06 13:31:16 ddelon |
* v0.09 |
*/ |
?> |
} |
/trunk/jrest/services/InventoryKeywordTree.php |
---|
1,34 → 1,50 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Service permettant de créer l'arbre des mots-clés. |
* |
* @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 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 InventoryKeywordTree extends Cel { |
//TODO : verifications des paramètres |
public static $gestion_mots_cles = null; |
private function getGestionMotsCles($mode) { |
if(self::$gestion_mots_cles == null) { |
self::$gestion_mots_cles = new GestionMotsClesChemin($this->config, $mode); |
} |
return self::$gestion_mots_cles; |
} |
public function getElement($uid) { |
// Controle detournement utilisateur |
$id_utilisateur = $uid[1] ; |
$this->controleUtilisateur($uid[1]); |
$arbre = $this->getGestionMotsCles($uid[0])->obtenirArbre($id_utilisateur); |
$this->envoyerJson($arbre); |
return TRUE; // compat: pourquoi renvoyer true si vide ? |
} |
private function getGestionMotsCles($mode) { |
if (self::$gestion_mots_cles == null) { |
self::$gestion_mots_cles = new GestionMotsClesChemin($this->config, $mode); |
} |
return self::$gestion_mots_cles; |
} |
public function updateElement($uid, $pairs) { |
$id_utilisateur = $uid[1]; |
$this->controleUtilisateur($uid[1]); |
$id_mot_cle = $pairs['id']; |
$action = $pairs['action']; |
if ($action == 'modification') { |
$nouveau_nom = $pairs['motcle']; |
$modification = $this->getGestionMotsCles($uid[0])->renommerMotCle($id_mot_cle, $nouveau_nom); |
36,32 → 52,29 |
$id_pere = $pairs['parent']; |
$modification = $this->getGestionMotsCles($uid[0])->deplacerMotCle($id_mot_cle, $id_pere, $id_utilisateur); |
} |
$modification = ($modification !== false); |
if($modification) { |
$this->envoyer("OK"); |
if ($modification) { |
$this->envoyer('OK'); |
} |
return $modification; |
} |
public function createElement($pairs) { |
// Controle detournement utilisateur |
$this->controleUtilisateur($pairs['identifiant']); |
$mode = $pairs['mode']; |
if($mode != 'obs' && $mode != 'images') { |
if ($mode != 'obs' && $mode != 'images') { |
return; |
} |
$id_utilisateur = $pairs['identifiant']; |
$mot_cle = $pairs['motcle']; |
$id_parent = $pairs['parent']; |
$id_nouveau_mot_cle = $this->getGestionMotsCles($mode)->insererParIdParent($mot_cle, $id_parent, $id_utilisateur); |
if($id_nouveau_mot_cle !== false) { |
if ($id_nouveau_mot_cle !== false) { |
// on sort de self::createElement ==> JRest::(get|post) ==> JRest->created() qui fait header(). |
// or si nous dépassons ini_get(output_buffering) nous ne pouvons plus réécrire le code de retour |
// HTTP, de plus, si ini_get(output_buffering) == off, nous enverrions un warning. |
68,25 → 81,23 |
// d'où ce clone de JRest::created(); |
header('HTTP/1.0 201 Created'); |
echo $id_nouveau_mot_cle; |
exit; |
exit(); |
} else { |
// cf ci-dessus: JRest::badRequest |
header('HTTP/1.0 400 Bad Request'); |
exit; |
exit(); |
} |
} |
public function deleteElement($uid) { |
$mode = $uid[0]; |
$id_utilisateur = $uid[1]; |
$id_mot_cle = $uid[2]; |
$suppression = $this->getGestionMotsCles($mode)->supprimerMotCleParId($id_mot_cle, $id_utilisateur); |
if($suppression) { |
$this->envoyer("OK"); |
if ($suppression) { |
$this->envoyer('OK'); |
} |
} |
} |
?> |
} |
/trunk/jrest/services/InventoryKeyWordImageLink.php |
---|
1,38 → 1,41 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* @category PHP |
* @package jrest |
* @author Aurélien Peronnet <aurelien@tela-botania.org> |
* @author Raphaël Droz <raphael@tela-botania.org> |
* @copyright 2010, 2013 Tela-Botanica |
* @license Licence CECILL <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt> |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* Service de liaisons de mots clés à des images. |
* Le service lie une ou plusieurs mots clés à une ou plusieurs images. |
* |
* Service de liaisons de mots clés à des images. |
* Le service lie une ou plusieurs mots clés à une ou plusieurs images |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryKeyWordImageLink extends Cel { |
class InventoryKeyWordImageLink extends Cel { |
public function createElement($pairs) { |
// Controle detournement utilisateur |
$this->controleUtilisateur($pairs['ce_utilisateur']); |
if (!isset($pairs['mots_cles']) || !isset($pairs['images']) || !isset($pairs['ce_utilisateur'])) { |
return; |
} |
$ids_images = array_filter(explode(',', $pairs['images'])); |
$ids_mots_cles = array_filter(explode(',', $pairs['mots_cles'])); |
$gestion_mots_cles = new GestionMotsClesChemin($this->config,'images'); |
$gestion_mots_cles = new GestionMotsClesChemin($this->config,'images'); |
$liaison = true; |
$liaison = $gestion_mots_cles->modifierLiaisonParTableaux($ids_mots_cles, $ids_images, true); |
foreach($ids_images as $id_element_lie) { |
foreach ($ids_images as $id_element_lie) { |
//TODO: que faire si la régénération d'index texte échoue ? |
$r_index = GestionMotsClesChemin::regenererIndexTexteMotCle($id_element_lie, 'images'); |
GestionMotsClesChemin::regenererIndexTexteMotCle($id_element_lie, 'images'); |
} |
return $liaison; |
} |
40,8 → 43,7 |
public function deleteElement($uid){ |
// n'est jamais appelée car pour supprimer les mots clés d'une image |
// on appelle createElement avec des mots clés vides |
// car les mots clés images ne fonctionnent pas pareil que ceux des obs |
// car les mots clés images ne fonctionnent pas pareil que ceux des obs |
// dans l'interface |
} |
} |
?> |
} |
/trunk/jrest/services/InventoryKeyWordObsLink.php |
---|
1,35 → 1,42 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* @package jrest |
* @author Aurélien Peronnet <aurelien@tela-botania.org> |
* @copyright 2010, 2013 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* Service de liaisons de mots clés à des observations. |
* Le service lie une ou plusieurs mots clés à une ou plusieurs observations. |
* |
* Service de liaisons de mots clés à des observations. |
* Le service lie une ou plusieurs mots clés à une ou plusieurs observations |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryKeyWordObsLink extends Cel { |
class InventoryKeyWordObsLink extends Cel { |
public function getElement($uid) { } |
public function createElement($pairs) { |
public function createElement($pairs) { |
// Controle detournement utilisateur |
$this->controleUtilisateur($pairs['ce_utilisateur']); |
if (!isset($pairs['mots_cles']) || !isset($pairs['observations']) || !isset($pairs['ce_utilisateur'])) { |
return; |
} |
$ids_obs = explode(',',$pairs['observations']); |
$ids_mots_cles = explode(',',$pairs['mots_cles']); |
$gestion_mots_cles = new GestionMotsClesChemin($this->config,'obs'); |
$liaison_mot_cle = $gestion_mots_cles->modifierLiaisonParTableaux($ids_mots_cles, $ids_obs, false); |
foreach($ids_obs as $id_element_lie) { |
$r_index = GestionMotsClesChemin::regenererIndexTexteMotCle($id_element_lie, 'obs'); |
} |
foreach ($ids_obs as $id_element_lie) { |
GestionMotsClesChemin::regenererIndexTexteMotCle($id_element_lie, 'obs'); |
} |
return $liaison_mot_cle; |
} |
36,20 → 43,19 |
public function deleteElement($uid){ |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
if (!isset($uid[0]) || !isset($uid[1]) || !isset($uid[2])) { |
return FALSE; |
return false; |
} |
$id_utilisateur = $uid[0]; |
$ids_obs = explode(',',$uid[1]); |
$ids_obs = explode(',', $uid[1]); |
$ids_mots_cles = explode(',', GestionMotsClesChemin::nettoyerMotsClesAvantSuppression($uid[2])); |
$gestion_mots_cles = new GestionMotsClesChemin($this->config, 'obs'); |
$suppression_liaisons = $gestion_mots_cles->supprimerLiaisonsMotsCles($ids_mots_cles, $ids_obs, $id_utilisateur); |
foreach($ids_obs as $id_element_lie) { |
$r_index = GestionMotsClesChemin::regenererIndexTexteMotCle($id_element_lie, 'obs'); |
GestionMotsClesChemin::regenererIndexTexteMotCle($id_element_lie, 'obs'); |
} |
} |
} |
/trunk/jrest/services/InventoryPDF.php |
---|
1,17 → 1,21 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author David Delon <david.delon@clapas.net> |
* @copyright 2010 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/jrest/ |
*/ |
* Service générant un PDF d'export des observations pour réaliser des étiquettes d'herbier. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Export |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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> |
*/ |
/** Constante stockant l'URL de la page d'accueil de Photoflora.*/ |
define('EF_URL_PHOTOFLORA', 'http://photoflora.free.fr/'); |
/** Constante stockant l'URL de la page de Photoflora affichant toutes les images d'un taxon donn.es.*/ |
25,23 → 29,14 |
/** Constante stockant l'URL du service XML de Photoflora.*/ |
define('EF_URL_PHOTOFLORA_SERVICE', EF_URL_PHOTOFLORA.'ef_photoflora.php?nt=%s'); |
/** |
* InventoryPDF.php |
* |
* in : utf8 |
* out : iso8859 |
* |
* Formatage pdf d'un releve (a revoir) |
*/ |
class InventoryPDF extends Cel { |
var $extendPDFProductor; |
function InventoryPDF($config) { |
public function __construct($config) { |
parent::__construct($config); |
$this->config=$config; |
$this->config = $config; |
// Pas d'heritage multiple en php :( |
$this->extendPDFProductor = new PDFProductor(); |
$this->extendPDFProductor->initPDF(); |
54,61 → 49,57 |
* uid[3] : si absent : valeur 'all' (recherche libre) |
* uid[4] : si absent : valeur 'all' (station) |
*/ |
function getElement($uid){ |
// Controle detournement utilisateur |
public function getElement($uid){ |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
if (!isset($uid[1]) || $uid[1]=="" || $uid[1]=="all" ) { |
$uid[1]="all"; |
$requete_location=""; |
if (!isset($uid[1]) || $uid[1] == '' || $uid[1] == 'all' ) { |
$uid[1] = 'all'; |
$requete_location = ''; |
} else { |
$requete_location = ' AND location= '.Cel::db()->proteger($uid[1]).' '; |
} |
else { |
$requete_location=" AND location= ".Cel::db()->proteger($uid[1])." "; |
} |
if (!isset($uid[2]) || $uid[2]=="" || $uid[2]=="all") { |
$uid[2]="all"; |
$requete_date=""; |
if (!isset($uid[2]) || $uid[2] == '' || $uid[2] == 'all') { |
$uid[2] = 'all'; |
$requete_date = ''; |
} else { |
$requete_date = ' AND date_observation= '.Cel::db()->proteger($uid[2]).' '; |
} |
else { |
$requete_date=" AND date_observation= ".Cel::db()->proteger($uid[2])." "; |
} |
if (!isset($uid[3]) || $uid[3]=="" || $uid[3]=="all") { |
$uid[3]="all"; |
$requete_libre=""; |
if (!isset($uid[3]) || $uid[3] == '' || $uid[3] == 'all') { |
$uid[3] = 'all'; |
$requete_libre = ''; |
} else { |
$requete_libre = ' AND (nom_sel LIKE '.Cel::db()->proteger('%'.$uid[3].'%'). |
' OR nom_ret LIKE '.Cel::db()->proteger('%'.$uid[3].'%'). |
' OR station LIKE '.Cel::db()->proteger('%'.$uid[3].'%'). |
' OR commentaire LIKE '.Cel::db()->proteger('%'.$uid[3].'%'); |
} |
else { |
$requete_libre=" AND (nom_sel LIKE ".Cel::db()->proteger('%'.$uid[3].'%'). |
" OR nom_ret LIKE ".Cel::db()->proteger('%'.$uid[3].'%'). |
" OR station LIKE ".Cel::db()->proteger('%'.$uid[3].'%'). |
" OR commentaire LIKE ".Cel::db()->proteger('%'.$uid[3].'%'); |
} |
if (!isset($uid[4]) || $uid[4]=="" || $uid[4]=="all") { |
$uid[4]="all"; |
$requete_station=""; |
if (!isset($uid[4]) || $uid[4] == '' || $uid[4] == 'all') { |
$uid[4] = 'all'; |
$requete_station =''; |
} else { |
$requete_station = ' AND station= '.Cel::db()->proteger($uid[4]).' '; |
} |
else { |
$requete_station=" AND station= ".Cel::db()->proteger($uid[4])." "; |
} |
$value=array(); |
$value = array(); |
$requete = 'SELECT ce_utilisateur, ordre, nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, zone_geo, date_observation, '. |
'station, commentaire, transmission '. |
'FROM cel_obs '. |
'WHERE ce_utilisateur = '.Cel::db()->proteger($uid[0]).' '. |
$requete_location. |
$requete_date. |
$requete_libre. |
$requete_station.' '. |
'ORDER BY ordre '. |
' -- '.__FILE__.':'.__LINE__; |
$resultat = Cel::db()->requeter($requete); |
$requete="SELECT ce_utilisateur, ordre, nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, zone_geo, date_observation, " . |
"station, commentaire, transmission FROM cel_obs WHERE ce_utilisateur = ".Cel::db()->proteger($uid[0])." " . |
$requete_location. |
$requete_date. |
$requete_libre. |
$requete_station. |
" ORDER BY ordre "; |
$resultat_requete = Cel::db()->requeter($requete); |
$observations = array();; |
if(is_array($resultat_requete)) { |
$observations = $resultat_requete; |
if (is_array($resultat)) { |
$observations = $resultat; |
} |
// Set up the pdf object. |
124,50 → 115,43 |
$pdf->addPage(); |
$pdf->setFont('Times', '' , 12); |
$i=1; |
$tempfn = tempnam("",""); |
$i = 1; |
$tempfn = tempnam('', ''); |
foreach ($observations as $obs) { |
// Denullifiage |
// Denullifiage |
foreach($obs as $k=>$v) { |
if (($v=="null") || ($v=="000null")) { |
$obs[$k]=""; |
if (($v == 'null') || ($v == '000null')) { |
$obs[$k] = ''; |
} else { |
$obs[$k] = utf8_decode($v); |
} |
else { |
$obs[$k]=utf8_decode($v); |
} |
} |
if ($obs['date_observation']!="0000-00-00 00:00:00") { |
list($year,$month,$day)= explode('-',$obs['date_observation']); |
list($day)= explode(' ',$day); |
$obs['date_observation']=$day."/".$month."/".$year; |
} |
else { |
$obs['date_observation']="00/00/0000"; |
} |
if ($obs['date_observation'] != '0000-00-00 00:00:00') { |
list($year,$month,$day)= explode('-', $obs['date_observation']); |
list($day)= explode(' ', $day); |
$obs['date_observation'] = "$day/$month/$year"; |
} else { |
$obs['date_observation'] = '00/00/0000'; |
} |
$text= $obs['nom_sel']." ".$obs['nom_sel_nn']." ".$obs['nom_ret']." ".$obs['nom_ret_nn']." ".$obs['nt']." ". |
$obs['famille']." ".$obs['zone_geo']." ".$obs['ce_zone_geo']." ".$obs['date_observation']." ".$obs['station']; |
$obs['commentaire']; |
$text = $obs['nom_sel']." ".$obs['nom_sel_nn']." ".$obs['nom_ret']." ".$obs['nom_ret_nn']." ".$obs['nt']." ". |
$obs['famille']." ".$obs['zone_geo']." ".$obs['ce_zone_geo']." ".$obs['date_observation']." ".$obs['station']; |
$obs['commentaire']; |
$pdf->write(10, $text."\n"); |
$projet_photo = 'photoflora'; |
$tab_retour[$projet_photo]=chercherIllustrationsServiceXml(sprintf(EF_URL_PHOTOFLORA_SERVICE, $obs['nt'])); |
$url_miniature =''; |
$tab_retour[$projet_photo] = $this->analyserRdf(sprintf(EF_URL_PHOTOFLORA_SERVICE, $obs['nt'])); |
$url_miniature = ''; |
foreach ($tab_retour[$projet_photo] as $cle => $illustration) { |
if (preg_match(EF_URL_PHOTOFLORA_REGEXP, $illustration['about'], $match)) { |
$abreviation = $match[1]; |
$fichier = $match[2]; |
$url_miniature = sprintf(EF_URL_PHOTOFLORA_IMG_MIN, $abreviation, $fichier);; |
$abreviation = $match[1]; |
$fichier = $match[2]; |
$url_miniature = sprintf(EF_URL_PHOTOFLORA_IMG_MIN, $abreviation, $fichier);; |
// Priorite aux images en png |
// Priorite aux images en png |
if (strstr($fichier, '.png')) { |
break; |
} |
174,29 → 158,20 |
} |
} |
if ($url_miniature!='') { |
list($debut,$ext)=explode("\.",basename($url_miniature)); |
$temp = fopen($tempfn, "w"); |
if ($url_miniature != '') { |
list($debut,$ext)=explode('\.',basename($url_miniature)); |
$temp = fopen($tempfn, 'w'); |
$buf=file_get_contents($url_miniature); |
fwrite($temp,$buf); |
fclose($temp); |
$pdf->image($tempfn,10,($i*10),0,0,$ext); |
fclose($temp); |
$pdf->image($tempfn, 10, ($i*10), 0, 0, $ext); |
} |
$i++; |
} |
echo $pdf->output("Rapport"); |
$i++; |
} |
echo $pdf->output('Rapport'); |
} |
} |
function chercherIllustrationsServiceXml($url) |
{ |
return analyserFichierRdf($url); |
} |
function analyserFichierRdf($chemin) |
{ |
private function analyserRdf($chemin) { |
$aso_info = array(); |
$dom = new DOMDocument(); |
$dom->validateOnParse = true; |
229,20 → 204,6 |
$aso_info['dcterms:licence'] = utf8_decode($rdf_description->getAttribute('licence')); |
$tab_infos[$rdf_description->getAttribute('identifier')] = $aso_info; |
} |
return $tab_infos; |
} |
/* +--Fin du code ---------------------------------------------------------------------------------------+ |
* $Log$ |
* Revision 1.2 2008-01-30 08:57:28 ddelon |
* fin mise en place mygwt |
* |
* Revision 1.1 2007-06-06 13:31:16 ddelon |
* v0.09 |
* |
* Revision 1.4 2007-05-22 12:54:09 ddelon |
* Securisation acces utilisateur |
* |
*/ |
?> |
} |
} |
/trunk/jrest/services/InventoryImport.php |
---|
1,60 → 1,39 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author David Delon <david.delon@clapas.net> |
* @author Aurélien 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/ |
*/ |
/** |
* InventoryImport.php |
* |
* in : utf8 |
* out : utf8 |
* |
* Cas d'utilisation : |
* Service importation releve en cours |
* |
* 1 : L'utilisateur à traiter est communique au service |
* 2 : Les releves associés à la session en cours sont transferés à l'utilisateur identifié |
*/ |
* Service importation releve en cours : |
* 1 : L'utilisateur à traiter est communique au service |
* 2 : Les releves associés à la session en cours sont transferés à l'utilisateur identifié |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryImport extends Cel { |
function getElement($uid){ |
// Controle detournement utilisateur |
public function getElement($uid){ |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
$id_session_temporaire = session_id(); |
$gestionnaire_observation = new GestionObservation($this->config); |
$migration_compte_a_compte = $gestionnaire_observation->migrerObservations($id_session_temporaire, $uid[0]); |
$retour = false; |
if($migration_compte_a_compte) { |
$retour = 'OK'; |
} |
$retour = 'OK'; |
} |
echo $retour; |
exit; |
exit(); |
} |
} |
/* +--Fin du code ---------------------------------------------------------------------------------------+ |
* $Log$ |
* Revision 1.3 2008-01-30 08:57:28 ddelon |
* fin mise en place mygwt |
* |
* Revision 1.2 2007-05-22 12:54:09 ddelon |
* Securisation acces utilisateur |
* |
* Revision 1.1 2007-05-21 18:12:20 ddelon |
* Gestion des importations locale de releves |
*/ |
?> |
} |
/trunk/jrest/services/InventoryUserList.php |
---|
1,31 → 1,35 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Liste des utilisateurs du cel, par défaut les 50 premiers |
* ou bien commencant par la chaine fournie en paramètre |
* in : utf8 |
* out : utf8 |
* Liste des utilisateurs du cel, par défaut les 50 premiers ou bien commencant par la chaine fournie en paramètre |
* |
* @category PHP |
* @package jrest |
* @author Aurélien Peronnet <aurelien@tela-botanica.org> |
* @copyright © 2010-2014 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryUserList extends Cel { |
function getElement($uid) { |
public function getElement($uid) { |
$this->controleUtilisateur($uid[0]); |
$requete_utilisateurs ='SELECT DISTINCT id_utilisateur, courriel FROM cel_utilisateurs '. |
$requete = 'SELECT DISTINCT id_utilisateur, courriel FROM cel_utilisateurs '. |
$this->construireRequeteConditionTableUtilisateurs($uid).' '. |
'UNION '. |
'SELECT DISTINCT ce_utilisateur as id_utilisateur, courriel_utilisateur as courriel '. |
'FROM cel_obs '. |
$this->construireRequeteConditionTableObs($uid).' '. |
'LIMIT 0,50'; |
'LIMIT 0,50 '. |
' -- '.__FILE__.':'.__LINE__; |
$utilisateurs = Cel::db()->requeter($requete); |
$utilisateurs = Cel::db()->requeter($requete_utilisateurs); |
$liste_utilisateurs = array(); |
if ($utilisateurs) { |
foreach ($utilisateurs as $utilisateur) { |
32,12 → 36,28 |
$liste_utilisateurs[] = $utilisateur; |
} |
} |
usort($liste_utilisateurs, 'trierUtilisateurs'); |
usort($liste_utilisateurs, array($this, 'trierUtilisateurs')); |
$this->envoyerJson($liste_utilisateurs); |
return true; |
} |
public function trierUtilisateurs($val1, $val2) { |
if (strstr($val1['courriel'], '@')) { |
if (strstr($val2['courriel'], '@')) { |
return strcmp($val1['courriel'], $val2['courriel']); |
} else { |
return -1; |
} |
} else { |
if (strstr($val2['courriel'], '@')) { |
return 1; |
} else { |
return strcmp($val1['courriel'], $val2['courriel']); |
} |
} |
} |
private function construireRequeteConditionTableUtilisateurs($params) { |
$condition = ''; |
if (isset($params[1]) && $params[1] != null && $params[1] != '*') { |
53,21 → 73,4 |
} |
return $condition; |
} |
} |
function trierUtilisateurs($val1, $val2) { |
if (strstr($val1['courriel'], '@')) { |
if (strstr($val2['courriel'], '@')) { |
return strcmp($val1['courriel'], $val2['courriel']); |
} else { |
return -1; |
} |
} else { |
if (strstr($val2['courriel'], '@')) { |
return 1; |
} else { |
return strcmp($val1['courriel'], $val2['courriel']); |
} |
} |
} |
?> |
} |
/trunk/jrest/services/InventoryImageListPublic.php |
---|
1,51 → 1,45 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author Aurélien Peronnet <aurelien@tela-botania.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/ |
*/ |
/** |
* in : utf8 |
* out : utf8 |
* |
* Service recherche d'images publique a partir de divers critères |
* |
*/ |
* Service recherche d'images publique a partir de divers critères. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryImageListPublic extends Cel { |
const start_defaut = 0; |
const limit_defaut = 100; |
const tri_defaut = 'ci.date_creation'; |
const dir_defaut = 'DESC'; |
function getRessource() { |
public function getRessource() { |
} |
function getElement($uid) |
{ |
// restriction aux observations publiques |
$criteres = array('transmission' => '1'); |
if($uid[0] != '*' && empty($_GET)) { |
public function getElement($uid) { |
// restriction aux observations publiques |
$criteres = array('transmission' => '1'); |
if ($uid[0] != '*' && empty($_GET)) { |
header("content-type: application/json"); |
$images_json = json_encode(array()); |
print $images_json; |
exit() ; |
exit(); |
} |
$this->start = isset($_GET['start']) ? $_GET['start'] : self::start_defaut; |
$this->limit = isset($_GET['limit']) ? $_GET['limit'] : self::limit_defaut; |
$this->limit = isset($_GET['limit']) ? $_GET['limit'] : self::limit_defaut; |
$criteres['mots_cles'] = isset($_GET['tag']) ? $_GET['tag'] : null; |
$criteres['auteur'] = isset($_GET['auteur']) ? $_GET['auteur'] : null; |
$criteres['zone_geo'] = isset($_GET['commune']) ? $_GET['commune'] : null; |
55,20 → 49,17 |
$criteres['recherche'] = isset($_GET['recherche']) ? $_GET['recherche'] : null; |
$criteres['tri'] = isset($_GET['tri']) ? $_GET['tri'] : self::tri_defaut; |
$criteres['dir'] = isset($_GET['dir']) ? $_GET['dir'] : self::dir_defaut; |
$chercheur_images = new RechercheImage($this->config); |
$total = $chercheur_images->compterImages(null, $criteres); |
$images = $chercheur_images->rechercherImages(null, $criteres, $this->start, $this->limit); |
$resultat = array('total' => $total,'images' => $images); |
$images_json = json_encode($resultat) ; |
$resultat = array('total' => $total,'images' => $images); |
$images_json = json_encode($resultat); |
$images_json = str_replace('\u0000','',$images_json); |
header("content-type: application/json") ; |
print $images_json ; |
exit() ; |
header("content-type: application/json"); |
print $images_json; |
exit(); |
} |
} |
?> |
} |
/trunk/jrest/services/InventoryImportMail.php |
---|
1,209 → 1,172 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* Service d'import d'image à partir de mails |
* Encodage en entrée : utf8 |
* Encodage en sortie : utf8 |
* Service d'import d'image à partir d'e-mails. |
* |
* @author Aurélien 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> |
* @version $Id$ |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryImportMail extends Cel { |
class InventoryImportMail extends Cel { |
/** |
* Appelée en mode client, lit le mail envoyé sur l'entrée stdin |
* et le stocke dans le dossier temporaire en attendant |
* qu'une tache périodique associée traite les mails en attente |
* |
* |
* @param array $params les paramètres du script client, l'utilisateur est indiqué avec le paramètre -s |
*/ |
public function stockerMailCli($params) |
{ |
public function stockerMailCli($params) { |
$contenu_mail = file_get_contents('php://stdin'); |
$parametres_ajout = array(); |
$parametres_ajout['mail_utilisateur'] = $params['-s']; |
$stockage = $this->stockerMailTemporaire($parametres_ajout, $contenu_mail); |
if($stockage) { |
if ($stockage) { |
$message_attente = 'Votre messsage a été reçu, et est en attente de traitement, '. |
'vous recevrez un message lorsque celui-ci aura été effectué'; |
'vous recevrez un message lorsque celui-ci aura été effectué'; |
mail($parametres_ajout['mail_utilisateur'],'Votre message est en attente de traitement',$message_attente); |
} else { |
$message_echec = 'Votre messsage a été reçu, mais il n\'a pas pu être stocké'; |
$message_echec = 'Votre messsage a été reçu, mais il n\'a pas pu être stocké'; |
mail($parametres_ajout['mail_utilisateur'],'Problème lors de reception du message',$message_echec); |
} |
exit; |
exit(); |
} |
private function stockerMailTemporaire($parametres_ajout, $contenu_mail) { |
$expediteur = $parametres_ajout['mail_utilisateur']; |
$nom_fichier_temp = $this->fabriquerNomTemporaireStockageMail($expediteur); |
$dossier_stockage_temp = $this->config['chemin_stockage_temp']; |
$chemin_stockage_image_temp = $dossier_stockage_temp.'/mails/'; |
return file_put_contents($chemin_stockage_image_temp.$nom_fichier_temp); |
return file_put_contents($chemin_stockage_image_temp.$nom_fichier_temp, $contenu_mail); |
} |
/** |
* Appelée en mode client, lit le mail envoyé sur l'entrée stdin |
* extrait les images en pièces jointes, et les ajoute au cel de l'utilisateur |
* expediteur |
* |
* expediteur |
* |
* @param array $params les paramètres du script client, l'utilisateur est indiqué avec le paramètre -s |
*/ |
public function traiterMailCli($params) |
{ |
public function traiterMailCli($params) { |
$contenu_mail = file_get_contents('php://stdin'); |
$parametres_ajout = array(); |
$parametres_ajout['mail_utilisateur'] = $params['-s']; |
$ids_stockage = $this->traiterMail($parametres_ajout, $contenu_mail); |
$ids_stockage = $this->traiterMail($parametres_ajout, $contenu_mail); |
foreach($ids_stockage as $nom_image => $id_stockage) { |
if($id_stockage) { |
mail($parametres_ajout['mail_utilisateur'],'Votre image a été ajoutée au Carnet en ligne','Votre image '.$nom_image.' a été ajoutée avec succès'); |
foreach ($ids_stockage as $nom_image => $id_stockage) { |
if ($id_stockage) { |
$sujet = "Votre image a été ajoutée au Carnet en ligne"; |
$msg = "Votre image $nom_image a été ajoutée avec succès"; |
mail($parametres_ajout['mail_utilisateur'], $sujet, $msg); |
} else { |
mail($parametres_ajout['mail_utilisateur'],'Problème lors de l\'ajout au Carnet en ligne','Votre image '.$nom_image.' n\'a pas pu être ajoutée'); |
$sujet = "Problème lors de l'ajout au Carnet en ligne"; |
$msg = "Votre image $nom_image n'a pas pu être ajoutée"; |
mail($parametres_ajout['mail_utilisateur'], $sujet, $msg); |
} |
} |
exit(); |
} |
/** |
* Traite le mail fourni en paramètre extrait les images en pièces jointes, |
* et les ajoute au cel de l'utilisateur expediteur |
* |
* Traite le mail fourni en paramètre extrait les images en pièces jointes, |
* et les ajoute au cel de l'utilisateur expediteur |
* |
* @param array $params les paramètres du script client, l'utilisateur est indiqué dans la case 'identifiant' |
*/ |
public function traiterMail($params, $contenu_mail) |
{ |
public function traiterMail($params, $contenu_mail) { |
$pieces_jointes = $this->extrairePiecesJointes($contenu_mail); |
$stockeur_image = new InventoryImage($this->config); |
$ids = array(); |
$infos_utilisateur = $this->getInfosComplementairesUtilisateurPourMail($params['mail_utilisateur']); |
$params['ce_utilisateur'] = $infos_utilisateur['id_utilisateur']; |
foreach($pieces_jointes as $piece_jointe) { |
$nouvel_id_image = $stockeur_image->ajouterImageSurDdEtBdd($params, $piece_jointe); |
if($nouvel_id_image) |
{ |
foreach ($pieces_jointes as $piece_jointe) { |
$nouvel_id_image = $stockeur_image->ajouterImageSurDdEtBdd($params, $piece_jointe); |
if($nouvel_id_image) { |
$ids[$piece_jointe['name']] = $nouvel_id_image; |
} |
else |
{ |
} else { |
$ids[$piece_jointe['name']] = false; |
} |
} |
// TODO: permettre la création d'observations liées aux images à partir du mail |
// et d'une syntaxe simple à définir |
return $ids; |
} |
/** |
* Appelée en mode client, parse le dossier ou sont stockés les mails |
* extrait les images en pièces jointes, et les ajoute au cel de l'utilisateur |
* |
* |
*/ |
public function parserDossierMail() |
{ |
public function parserDossierMail() { |
$dossier_stockage_temp = $this->config['chemin_stockage_temp']; |
$chemin_stockage_image_temp = $dossier_stockage_temp.'/mails/'; |
foreach (new DirectoryIterator($chemin_stockage_image_temp) as $fichier_a_stocker) { |
if($fichier_ou_dossier->isDot()) { |
if ($fichier_ou_dossier->isDot()) { |
continue; |
} |
$chemin_fichier = $fichier_a_stocker->getPathname(); |
$nom_fichier = $fichier_ou_dossier->getFilename(); |
$expediteur_mail = $this->obtenirExpediteurPourNomTemporaireMail($nom_fichier); |
$parametres = array('courriel_utilisateur' => $expediteur_mail); |
$chemin_fichier = $fichier_a_stocker->getPathname(); |
$contenu_mail = file_get_contents($chemin_fichier); |
$parametres = array('courriel_utilisateur' => $expediteur_mail); |
$this->traiterMail($parametres, $contenu_mail); |
unlink($chemin_fichier); |
} |
} |
private function extrairePiecesJointes($mail) { |
$pieces_jointes = array(); |
$args['include_bodies'] = true; |
$args['decode_bodies'] = true; |
$args['decode_headers'] = true; |
$args['input'] = $mail; |
$dossier_stockage_temp = $this->config['chemin_stockage_temp']; |
$pieces_jointes = array(); |
$tableau_mail_decode = Mail_mimeDecode::decode($args); |
foreach ($tableau_mail_decode->parts as $partie) { |
if ($partie->ctype_primary == 'image' && $partie->ctype_secondary == 'jpeg') { |
$informations = array(); |
$nom_original = $partie->ctype_parameters['name']; |
$fichier = $partie->body; |
$hash = md5(time()); |
$chemin_temp = $dossier_stockage_temp.'/images/'.$hash.'.jpg'; |
$temp = fopen($chemin_temp,'w+'); |
fwrite($temp,$fichier); |
fclose($temp); |
chmod($chemin_temp, 0777); |
$informations = array('tmp_name' => $chemin_temp,'name' => $nom_original,'type' => 'image/jpeg','size' => filesize($chemin_temp)); |
$pieces_jointes[] = $informations; |
chmod($chemin_temp, 0777); |
$pieces_jointes[] = array( |
'tmp_name' => $chemin_temp, |
'name' => $nom_original, |
'type' => 'image/jpeg', |
'size' => filesize($chemin_temp)); |
} |
} |
return $pieces_jointes; |
} |
private function fabriquerNomTemporaireStockageMail($expediteur) { |
return time().'_'.$expediteur; |
} |
private function obtenirExpediteurPourNomTemporaireMail($nom_temp) { |
$chaine_separee = explode('_', $nom_temp,1); |
$nom_expediteur = false; |
if($chaine_separee && count($chaine_separee) > 1) { |
if ($chaine_separee && count($chaine_separee) > 1) { |
$nom_expediteur = $chaine_separee[1]; |
} |
return $nom_expediteur; |
} |
} |
?> |
} |
/trunk/jrest/services/InventoryImageList.php |
---|
1,44 → 1,33 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author Aurélien 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/ |
*/ |
* Service recherche, et de suppression multiple d'images a partir de divers critères. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryImageList extends Cel { |
/** |
* InventoryImageList.php |
* |
* in : utf8 |
* out : utf8 |
* |
* Service recherche, et de suppression multiple d'images a partir de divers critères |
* |
*/ |
class InventoryImageList extends Cel { |
/** |
* Recherche les images correspondant aux critères passés en paramètres |
* uid[0] : utilisateur obligatoire |
* $_GET : critères de filtrage de la forme critère1=valeur1;critère2=valeur2 |
*/ |
function getElement($uid) |
{ |
public function getElement($uid) { |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
$chercheur_images = new RechercheImage($this->config); |
$numero_page = 0; |
$taille_page = 50; |
$criteres = array(); |
$criteres = $_GET; |
if (isset($criteres['numero_page']) && isset($criteres['limite'])) { |
$numero_page = $criteres['numero_page']; |
46,18 → 35,18 |
$taille_page = $criteres['limite']; |
unset($criteres['limite']); |
} |
$debut = $taille_page * $numero_page; |
$debut = $taille_page*$numero_page ; |
$chercheur_images = new RechercheImage($this->config); |
$retour = $chercheur_images->rechercherImagesEtObservationAssociees($uid[0], $criteres, $debut, $taille_page); |
$retour = $chercheur_images->formaterPourEnvoiCel($retour); |
$retour_encode = json_encode($retour) ; |
$retour_encode = json_encode($retour); |
$retour_encode = $this->nettoyerCaracteresNuls($retour_encode); |
header("content-type: application/json") ; |
print $retour_encode ; |
exit() ; |
header('content-type: application/json'); |
print $retour_encode; |
exit(); |
} |
private function nettoyerCaracteresNuls($chaine) { |
65,16 → 54,14 |
} |
/** |
* Méthode appelée avec une requête de type DELETE. |
* Supprime les infos sur l'image et le fichier correspondant à l'ordre passé en parametre |
* Supporte la suppression multiple en passant plusieurs numéros séparés par des virgules |
* |
* @param int uid[0] id utilisateur |
* @param string uid[1] : ordre(s) image(s) obligatoire(s) séparés par des virgules |
* |
*/ |
function deleteElement($uid){ |
* Méthode appelée avec une requête de type DELETE. |
* Supprime les infos sur l'image et le fichier correspondant à l'ordre passé en parametre |
* Supporte la suppression multiple en passant plusieurs numéros séparés par des virgules |
* |
* @param int uid[0] id utilisateur |
* @param string uid[1] : ordre(s) image(s) obligatoire(s) séparés par des virgules |
*/ |
public function deleteElement($uid){ |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
81,24 → 68,21 |
if (!isset($uid[1]) || !$this->EstUneSuiteIdentifiantsImage($uid[1])) { |
return; |
} |
$ids_images = rtrim($uid[1], ','); |
$ids_images = explode(',',$ids_images); |
$gestionnaire_image = new GestionImage($this->config); |
$suppression_image = $gestionnaire_image->supprimerImage($ids_images); |
$gestionnaire_image = new GestionImage($this->config); |
$suppression_image = $gestionnaire_image->supprimerImage($ids_images); |
$this->envoyer('OK'); |
exit; |
exit(); |
} |
/** |
* Un ensemble d'identifiants est une suite d'identifiants séparés par des virgules |
* avec ou sans virgule terminale |
*/ |
private function estUneSuiteIdentifiantsImage($chaine) { |
$chaine = rtrim($chaine,','); |
// un ensemble d'identifiants est une suite d'identifiants séparés par des virgules |
// avec ou sans virgule terminale |
$reg_exp = "/^(([0-9])+,)*([0-9])+$/"; |
return preg_match($reg_exp, $chaine); |
} |
} |
?> |
} |
/trunk/jrest/services/CoordSearch.php |
---|
1,13 → 1,19 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Service recherche de commune par coordonnées et vice versa |
* Encodage en entrée : utf8 |
* Encodage en sortie : utf8 |
* Service recherche de commune par coordonnées et vice versa. |
* |
* @author Aurélien 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> |
* @version $Id$ |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 CoordSearch extends Cel { |
17,8 → 23,7 |
private $nom_service_geocoding = null; |
private $nom_service_reverse_geocoding = null; |
function CoordSearch($config) { |
public function __construct($config) { |
parent::__construct($config); |
$this->adresse_service_geonames = $this->config['cel']['url_service_geo_geonames']; |
37,8 → 42,7 |
* $uid[3] = code_postal (ou * si recherche d'une commune correspondant à des coordonnées) |
* $uid[4] = code_pays (ou * si recherche d'une commune correspondant à des coordonnées, par défaut vaut FR) |
*/ |
function getElement($uid){ |
public function getElement($uid){ |
$header = ''; |
$retour = array(); |
45,7 → 49,6 |
$params = $this->traiterParametres($uid); |
if ($this->estUneRequeteReverseGeocoding($params)) { |
$informations_communes = $this->effectuerRequeteReverseGeocodingCartoOsm($params['lat'], $params['lon']); |
if (!$informations_communes) { |
53,40 → 56,35 |
} |
$header = 'Content-Type: application/json; charset=UTF-8'; |
$retour = json_encode($informations_communes) ; |
} elseif ($this->estUneRequeteGeocoding($params)) { |
$retour = json_encode($informations_communes); |
} elseif ($this->estUneRequeteGeocoding($params)) { |
$informations_coord = $this->chercherCentroideCommuneBdd($params['commune'],$params['code_postal']); |
if(!$informations_coord) { |
if (!$informations_coord) { |
$informations_coord = $this->effectuerRequeteGeocodingGeonames($params['commune'],$params['code_postal'],$params['code_pays']); |
} |
$header = 'Content-Type: application/json; charset=UTF-8'; |
$retour = json_encode($informations_coord); |
} else { |
$header = 'HTTP/1.0 400 Bad Request'; |
$retour = 'Commune ou Coordonnées non spécifiées' ; |
} |
} else { |
$header = 'HTTP/1.0 400 Bad Request'; |
$retour = 'Commune ou Coordonnées non spécifiées'; |
} |
header($header); |
echo $retour; |
} |
protected function traiterParametres($params) { |
$lat = $this->affecterValeurParametreOuDefaut($params, 0, '*'); |
$lng = $this->affecterValeurParametreOuDefaut($params, 1, '*'); |
$commune = $this->affecterValeurParametreOuDefaut($params, 2, '*'); |
$code_postal = $this->affecterValeurParametreOuDefaut($params, 3, '*'); |
$code_pays = $this->affecterValeurParametreOuDefaut($params, 4, 'FR'); |
return array('lat' => $lat, 'lon' => $lng, 'commune' => $commune, |
'code_postal' => $code_postal, 'code_pays' => $code_pays); |
return array( |
'lat' => $lat, |
'lon' => $lng, |
'commune' => $commune, |
'code_postal' => $code_postal, |
'code_pays' => $code_pays); |
} |
private function affecterValeurParametreOuDefaut($params, $indice, $valeur_si_non_present) { |
94,7 → 92,6 |
} |
private function estUneRequeteReverseGeocoding($params) { |
return ($params['lat'] != '*' && $params['lon'] != '*'); |
} |
103,136 → 100,114 |
} |
private function effectuerRequeteReverseGeocodingCartoOsm($lat, $lon) { |
$infos_commune_json = @file_get_contents($this->adresse_service_local."?lat=".$lat."&lon=".$lon); |
$infos_commune_json = @file_get_contents($this->adresse_service_local."?lat=$lat&lon=$lon"); |
$infos_commune = json_decode($infos_commune_json); |
$retour = false; |
if ($this->estUnRetourOsmValide($infos_commune)) { |
$retour = array('nom' => $infos_commune->nom, 'code_insee' => $infos_commune->codeINSEE); |
} |
return $retour; |
} |
private function estUnretourOsmValide($retour) { |
return (is_a($retour,'stdClass') && property_exists($retour,'nom') && property_exists($retour,'codeINSEE')); |
return (is_a($retour, 'stdClass') && property_exists($retour, 'nom') && property_exists($retour, 'codeINSEE')); |
} |
private function effectuerRequeteReverseGeocodingGeonames($lat, $lon) { |
$infos_commune_json = @file_get_contents($this->adresse_service_geonames. |
$url = $this->adresse_service_geonames. |
$this->nom_service_reverse_geocoding. |
"?lat=".urlencode($lat)."&lng=".urlencode($lon). |
"&style=full"); |
'?lat='.urlencode($lat).'&lng='.urlencode($lon). |
'&style=full'; |
$infos_commune_json = @file_get_contents($url); |
$objet_retour = json_decode($infos_commune_json); |
$retour = false; |
if($this->estUnRetourReverseGeocodingGeonamesValide($objet_retour)) { |
$retour = array('nom' => $objet_retour->geonames[0]->adminName4, 'code_insee' => $objet_retour->geonames[0]->adminCode4); |
if ($this->estUnRetourReverseGeocodingGeonamesValide($objet_retour)) { |
$retour = array( |
'nom' => $objet_retour->geonames[0]->adminName4, |
'code_insee' => $objet_retour->geonames[0]->adminCode4); |
} |
return $retour; |
} |
private function estUnRetourReverseGeocodingGeonamesValide($retour) { |
$valide = false; |
if (is_a($retour,'stdClass') && property_exists($retour,'geonames') |
&& is_array($retour->geonames) && count($retour->geonames) > 0) { |
if (is_a($retour, 'stdClass') && property_exists($retour, 'geonames') |
&& is_array($retour->geonames) && count($retour->geonames) > 0) { |
$objet_resultats = $retour->geonames[0]; |
if (property_exists($objet_resultats,'adminName4') && property_exists($objet_resultats,'adminCode2')) { |
if (property_exists($objet_resultats, 'adminName4') && property_exists($objet_resultats, 'adminCode2')) { |
$valide = true; |
} |
} |
return $valide; |
} |
private function chercherCentroideCommuneBdd($commune, $departement) { |
$commune_formatee = str_replace(' ','_',$commune); |
$commune_formatee = str_replace('-','_',$commune_formatee); |
if(strlen($departement) > 2) { |
$departement = substr($departement,0,2); |
$commune_formatee = str_replace(array(' ', '-'), '_', $commune); |
if (strlen($departement) > 2) { |
$departement = substr($departement, 0, 2); |
} |
$requete_selection_commune = 'SELECT utm_x, utm_y, utm_secteur, code FROM cel_zones_geo '. |
'WHERE nom LIKE '.Cel::db()->proteger($commune_formatee).' AND code LIKE '.Cel::db()->proteger($departement.'%'); |
$requete = 'SELECT utm_x, utm_y, utm_secteur, code FROM cel_zones_geo '. |
'WHERE nom LIKE '.Cel::db()->proteger($commune_formatee).' '. |
'AND code LIKE '.Cel::db()->proteger($departement.'%').' '. |
' -- '.__FILE__.':'.__LINE__; |
$commune_coordonnees = Cel::db()->requeter($requete); |
$commune_coordonnees = Cel::db()->requeter($requete_selection_commune); |
$retour = false; |
if ($commune_coordonnees && is_array($commune_coordonnees) && count($commune_coordonnees) > 0) { |
$lat_lon = $this->convertirUtmVersLatLong($commune_coordonnees[0]['utm_x'],$commune_coordonnees[0]['utm_y'],$commune_coordonnees[0]['utm_secteur']); |
if($commune_coordonnees && is_array($commune_coordonnees) && count($commune_coordonnees) > 0) { |
$lat_lon = $this->convertirUtmVersLatLong($commune_coordonnees[0]['utm_x'],$commune_coordonnees[0]['utm_y'],$commune_coordonnees[0]['utm_secteur']); |
$retour = array('lat' => (float)$lat_lon['lat'], |
'lng' => (float)$lat_lon['lng'], |
'nom' => $commune, |
'code_insee' => $commune_coordonnees[0]['code'] |
); |
$retour = array( |
'lat' => (float) $lat_lon['lat'], |
'lng' => (float) $lat_lon['lng'], |
'nom' => $commune, |
'code_insee' => $commune_coordonnees[0]['code'] |
); |
} |
return $retour; |
} |
private function convertirUtmVersLatLong($x, $y, $sector) { |
$lat_long = array(); |
$convertisseur = new gPoint(); |
$convertisseur->setUTM($x, $y, $sector); |
$convertisseur->convertTMtoLL(); |
$lat_long = array(); |
$lat_long['lat'] = str_replace(',','.',$convertisseur->Lat()); |
$lat_long['lng'] = str_replace(',','.',$convertisseur->Long()); |
return $lat_long; |
} |
private function effectuerRequeteGeocodingGeonames($commune, $code_postal, $code_pays) { |
$requete = $this->adresse_service_geonames. |
$this->nom_service_geocoding. |
"?placename_startsWith=".urlencode($commune); |
if($code_postal != '*') { |
$requete .= "&postalcode_startsWith=".urlencode($code_postal); |
} |
$requete .= "&country=".urlencode($code_pays)."&maxRows=10" ; |
$coord_json = @file_get_contents($requete); |
$url = $this->adresse_service_geonames. |
$this->nom_service_geocoding. |
'?placename_startsWith='.urlencode($commune). |
(($code_postal != '*') ? '&postalcode_startsWith='.urlencode($code_postal) : ''). |
'&country='.urlencode($code_pays).'&maxRows=10'; |
$coord_json = @file_get_contents($url); |
$objet_retour = json_decode($coord_json); |
$retour = false; |
if($this->estUnRetourGeocodingGeonamesValide($objet_retour)) { |
$retour = array('lat' => $objet_retour->postalCodes[0]->lat, |
'lng' => $objet_retour->postalCodes[0]->lng, |
'nom' => $objet_retour->postalCodes[0]->placeName, |
'code_insee' => $objet_retour->postalCodes[0]->postalCode |
); |
if ($this->estUnRetourGeocodingGeonamesValide($objet_retour)) { |
$retour = array( |
'lat' => $objet_retour->postalCodes[0]->lat, |
'lng' => $objet_retour->postalCodes[0]->lng, |
'nom' => $objet_retour->postalCodes[0]->placeName, |
'code_insee' => $objet_retour->postalCodes[0]->postalCode |
); |
} |
return $retour; |
} |
private function estUnRetourGeocodingGeonamesValide($retour) { |
$valide = false; |
if (is_a($retour,'stdClass') && property_exists($retour,'postalCodes') |
&& is_array($retour->postalCodes) && count($retour->postalCodes) > 0) { |
if (is_a($retour, 'stdClass') && property_exists($retour, 'postalCodes') |
&& is_array($retour->postalCodes) && count($retour->postalCodes) > 0) { |
$objet_resultats = $retour->postalCodes[0]; |
if (property_exists($objet_resultats,'lat') && property_exists($objet_resultats,'lng')) { |
if (property_exists($objet_resultats, 'lat') && property_exists($objet_resultats, 'lng')) { |
$valide = true; |
} |
} |
return $valide; |
} |
} |
?> |
} |
/trunk/jrest/services/LicenceUtilisateur.php |
---|
1,52 → 1,53 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* Classe gérant l'acceptation de la licence utilisateur |
* Encodage en entrée : utf8 |
* Encodage en sortie : utf8 |
* Service gérant l'acceptation de la licence utilisateur. |
* |
* @author Aurélien 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> |
* @version $Id$ |
* @copyright © 2010, Aurélien Peronnet |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 LicenceUtilisateur extends Cel { |
/** |
* Fonction appelée sur un POST |
* |
* |
* Accepte ou refuse la licence utilisateur, en mettant à jour la base de données pour |
* l'utilisateur indiqué |
* |
* |
* @param array $uid |
* @param array $pairs |
*/ |
function updateElement($uid,$pairs) { |
if(!isset($uid[0]) && is_numeric($uid[0])) { |
public function updateElement($uid,$pairs) { |
if (!isset($uid[0]) && is_numeric($uid[0])) { |
return; |
} |
if(!isset($pairs['licence'])) { |
if (!isset($pairs['licence'])) { |
return; |
} |
$requete_acceptation_licence = 'UPDATE cel_utilisateurs_infos '. |
'SET licence_acceptee = '.Cel::db()->proteger($pairs['licence']). |
'WHERE id_utilisateur = '.Cel::db()->proteger($uid[0]); |
$resultat_acceptation_licence = Cel::db()->executer($requete_acceptation_licence); |
} |
$requete = 'UPDATE cel_utilisateurs_infos '. |
'SET licence_acceptee = '.Cel::db()->proteger($pairs['licence']). |
'WHERE id_utilisateur = '.Cel::db()->proteger($uid[0]).' '. |
' -- '.__FILE__.':'.__LINE__; |
$resultat_acceptation_licence = Cel::db()->executer($requete); |
$resultat = false; |
if($resultat_acceptation_licence) { |
$resultat = "OK"; |
if ($resultat_acceptation_licence) { |
$resultat = 'OK'; |
} |
echo $resultat; |
exit; |
exit(); |
} |
} |
?> |
} |
/trunk/jrest/services/ImageProvider.php |
---|
1,69 → 1,50 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package papyrus_bp |
* @author aurelien <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/papyrus_bp/ |
*/ |
/** |
* Classe fournissant des images au format demandé ou bien aux dimensions demandées |
* |
* in=utf8 |
* out=utf8 |
* |
* Service fournissant des images au format demandé ou bien aux dimensions demandées. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 ImageProvider extends Cel { |
function getElement($uid){ |
if(!isset($uid[0])) { |
public function getElement($uid){ |
if (!isset($uid[0])) { |
return; |
} |
$id_image = $uid[0]; |
$format = 'temp'; |
if(isset($_GET['format'])) { |
if (isset($_GET['format'])) { |
$format = $_GET['format']; |
} |
if(isset($_GET['dimensions'])) { |
if (isset($_GET['dimensions'])) { |
$dimensions = $_GET['dimensions']; |
} else { |
if(isset($this->config['cel']['format_'.$format])) { |
$dimensions = $this->config['cel']['format_'.$format]; |
} |
} else if (isset($this->config['cel']['format_'.$format])) { |
$dimensions = $this->config['cel']['format_'.$format]; |
} |
$this->config['cel']['format_'.$format] = $dimensions; |
$generateur_image = new ImageRecreation($this->config); |
$infos_image = $generateur_image->obtenirImageEtInfosPourId($id_image); |
if(!$infos_image) { |
if (!$infos_image) { |
header('HTTP/1.0 404 Not Found'); |
exit; |
exit(); |
} else { |
$image_generee = $generateur_image->creerMiniatureImageSelonFormat($infos_image, $format); |
header('Content-type: image/jpeg'); |
imagejpeg($image_generee); |
exit(); |
} |
$image_generee = $generateur_image->creerMiniatureImageSelonFormat($infos_image, $format); |
header('Content-type: image/jpeg'); |
imagejpeg($image_generee); |
exit; |
} |
private function estUneImageALaDemande() { |
} |
} |
?> |
} |
/trunk/jrest/services/InventoryExport.php |
---|
1,39 → 1,32 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author David Delon <david@tela-botania.org> |
* @author Aurélien Peronnet <aurelien@tela-botania.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/ |
*/ |
* Service d'export vers feuille de calcul d'une sélection de relevés. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Observations |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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> |
*/ |
/** |
* in:utf8 |
* out:iso8859 |
* |
* Export vers feuille de calcul d'une selection de releves |
* |
*/ |
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(dirname(realpath(__FILE__))) . '/lib'); |
// la sortie est binaire (xls), mais OLE n'est pas compatible E_ALL en PHP-5.4 |
error_reporting(error_reporting() ^ E_STRICT); |
require_once("lib/OLE.php"); |
require_once("lib/Spreadsheet/Excel/Writer.php"); |
require_once 'lib/OLE.php'; |
require_once 'lib/Spreadsheet/Excel/Writer.php'; |
class InventoryExport extends Cel { |
private $extendSpreadsheetProductor; |
function InventoryExport($config) { |
public function __construct($config) { |
parent::__construct($config); |
$this->extendSpreadsheetProductor = new SpreadsheetProductor(); |
40,128 → 33,108 |
$this->extendSpreadsheetProductor->initSpreadsheet(); |
} |
function getElement($uid){ |
public function getElement($uid){ |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
$criteres = $_GET; |
$chercheur_observations = new RechercheObservation($this->config); |
$criteres = $_GET; |
$chercheur_observations = new RechercheObservation($this->config); |
// Creating a workbook |
$workbook = new Spreadsheet_Excel_Writer(); |
$workbook->setVersion(8); |
$workbook->send('liste.xls'); |
// Creating a workbook |
$workbook = new Spreadsheet_Excel_Writer(); |
$workbook->setVersion(8); |
// Creating a worksheet |
$worksheet = $workbook->addWorksheet('Liste'); |
$worksheet->setInputEncoding('utf-8'); |
$worksheet->write(0,0,'Espece'); |
$worksheet->write(0,1,'Numero nomenclatural'); |
$worksheet->write(0,2,'Nom retenu'); |
$worksheet->write(0,3,'Numero nomenclatural nom retenu'); |
$worksheet->write(0,4,'Numero taxonomique'); |
$worksheet->write(0,5,'Famille'); |
$worksheet->write(0,6,'Referentiel taxonomique'); |
$worksheet->write(0,7,'Commune'); |
$worksheet->write(0,8,'Identifiant Commune'); |
$worksheet->write(0,9,'Date'); |
$worksheet->write(0,10,'Lieu-dit'); |
$worksheet->write(0,11,'Station'); |
$worksheet->write(0,12,'Milieu'); |
$worksheet->write(0,13,'Notes'); |
$worksheet->write(0,14,'Latitude'); |
$worksheet->write(0,15,'Longitude'); |
$worksheet->write(0,16,'Referentiel Geographique'); |
$worksheet->write(0,17,'Ordre'); |
$worksheet->write(0,18,'Identifiant'); |
$workbook->send('liste.xls'); |
$numero_page = isset($criteres['numero_page']) ? $criteres['numero_page'] : 0; |
$limite = isset($criteres['limite']) ? $criteres['limite'] : 0; |
// Creating a worksheet |
$worksheet = $workbook->addWorksheet('Liste'); |
$worksheet->setInputEncoding('utf-8'); |
$worksheet->write(0,0,'Espece'); |
$worksheet->write(0,1,'Numero nomenclatural'); |
$worksheet->write(0,2,'Nom retenu'); |
$worksheet->write(0,3,'Numero nomenclatural nom retenu'); |
$worksheet->write(0,4,'Numero taxonomique'); |
$worksheet->write(0,5,'Famille'); |
$worksheet->write(0,6,'Referentiel taxonomique'); |
$worksheet->write(0,7,'Commune'); |
$worksheet->write(0,8,'Identifiant Commune'); |
$worksheet->write(0,9,'Date'); |
$worksheet->write(0,10,'Lieu-dit'); |
$worksheet->write(0,11,'Station'); |
$worksheet->write(0,12,'Milieu'); |
$worksheet->write(0,13,'Notes'); |
$worksheet->write(0,14,'Latitude'); |
$worksheet->write(0,15,'Longitude'); |
$worksheet->write(0,16,'Referentiel Geographique'); |
$worksheet->write(0,17,'Ordre'); |
$worksheet->write(0,18,'Identifiant'); |
$numero_page = isset($criteres['numero_page']) ? $criteres['numero_page'] : 0; |
$limite = isset($criteres['limite']) ? $criteres['limite'] : 0; |
$observations = $chercheur_observations->rechercherObservations($uid[0], $criteres, $numero_page, $limite)->get(); |
if (!$observations) { |
header('HTTP/1.0 204 No Content'); |
exit; |
} |
$observations = $chercheur_observations->rechercherObservations($uid[0], $criteres, $numero_page, $limite)->get(); |
if(!$observations) { |
header('HTTP/1.0 204 No Content'); |
exit; |
$ids_obs = array(); |
$indices_lignes_obs = array(); |
$i = 1; |
foreach ($observations as &$obs) { |
$obs = $this->denullifierTableauValeurCel($obs); |
$ids_obs[] = $obs['id_observation']; |
$indices_lignes_obs[$obs['id_observation']] = $i; |
if ($obs['date_observation'] != '0000-00-00 00:00:00') { |
$obs['date_observation'] = $this->formaterDate($obs['date_observation']); |
} else { |
$obs['date_observation'] = '00/00/0000'; |
} |
$ids_obs = array(); |
$indices_lignes_obs = array(); |
$i=1; |
foreach ($observations as &$obs) { |
$worksheet->write($i,0,$obs['nom_sel']); |
$worksheet->write($i,1,$obs['nom_sel_nn']); |
$worksheet->write($i,2,$obs['nom_ret']); |
$worksheet->write($i,3,$obs['nom_ret_nn']); |
$worksheet->write($i,4,$obs['nt']); |
$worksheet->write($i,5,$obs['famille']); |
$worksheet->write($i,6,$obs['nom_referentiel']); |
$worksheet->write($i,7,$obs['zone_geo']); |
$worksheet->write($i,8,$this->convertirCodeZoneGeoVersDepartement($obs['ce_zone_geo'])); |
$worksheet->write($i,9,$obs['date_observation']); |
$worksheet->write($i,10,$obs['lieudit']); |
$worksheet->write($i,11,$obs['station']); |
$worksheet->write($i,12,$obs['milieu']); |
$worksheet->write($i,13,$obs['commentaire']); |
$worksheet->write($i,14,$obs['latitude']); |
$worksheet->write($i,15,$obs['longitude']); |
$worksheet->write($i,16,$obs['geodatum']); |
$worksheet->write($i,17,$obs['ordre']); |
$worksheet->write($i,18,$obs['id_observation']); |
$i++; |
} |
$obs = $this->denullifierTableauValeurCel($obs); |
$ids_obs[] = $obs['id_observation']; |
$indices_lignes_obs[$obs['id_observation']] = $i; |
if ($obs['date_observation'] != "0000-00-00 00:00:00") { |
$obs['date_observation'] = $this->formaterDate($obs['date_observation']); |
} |
else { |
$obs['date_observation']="00/00/0000"; |
} |
$indice_dernier_champ_supp = 19; |
$indices_champs_supp = array(); |
$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs'); |
$champs_supp_par_obs = $gestion_champs_etendus->consulterParLots($ids_obs); |
$worksheet->write($i,0,$obs['nom_sel']); |
$worksheet->write($i,1,$obs['nom_sel_nn']); |
$worksheet->write($i,2,$obs['nom_ret']); |
$worksheet->write($i,3,$obs['nom_ret_nn']); |
$worksheet->write($i,4,$obs['nt']); |
$worksheet->write($i,5,$obs['famille']); |
$worksheet->write($i,6,$obs['nom_referentiel']); |
$worksheet->write($i,7,$obs['zone_geo']); |
$worksheet->write($i,8,$this->convertirCodeZoneGeoVersDepartement($obs['ce_zone_geo'])); |
$worksheet->write($i,9,$obs['date_observation']); |
$worksheet->write($i,10,$obs['lieudit']); |
$worksheet->write($i,11,$obs['station']); |
$worksheet->write($i,12,$obs['milieu']); |
$worksheet->write($i,13,$obs['commentaire']); |
$worksheet->write($i,14,$obs['latitude']); |
$worksheet->write($i,15,$obs['longitude']); |
$worksheet->write($i,16,$obs['geodatum']); |
$worksheet->write($i,17,$obs['ordre']); |
$worksheet->write($i,18,$obs['id_observation']); |
$i++; |
} |
$indice_dernier_champ_supp = 19; |
$indices_champs_supp = array(); |
$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs'); |
$champs_supp_par_obs = $gestion_champs_etendus->consulterParLots($ids_obs); |
foreach($champs_supp_par_obs as $id_obs => &$champs_supp) { |
foreach($champs_supp as &$champ_etendu) { |
$cle = $champ_etendu->cle; |
$label = $champ_etendu->label; |
$valeur = $champ_etendu->valeur; |
if(!isset($indices_champs_supp[$cle])) { |
$indices_champs_supp[$cle] = $indice_dernier_champ_supp; |
$worksheet->write(0, $indice_dernier_champ_supp, utf8_decode($label)); |
$indice_dernier_champ_supp++; |
} |
$num_ligne_obs = $indices_lignes_obs[$id_obs]; |
$worksheet->write($num_ligne_obs,$indices_champs_supp[$cle],utf8_decode($valeur)); |
} |
} |
$workbook->close(); |
exit(); |
foreach ($champs_supp_par_obs as $id_obs => &$champs_supp) { |
foreach ($champs_supp as &$champ_etendu) { |
$cle = $champ_etendu->cle; |
$label = $champ_etendu->label; |
$valeur = $champ_etendu->valeur; |
if(!isset($indices_champs_supp[$cle])) { |
$indices_champs_supp[$cle] = $indice_dernier_champ_supp; |
$worksheet->write(0, $indice_dernier_champ_supp, utf8_decode($label)); |
$indice_dernier_champ_supp++; |
} |
$num_ligne_obs = $indices_lignes_obs[$id_obs]; |
$worksheet->write($num_ligne_obs,$indices_champs_supp[$cle],utf8_decode($valeur)); |
} |
} |
$workbook->close(); |
exit(); |
} |
} |
/* +--Fin du code ---------------------------------------------------------------------------------------+ |
* $Log$ |
* Revision 1.7 2008-11-13 11:29:12 ddelon |
* Reecriture gwt-ext |
* |
* Revision 1.6 2008-01-30 08:57:28 ddelon |
* fin mise en place mygwt |
* |
* Revision 1.5 2007-06-06 13:31:16 ddelon |
* v0.09 |
* |
* Revision 1.4 2007-05-22 12:54:09 ddelon |
* Securisation acces utilisateur |
*/ |
?> |
} |
/trunk/jrest/services/InventoryImage.php |
---|
1,24 → 1,20 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @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/ |
*/ |
/** |
* Service recherche et ajout d'image a partir de divers critères |
* in=utf8 |
* out=utf8 |
* |
*/ |
* Service recherche et ajout d'image a partir de divers critères. |
* |
* @internal Mininum PHP version : 5.2 |
* @category CEL |
* @package Services |
* @subpackage Images |
* @version 0.1 |
* @author Mathias CHOUET <mathias@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 InventoryImage extends Cel { |
/** |
27,25 → 23,21 |
* @param int uid[0] : utilisateur obligatoire |
* @param int uid[1] : identifiant image obligatoire |
*/ |
public function getElement($uid) |
{ |
public function getElement($uid) { |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
$this->controleUtilisateur($uid[0]); |
if(!isset($uid[0]) || !isset($uid[1])) { |
return; |
} |
if (!isset($uid[0]) || !isset($uid[1])) { |
return; |
} |
$parametres = array('ordre' => $uid[1]); |
$retour = null; |
$chercheurImage = new RechercheImage($this->config); |
$image_recherchee = $chercheurImage->rechercherImages($uid[0], $parametres, 0, 1); |
if (count($image_recherchee) > 0) { |
$retour = $image_recherchee[0]; |
} |
$chercheur_image = new RechercheImage($this->config); |
$parametres = array('ordre' => $uid[1]); |
$retour = null; |
$image_recherchee = $chercheur_image->rechercherImages($uid[0], $parametres, 0, 1); |
if(count($image_recherchee) > 0) { |
$retour = $image_recherchee[0]; |
} |
$this->envoyerJson($retour); |
return true; |
} |
58,17 → 50,16 |
* @param int $uid[1] ordre de l'image relatif à l'utilisateur |
* @param pairs array tableau contenant les valeurs de metadonnées à modifier |
*/ |
public function updateElement($uid,$pairs) |
{ |
public function updateElement($uid,$pairs) { |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
if(count($pairs) == 0 || !isset($uid[1])) { |
if (count($pairs) == 0 || !isset($uid[1])) { |
return false; |
} |
$gestionnaire_image = new GestionImage($this->config); |
$resultat_mise_a_jour = $gestionnaire_image->modifierImage($uid[0],$uid[1],$pairs); |
$gestionnaireImage = new GestionImage($this->config); |
$resultat_mise_a_jour = $gestionnaireImage->modifierImage($uid[0],$uid[1],$pairs); |
$retour = false; |
$ok = false; |
88,10 → 79,8 |
* |
* @param $pairs array tableau contenant les valeurs de metadonnées à ajouter |
*/ |
function createElement($pairs) |
{ |
if(self::ARRET_SERVICE) { |
public function createElement($pairs) { |
if (self::ARRET_SERVICE) { |
header('Status: 503 Service Temporarily Unavailable'); |
echo "L'envoi d'images au cel est temporairement désactivé"; |
exit; |
103,37 → 92,34 |
$infos_fichier = $file ; |
} |
$gestionnaire_image = new GestionImage($this->config); |
$gestionnaireImage = new GestionImage($this->config); |
$id_utilisateur = $pairs['ce_utilisateur']; |
if ($gestionnaire_image->ajouterImage($id_utilisateur, $infos_fichier)) { |
if ($gestionnaireImage->ajouterImage($id_utilisateur, $infos_fichier)) { |
// l'upload demande de court-circuiter le fonctionnement normal de JREST |
// en quittant directement après l'envoi |
$this->envoyerMessageCreationEffectuee(); |
exit; |
exit(); |
} |
} |
private function envoyerMessageCreationEffectuee() { |
header('HTTP/1.0 200 Created'); |
echo 'OK'; |
exit() ; |
exit(); |
} |
/** |
* Méthode appelée avec une requête de type DELETE. |
* Supprime les infos sur l'image et le fichier correspondant à l'ordre passé en parametre |
* Supporte la suppression multiple en passant plusieurs numéros séparés par des virgules |
* |
* @param int uid[0] id utilisateur |
* @param string uid[1] : ordre(s) image(s) obligatoire(s) séparés par des virgules |
* |
*/ |
function deleteElement($uid){ |
if(self::ARRET_SERVICE) { |
* Méthode appelée avec une requête de type DELETE. |
* Supprime les infos sur l'image et le fichier correspondant à l'ordre passé en parametre |
* Supporte la suppression multiple en passant plusieurs numéros séparés par des virgules |
* |
* @param int uid[0] id utilisateur |
* @param string uid[1] : ordre(s) image(s) obligatoire(s) séparés par des virgules |
* |
*/ |
public function deleteElement($uid){ |
if (self::ARRET_SERVICE) { |
header('Status: 503 Service Temporarily Unavailable'); |
echo "L'envoi d'images au cel est temporairement désactivé"; |
exit; |
140,26 → 126,20 |
} |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
if (!isset($uid[1]) || !$this->EstUneSuiteIdentifiantsImage($uid[1])) { |
if (!isset($uid[1]) || !$this->estUneSuiteIdentifiantsImage($uid[1])) { |
return; |
} |
$ids_images = explode(',',$uid[1]); |
$gestionnaire_image = new GestionImage($this->config); |
$suppression_image = $gestionnaire_image->supprimerImage($ids_images); |
$gestionnaireImage = new GestionImage($this->config); |
$gestionnaireImage->supprimerImage($ids_images); |
$this->envoyer('OK'); |
} |
/** Un ensemble d'identifiants est une suite d'identifiants séparés par des virgules |
* sans virgule terminale |
*/ |
private function estUneSuiteIdentifiantsImage($chaine) { |
// un ensemble d'identifiants est une suite d'identifiants séparés par des virgules |
// sans virgule terminale |
$reg_exp = "/^(([0-9])+,)*([0-9])+$/"; |
return preg_match($reg_exp, $chaine); |
} |
} |
?> |
} |