Subversion Repositories eFlore/Applications.cel

Compare Revisions

Regard whitespace Rev 2142 → Rev 2143

/trunk/jrest/services/CelWidgetMapPoint.php
122,7 → 122,7
$this->construireWhereNombreDeJours().
' GROUP BY id_coord';
$resultats_emplacements = Cel::db()->executerRequete($requete);
$resultats_emplacements = Cel::db()->requeter($requete);
$emplacements = $this->traiterEmplacements($resultats_emplacements, $this->compterObservations($params));
return $emplacements;
}
158,7 → 158,7
$this->construireWhereTag().
$this->construireWhereNombreDeJours();
 
$resultats_nb_obs = Cel::db()->executerRequete($requete);
$resultats_nb_obs = Cel::db()->requeter($requete);
return $resultats_nb_obs[0]['nb'];
}
 
754,7 → 754,7
'ORDER BY utilisateur ASC, ordre ASC';
//$this->debug[] = $requete;
//die($requete);
$resultats = Cel::db()->executerRequete($requete);
$resultats = Cel::db()->requeter($requete);
 
$observations = null;
if ($resultats != false) {
1063,7 → 1063,7
'ORDER BY utilisateur ASC, ci.ordre ASC';
//$this->debug[] = $requete;
//die($requete);
$elements_tag = Cel::db()->executerRequete($requete);
$elements_tag = Cel::db()->requeter($requete);
$requete_tag = array();
if ($elements_tag != false && count($elements_tag) > 0) {
/trunk/jrest/services/CelSyndicationObservation.php
213,7 → 213,7
'ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby : 'date_modification DESC').' '.
"LIMIT $this->start,$this->limit ";
 
$elements = Cel::db()->executerRequete($requete);
$elements = Cel::db()->requeter($requete);
 
// Création du contenu
$contenu = $this->executerService($elements);
282,7 → 282,7
'date_modification DESC, zone_geo ASC').' '.
"LIMIT $this->start,$this->limit ";
$elements = Cel::db()->executerRequete($requete);
$elements = Cel::db()->requeter($requete);
 
// Création du contenu
if ($elements != false && count($elements) > 0) {
/trunk/jrest/services/InventoryUserList.php
1,30 → 1,19
<?php
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
/**
* PHP Version 5
* 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
*
* @category PHP
* @package jrest
* @author Aurélien Peronnet <aurelien@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @copyright © 2010-2014 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @version SVN: <svn_id>
* @link /doc/jrest/
*/
 
/**
*
* 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
*
**/
class InventoryUserList extends Cel {
 
function getElement($uid){
$this->controleUtilisateur($uid[0]);
 
$requete_utilisateurs ='SELECT DISTINCT id_utilisateur, courriel FROM cel_utilisateurs '.
35,17 → 24,14
$this->construireRequeteConditionTableObs($uid).' '.
'LIMIT 0,50';
$utilisateurs = Cel::db()->executerRequete($requete_utilisateurs);
$utilisateurs = Cel::db()->requeter($requete_utilisateurs);
$liste_utilisateurs = array();
if (!$utilisateurs) {
} else {
if ($utilisateurs) {
foreach ($utilisateurs as $utilisateur) {
$liste_utilisateurs[] = $utilisateur;
}
}
usort($liste_utilisateurs,'trierUtilisateurs');
$this->envoyerJson($liste_utilisateurs);
53,47 → 39,33
}
private function construireRequeteConditionTableUtilisateurs($params) {
$condition = '';
if (isset($params[1]) && $params[1] != null && $params[1] != '*') {
$condition .= ' WHERE courriel LIKE '.Cel::db()->proteger($params[1].'%');
}
return $condition;
}
private function construireRequeteConditionTableObs($params) {
$condition = '';
if (isset($params[1]) && $params[1] != null && $params[1] != '*') {
$condition .= ' WHERE courriel_utilisateur LIKE '.Cel::db()->proteger($params[1].'%');
}
return $condition;
}
}
 
function trierUtilisateurs($val1, $val2) {
if (strstr($val1['courriel'],'@')) {
if (strstr($val2['courriel'],'@')) {
return strcmp($val1['courriel'],$val2['courriel']);
}
else
{
} else {
return -1 ;
}
}
else
{
} else {
if (strstr($val2['courriel'],'@')) {
return 1 ;
}
else
{
} else {
return strcmp($val1['courriel'],$val2['courriel']) ;
}
}
/trunk/jrest/services/CelImageDoublon.php
95,7 → 95,7
'FROM cel_images '.
"WHERE ce_utilisateur = '$utilisateur' ";
 
$images = Cel::db()->executerRequete($requete);
$images = Cel::db()->requeter($requete);
 
// Traitement
$doublons = array();
134,7 → 134,7
"WHERE cim.ce_utilisateur = '$utilisateur' ".
' AND cim.id_image IN ('.implode(',', $images_doublons_id).')';
 
$infos = Cel::db()->executerRequete($requete);
$infos = Cel::db()->requeter($requete);
foreach ($infos as $info) {
if (isset($doublons[$info['md5']][$info['id_image']]) && ! $this->etreNull($info['ordre_obs'])) {
/trunk/jrest/services/CelSuppressionObservation.php
17,7 → 17,6
* Supporte l'appel multiple en passant plusieurs numéros séparés par des virgules
*
* @param string uid[0] : id(s) observation(s) obligatoire(s) séparés par des virgules
*
*/
public function deleteElement($uid){
if ($this->controlerAccessibiliteWs()) {
/trunk/jrest/services/CoordSearch.php
162,7 → 162,7
$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.'%');
 
$commune_coordonnees = Cel::db()->executerRequete($requete_selection_commune);
$commune_coordonnees = Cel::db()->requeter($requete_selection_commune);
 
$retour = false;
 
/trunk/jrest/services/CelStatistique.php
63,7 → 63,7
'GROUP BY periode '.
'ORDER BY periode ';
 
$resulats = Cel::db()->executerRequete($requete);
$resulats = Cel::db()->requeter($requete);
 
$img_totale = array();
foreach ($resulats as $info) {
134,7 → 134,7
'GROUP BY periode '.
'ORDER BY periode ';
 
$resulats = Cel::db()->executerRequete($requete);
$resulats = Cel::db()->requeter($requete);
 
$img_totale = array();
foreach ($resulats as $info) {
204,7 → 204,7
" AND courriel_utilisateur LIKE '%@%' ".
'GROUP BY courriel_utilisateur '.
'ORDER BY date_min ASC ';
$resultats = Cel::db()->executerRequete($requete);
$resultats = Cel::db()->requeter($requete);
 
// Trie des données et des dates pour les étiquettes des axes
$dates = array();
643,7 → 643,7
$requete = 'SELECT courriel_utilisateur, COUNT(id_observation) AS nbre '.
'FROM cel_obs '.
'GROUP BY courriel_utilisateur ';
$utilisateurs = Cel::db()->executerRequete($requete);
$utilisateurs = Cel::db()->requeter($requete);
 
// Création des classes d'utilisateurs
$classes = array('00->10' => 0, '11->50' => 0, '51->100' => 0, '101->500' => 0, '500->∞' => 0);
710,7 → 710,7
$requete = 'SELECT courriel_utilisateur, COUNT(id_observation) AS nbre '.
'FROM cel_obs '.
'GROUP BY courriel_utilisateur ';
$utilisateurs = Cel::db()->executerRequete($requete);
$utilisateurs = Cel::db()->requeter($requete);
 
// Création des classes d'utilisateurs
$classes = array('00->10' => 0, '11->50' => 0, '51->100' => 0, '101->500' => 0, '500->∞' => 0);
787,7 → 787,7
'WHERE date_creation != "0000-00-00 00:00:00" '.
' AND courriel_utilisateur '.($utilisateur ? "= $utilisateur " : 'LIKE "%@%" ').
'GROUP BY periode, courriel_utilisateur ';
$infos = Cel::db()->executerRequete($requete);
$infos = Cel::db()->requeter($requete);
// Traitement résulat requête
$observations = array();
861,7 → 861,7
" AND courriel_utilisateur LIKE '%@%' ".
'GROUP BY courriel_utilisateur '.
'ORDER BY date_min ASC ';
$resultats = Cel::db()->executerRequete($requete);
$resultats = Cel::db()->requeter($requete);
 
// Trie des données
$max_obs = 0;
938,7 → 938,7
((is_null($order_by)) ? '' : "ORDER BY $order_by ");
((is_null($limit)) ? '' : "LIMIT $limit ");
 
$evolution = Cel::db()->executerRequete($requete);
$evolution = Cel::db()->requeter($requete);
 
// Traitement du tableau
$donnees_traitees = array();
961,7 → 961,7
"FROM $table ".
((isset($where)) ? "WHERE $where " : '');
 
$nbre = Cel::db()->executerRequete($requete, 'Column');
$nbre = Cel::db()->requeterValeurUnique($requete);
return $nbre;
}
}
/trunk/jrest/services/CelWidgetSaisie.php
137,7 → 137,7
$valeurs = implode(', ', $obs);
$requete = "INSERT INTO cel_obs ($champs) VALUES ($valeurs) ";
 
if (Cel::db()->executerRequeteSimple($requete) === false) {
if (Cel::db()->executer($requete) === false) {
$this->messages[] = "Un problème est survenu lors de l'insertion de l'obs dans la base de données.";
} else {
$obs_a_taguer_ordres[] = trim($obs['ordre'], "'");
347,7 → 347,7
"FROM cel_obs ".
"WHERE ce_utilisateur = ".Cel::db()->proteger($id_utilisateur)." ";
 
$ordre_max = Cel::db()->executerRequete($requete, 'Column');
$ordre_max = Cel::db()->requeterValeurUnique($requete);
if ($ordre_max !== false) {
$ordre = $ordre_max + 1;
}
488,7 → 488,7
' ON DUPLICATE KEY UPDATE id_image = id_image';
 
$liaison = true;
if (Cel::db()->executerRequeteSimple($requete) === false) {
if (Cel::db()->executer($requete) === false) {
$this->messages[] = "La requête de liaison de l'obs $id_obs à l'image $id_image pour l'utilisateur $id_utilisateur a échouée.";
$liaison = false;
}
505,7 → 505,7
"WHERE ce_utilisateur = $id_utilisateur ".
" AND ordre = $ordre ";
 
$resultat = Cel::db()->executerRequete($requete);
$resultat = Cel::db()->requeter($requete);
 
$id_obs = (count($resultat) > 0) ? $resultat[0]['id_observation'] : false;
return $id_obs;
521,7 → 521,7
"WHERE ce_utilisateur = $id_utilisateur ".
" AND ordre IN (".implode(',',$ordres).") ";
$this->debug[] = $requete;
$resultat = Cel::db()->executerRequete($requete);
$resultat = Cel::db()->requeter($requete);
$ids = array();
foreach($resultat as $id) {
$ids[] = $id['id_observation'];
578,7 → 578,7
$infosImage['md5'] = md5_file($cheminImage);
$this->debug[] = 'Nom fichier img meta :'.$nomFichierImage;
$requete = $this->construireRequeteInsertionImage($infosImage);
$resultat = Cel::db()->executerRequeteSimple($requete);
$resultat = Cel::db()->executer($requete);
if ($resultat !== false) {
$idImage = $this->obtenirIdImagePourIdentifiantEtOrdre($idUtilisateur, $nouvelOrdre);
if ($idImage !== false) {
619,7 → 619,7
$requete = 'SELECT MAX(ordre) as max_ordre '.
'FROM cel_images '.
"WHERE ce_utilisateur = $id_utilisateur ";
$resultat = Cel::db()->executerRequete($requete);
$resultat = Cel::db()->requeter($requete);
 
$ordre = ($resultat) ? ++$resultat[0]['max_ordre'] : 0;
return $ordre;
633,7 → 633,7
'FROM cel_images '.
"WHERE ce_utilisateur = $id_utilisateur ".
" AND ordre = $ordre ";
$resultat = Cel::db()->executerRequete($requete);
$resultat = Cel::db()->requeter($requete);
 
$id_image = (count($resultat) > 0) ? $resultat[0]['id_image'] : false;
return $id_image;
/trunk/jrest/services/CelSyndicationImage.php
210,7 → 210,8
$this->messages[] = "La requête suivante a retourné aucun résultat :\n$requete";
}
} catch (PDOException $e) {
$this->messages[] = sprintf(Cel::db()->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
$msgTpl = 'Requête echec. Fichier : "%s". Ligne : "%s". Message : %s';
$this->messages[] = sprintf($msgTpl, $e->getFile(), $e->getLine(), $e->getMessage());
}
return $infos;
}
/trunk/jrest/services/ImageDateList.php
45,7 → 45,7
'FROM cel_images WHERE '.$condition_requete.' '.
'ORDER BY date_prise_de_vue';
$liste_dates = Cel::db()->executerRequete($requete_liste_dates);
$liste_dates = Cel::db()->requeter($requete_liste_dates);
$liste_dates = $this->formaterListeResultats($liste_dates);
/trunk/jrest/services/SelfRefList.php
18,8 → 18,7
* $_GET["recherche"] : cherche les noms qui commmencent selon la valeur
*
*/
function getElement($uid){
public function getElement($uid){
// Controle detournement utilisateur
$this->controleUtilisateur($uid[0]);
32,49 → 31,43
}
$referentiel_demande = $uid[1];
$idUtilisateur = Cel::db()->proteger($uid[0]);
$value=array();
$requete_referentiel = "SELECT DISTINCT ".$referentiel_demande." " .
"FROM cel_obs WHERE ce_utilisateur = '".$uid[0]."' ";
$requete = "SELECT DISTINCT $referentiel_demande " .
'FROM cel_obs '.
"WHERE ce_utilisateur = '$idUtilisateur' ";
if($this->filtreRechercheEstDemande()) {
$requete_referentiel .= " AND ".$referentiel_demande." LIKE '".$_GET["recherche"]."%'";
$requete .= " AND $referentiel_demande LIKE '".$_GET["recherche"]."%'";
}
 
if ($this->limiteEstDemandee()) {
$requete_referentiel .= " ORDER BY '.$referentiel_demande.' LIMIT ".$_GET["start"].",".$_GET["limit"];
$requete .= " ORDER BY $referentiel_demande LIMIT ".$_GET['start'].','.$_GET['limit'];
}
$resultat = Cel::db()->requeter($requete);
$referentiel_resultat = Cel::db()->executerRequete($requete_referentiel);
$referentiel = array();
foreach($referentiel_resultat as $cle => $valeur) {
foreach ($resultat as $cle => $valeur) {
if($this->estUneValeurValide($valeur[$referentiel_demande])) {
$referentiel[] = $valeur[$referentiel_demande];
}
 
}
$this->envoyerJson($referentiel);
return true;
}
function paramObligatoiresSontPresents($uid) {
return (isset($uid[1]) && in_array($uid[1],$this->referentiels) && (isset($uid[0]) && $uid[0] != ""));
private function paramObligatoiresSontPresents($uid) {
return (isset($uid[1]) && in_array($uid[1], $this->referentiels) && (isset($uid[0]) && $uid[0] != ''));
}
function filtreRechercheEstDemande() {
return (isset($_GET["recherche"]) && trim($_GET["recherche"]) != "");
private 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"]);
private 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) != "");
private function estUneValeurValide($chaine) {
return ($chaine != null && $chaine != '000null' && trim($chaine) != '');
}
}
?>
}
/trunk/jrest/services/InventoryDateList.php
41,7 → 41,7
'FROM cel_obs WHERE '.$condition_requete.' '.
'ORDER BY date_observation';
$liste_dates = Cel::db()->executerRequete($requete_liste_dates);
$liste_dates = Cel::db()->requeter($requete_liste_dates);
$liste_dates = $this->formaterListeResultats($liste_dates);
/trunk/jrest/services/NomsChampsEtendus.php
14,10 → 14,8
* $_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){
if (!$this->paramObligatoiresSontPresents($uid)) {
return;
}
39,13 → 37,12
$requete = "SELECT DISTINCT cle, label FROM cel_obs_etendues WHERE ".
"cle LIKE ".Cel::db()->proteger($recherche_cle)." OR ".
"label LIKE ".Cel::db()->proteger($recherche_cle)." ";
$referentiel_resultat = Cel::db()->executerRequete($requete);
$resultat = Cel::db()->requeter($requete);
 
$referentiel = array();
foreach($referentiel_resultat as $valeur) {
foreach($resultat as $valeur) {
$referentiel[$valeur['cle']] = $valeur['label'];
}
return $referentiel;
}
54,11 → 51,11
"cle = ".Cel::db()->proteger($cle)." AND ".
"valeur LIKE ".Cel::db()->proteger($recherche_valeur.'%')." ";
 
$referentiel_resultat = Cel::db()->executerRequete($requete);
$referentiel_resultat = Cel::db()->requeter($requete);
$referentiel = array();
foreach($referentiel_resultat as $valeur) {
if(trim($valeur['valeur']) != "") {
if (trim($valeur['valeur']) != '') {
$referentiel[] = $valeur['valeur'];
}
}
66,12 → 63,11
}
function paramObligatoiresSontPresents($uid) {
return (isset($uid[0]) && ($uid[0] == "cle" || $uid[0] == "valeur"));
return (isset($uid[0]) && ($uid[0] == 'cle' || $uid[0] == 'valeur'));
}
function filtreRechercheEstDemande() {
return (isset($_GET["recherche"]) && trim($_GET["recherche"]) != "");
return (isset($_GET["recherche"]) && trim($_GET["recherche"]) != '');
}
function limiteEstDemandee() {
79,7 → 75,6
}
function estUneValeurValide($chaine) {
return ($chaine != null && $chaine != "000null" && trim($chaine) != "");
return ($chaine != null && $chaine != "000null" && trim($chaine) != '');
}
}
?>
}
/trunk/jrest/services/CelStatistiqueTxt.php
57,7 → 57,7
$requete = $this->construireRequeteListeUtilisateurNbrePhoto();
if ($requete != null) {
$resultats = Cel::db()->executerRequete($requete);
$resultats = Cel::db()->requeter($requete);
if ($resultats != false) {
foreach ($resultats as $resultat) {
$liste[$resultat['courriel_utilisateur']] = $resultat['nbre'];
128,7 → 128,7
$requete = 'SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire '.
'FROM cel_mots_cles_images '.
"WHERE cmc_id_mot_cle_general = $tag_encode ";
$elements = Cel::db()->executerRequete($requete);
$elements = Cel::db()->requeter($requete);
if ($elements != false && count($elements) > 0) {
// Pré-construction du where de la requête
148,7 → 148,7
private function getListeTaxonsNbrePhotos() {
$requete = $this->construireRequeteListeTaxonNbrePhoto();
 
$resultats = Cel::db()->executerRequete($requete);
$resultats = Cel::db()->requeter($requete);
$liste = array();
if ($resultats != false) {
foreach ($resultats as $resultat) {
202,24 → 202,24
private function getNombres() {
 
$requete = $this->construireRequeteNbreObs();
$info['observations'] = (int) Cel::db()->executerRequete($requete, 'Column');
$info['observations'] = (int) Cel::db()->requeterValeurUnique($requete);
$requete = $this->construireRequeteNbreObsPubliques();
$info['observationsPubliques'] = (int) Cel::db()->executerRequete($requete, 'Column');
$info['observationsPubliques'] = (int) Cel::db()->requeterValeurUnique($requete);
$requete = $this->construireRequeteNbreImg();
$info['images'] =(int) Cel::db()->executerRequete($requete, 'Column');
$info['images'] =(int) Cel::db()->requeterValeurUnique($requete);
$requete = $this->construireRequeteNbreImgLiees();
$info['imagesLiees'] =(int) Cel::db()->executerRequete($requete, 'Column');
$info['imagesLiees'] =(int) Cel::db()->requeterValeurUnique($requete);
$requete = $this->construireRequeteNbreObsLiees();
$info['observationsLiees'] = (int) Cel::db()->executerRequete($requete, 'Column');
$info['observationsLiees'] = (int) Cel::db()->requeterValeurUnique($requete);
$info['moyImagesParObs'] = ($info['observationsLiees'] > 0 ? round($info['imagesLiees']/$info['observationsLiees'], 2) : '');
$requete = $this->construireRequeteNbreObsParCommune();
$info['communes'] = ($resultats = Cel::db()->executerRequete($requete)) ? count($resultats) : '' ;
$info['communes'] = ($resultats = Cel::db()->requeter($requete)) ? count($resultats) : '' ;
$info['observationsParCommunesMin'] = 1000;
$info['observationsParCommunesMax'] = 0;
$info['observationsParCommunesTotal'] = 0;
/trunk/jrest/services/InventoryByDept.php
50,7 → 50,7
" lieudit, station, milieu, commentaire, transmission FROM cel_obs ".
"WHERE ce_zone_geo != '000null' AND ce_zone_geo != '' AND transmission = 1 AND nt!=0 ORDER BY ce_zone_geo, nom_ret LIMIT 50";
 
$resultat_obs = Cel::db()->executerRequete($requete_obs);
$resultat_obs = Cel::db()->requeter($requete_obs);
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();
/trunk/jrest/services/CelWidgetMap.php
532,7 → 532,7
'ORDER BY utilisateur ASC, ordre ASC';
//$this->debug[] = $requete;
//die($requete);
$resultats = Cel::db()->executerRequete($requete);
$resultats = Cel::db()->requeter($requete);
$observations = null;
if ($resultats != false) {
685,7 → 685,7
'ORDER BY utilisateur ASC, ci.ordre ASC';
//$this->debug[] = $requete;
//die($requete);
$elements_tag = Cel::db()->executerRequete($requete);
$elements_tag = Cel::db()->requeter($requete);
$requete_tag = array();
if ($elements_tag != false && count($elements_tag) > 0) {
/trunk/jrest/services/CelImage.php
1,15 → 1,15
<?php
// declare(encoding='UTF-8');
 
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
/**
* Service fournissant la liste des ids des images liées à une observation.
* Encodage en entrée : utf8
* Encodage en sortie : utf8
*
* Cas d'utilisation :
* Cas d'utilisation GET :
* /CelImage/liste-ids?obsId=[0-9]+ : ids des images liées à l'observation possédant l'identifiant 'obsId'.
*
* Cas d'utilisation DELETE :
*
* Sortie :
* Type de sortie : json (par défaut), HTML en cas d'erreur.
*
50,7 → 50,9
}
 
/**
* Carte par défaut
* Service fournissant la liste des ids des images liées à une observation.
* Format de l'url du WS :
* /CelImage/liste-ids?obsId=[0-9]+ : ids des images liées à l'observation possédant l'identifiant 'obsId'.
*/
private function getListeIds() {
$ids = array();
83,4 → 85,49
}
return $ids;
}
 
/**
* 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 ($this->controlerAccessibiliteWs()) {
if ($this->controleAppelIpAutorisee()) {
// Initialisation des paramètres
$idImage = isset($uid[0]) ? $uid[0] : '';
 
// Vérifier les paramêtres
$this->verifierIdentifiantImage($idImage);
$idsImages = explode(',', $idImage);
 
$gestionnaireImage = new GestionImage($this->config);
$suppressionImage = $gestionnaireImage->supprimerImage($idsImages);
 
if ($suppressionImage) {
$this->envoyer('OK');
} else {
$this->envoyer("Au moins une image « $idImage » n'a pu être supprimé.");
}
} else {
header('Status: 401 Unauthorized');
$message = "Accès interdit. \n"."Vous n'êtes pas autorisé à accéder à ce service depuis '{$_SERVER['REMOTE_ADDR']}' !\n";
die($message);
}
}
}
 
private function verifierIdentifiantImage($chaine) {
$ok = preg_match('/^(?:[0-9]+,)*[0-9]+$/', $chaine);
if ($ok == false) {
header("HTTP/1.0 412 Precondition Failed"); // TODO: PHP: 5.4 http_response_code(412);
header("Content-Type: text/plain; charset=utf-8");
die("Indiquer un ou plusieurs identifiants d'image séparés par des virgules.");
}
return $ok;
}
}
/trunk/jrest/services/CelObs.php
15,9 → 15,9
* @copyright © 2013, Jean-Pascal MILCENT
*/
class CelObs extends Cel {
 
private $rechercheObs = null;
private $chpsEtendus = null;
private $donnees = null;
 
public function __construct($config) {
parent::__construct($config);
96,4 → 96,155
}
return $retour;
}
 
/**
* Méthode appelée avec une requête de type POST et un identifiant d'observation.
* Modifie une observation en fonction des informations envoyées en POST.
* Utilisé par:
* - service:del:0.1/determinations/ : ValiderDetermination.php::modifierObservationParDetermination()
* - service:del:0.1/observations/#idObs [POST] : pour dépublier une observation
*
* @param $uid array $uid[0] (int) : identifiant observation
* @param pairs array tableau contenant les champs à modifier sous la forme : nom_du_champ=nouvelle_valeur
*/
public function updateElement($ressources, $donnees) {
$this->donnees = $donnees;
if ($this->controlerAccessibiliteWs()) {
if ($this->controleAppelIpAutorisee()) {
$idObs = isset($ressources[0]) ? $ressources[0] : '';
$this->verifierIdentifiantObs($idObs);
 
$idObs = explode(',', $idObs);
// Seulement la dépublication
if (isset($this->donnees['transmission']) && count($this->donnees) == 1) {
$gestionnaireObs = new GestionObservation($this->config);
$detransmissionObs = $gestionnaireObs->modifierTransmissionObservation($idObs, false);
if ($detransmissionObs === false) {
$msg = "Un problème est survenu (voir log). Les observations n'ont pas pu être dépubliées.";
$this->envoyerMessageErreur(304, $msg);
}
} if (count($this->donnees) == 3) {
$donneesObligatoires = array('id_observation', 'ce_utilisateur', 'nom_sel');
if ($this->verifierDonneesObligatoires($donneesObligatoires)) {
$this->modifierObservationDepuisDEL($idObs);
}
} else {
$msg = "La modification complète d'une observation n'est pas implémentée. \n".
"Uniquement la dépublication pour l'instant fonctionne";
$this->envoyerMessageErreur(501, $msg);
}
 
$this->envoyer('OK');
} else {
$msg = "Accès interdit. \n"."Vous n'êtes pas autorisé à accéder à ce service depuis '{$_SERVER['REMOTE_ADDR']}' !\n";
$this->envoyerMessageErreur(401, $msg);
}
}
}
 
private function modifierObservationDepuisDEL($idObs) {
$gestion_observation = new GestionObservation($this->config);
$pairs = array_map('trim', $this->donnees);
$utilisateur = $pairs['ce_utilisateur'];
unset($pairs['ce_utilisateur'], $pairs['id_observation']);
 
// mise à jour des mots-clefs suite à une validation:
// typiquement, DEL modifierObservationParDetermination()
// nous enverra obsKeywordDelete=aDeterminer en plus de certitude=Certaine
$obsKeywordDelete = @trim($pairs['obsKeywordDelete']);
// $imgKeywordDelete = @trim($pairs['imgKeywordDelete']);
unset($pairs['obsKeywordDelete']); // , $pairs['imgKeywordDelete']);
 
// complete les données de la proposition validée car:
// 1) la table tb_del.del_commentaire ne contient pas toutes les informations nécessaires
// 2) la table tb_del.del_commentaire ne *devrait* pas contenir beaucoup plus que nom_sel et nom_sel_nn
// 3) la génération de ces données ici, au moment de l'UPDATE, est le meilleur garant de leur fiabilité
$more_data = $this->NN2(@$pairs['nom_sel_nn'], @$pairs['nom_referentiel']);
if($more_data) $pairs = array_merge($pairs, $more_data);
 
$modification = $gestion_observation->modifierObservationPublique($utilisateur, $idObs, $pairs);
if($modification) {
$gestion_mots_cles = new GestionMotsClesChemin($this->config, 'obs');
// supression des éventuelles liaison de l'obs avec le mot clé contenu dans obsKeywordDelete
$supp_liaison_mot_cle = $gestion_mots_cles->supprimerLiaisonPourMotCleEtIdElementLie($obsKeywordDelete, $idObs, $utilisateur);
// TODO : quel impact de la valeur de retour ?
header("Content-Type: text/plain; charset=utf-8");
die("OK"); // attention, compatibilité avec ValiderDetermination.php de DEL !
}
// cf TODO: n'arrivera pas tant que l'UPDATE ajoutera systématiquement date_modification = now()
elseif($modification === 0) {
header("HTTP/1.0 304 Not Modified"); // XXX: PHP 5.4 // http_response_code(304); // Not Modified
header("Content-Type: text/plain; charset=utf-8");
die("Not Modified");
}
else {
header("HTTP/1.0 500 Internal Server Error"); // XXX: PHP: 5.4 // http_response_code(500); // Internal Server Error
header("Content-Type: text/plain; charset=utf-8");
die("Impossible de modifier l'observation associée à cet identifiant " . mysql_error());
}
}
 
private function verifierIdentifiantObs($chaine) {
$ok = preg_match('/^(?:[0-9]+,)*[0-9]+$/', $chaine);
if ($ok == false) {
$msg = "Indiquer un ou plusieurs identifiants d'obs séparés par des virgules.";
$this->envoyerMessageErreur(412, $msg);
}
return $ok;
}
 
private function verifierDonneesObligatoires($champsObligatoires) {
foreach ($champsObligatoires as $param) {
if (! isset($this->donnees[$param])) {
$msg = sprintf("Paramètre %s manquant (parmi %s)", $param, implode(', ', $champsObligatoires));
$this->envoyerMessageErreur(412, $msg);
}
}
}
 
private function NN2($id, $ref) {
if(!$db || !$id || !$ref) return FALSE;
switch($ref) {
case "bdtfx":
return $this->bdd->query(sprintf(, self::db, self::bdtfx, self::db, self::bdtfx, intval($id), __FILE__, __LINE__))->fetch(PDO::FETCH_ASSOC);
case "bdtxa":
return $this->bdd->query(sprintf("SELECT o.num_nom_retenu AS nom_ret_nn, o.num_tax AS nt, CONCAT(o.nom_sci, ' ', o.auteur) AS nom_sel". // subtilité: "num_tax"
" , o.famille, CONCAT(ret.nom_sci, ' ', ret.auteur) AS nom_ret".
" FROM %s.%s o".
" LEFT JOIN %s.%s ret ON o.num_nom_retenu != 0 AND o.num_nom_retenu = ret.num_nom".
" WHERE o.num_nom = %d -- %s:%d", self::db, self::bdtxa, self::db, self::bdtxa, intval($id), __FILE__, __LINE__))->fetch(PDO::FETCH_ASSOC);
case "isfan":
return $this->bdd->query(sprintf("SELECT o.num_nom_retenu AS nom_ret_nn, o.num_taxonomique AS nt, CONCAT(o.nom_sci, ' ', o.auteur) AS nom_sel".
" , o.famille, CONCAT(ret.nom_sci, ' ', ret.auteur) AS nom_ret".
" FROM %s.%s o".
" LEFT JOIN %s.%s ret ON o.num_nom_retenu != 0 AND o.num_nom_retenu = ret.num_nom".
" WHERE o.num_nom = %d -- %s:%d", self::db, self::isfan, self::db, self::isfan, intval($id), __FILE__, __LINE__))->fetch(PDO::FETCH_ASSOC);
case "bdtao":
return $this->bdd->query(sprintf("SELECT o.num_nom_retenu AS nom_ret_nn, o.num_taxonomique AS nt, CONCAT(o.nom_sci, ' ', o.auteur) AS nom_sel".
" , o.famille, CONCAT(ret.nom_sci, ' ', ret.auteur) AS nom_ret".
" FROM %s.%s o".
" LEFT JOIN %s.%s ret ON o.num_nom_retenu != 0 AND o.num_nom_retenu = ret.num_nom".
" WHERE o.num_nom = %d -- %s:%d", self::db, self::bdtao, self::db, self::bdtao, intval($id), __FILE__, __LINE__))->fetch(PDO::FETCH_ASSOC);
}
return FALSE;
}
 
const db = 'tb_eflore';
const bdtfx = 'bdtfx_v2_00';
const bdtxa = 'bdtxa_v1_01';
const isfan = 'isfan_v2013';
const bdtao = 'bdtao_v1_00';
 
private function getInfosBdtfx($id_nom) {
$idNomP = $this->bdd->proteger($id_nom);
$requete = "SELECT o.num_nom_retenu AS nom_ret_nn, o.num_taxonomique AS nt, o.famille, ".
" CONCAT(o.nom_sci, ' ', o.auteur) AS nom_sel, ".
" CONCAT(ret.nom_sci, ' ', ret.auteur) AS nom_ret ".
"FROM bdtfx_v2_00 AS o ".
" LEFT JOIN bdtfx_v2_00 AS ret ON (o.num_nom_retenu != 0 AND o.num_nom_retenu = ret.num_nom) ".
"WHERE o.num_nom = $idNomP ".
' -- '.__FILE__.' : '.__LINE__;
$resultat = Cel::db()->executerRequete($requete, Cel::db::SQL_RETOUR_LIGNE);
return $resultat;
}
}