/trunk/jrest/jrest.ini.php.defaut |
---|
116,5 → 116,5 |
; ADMIN |
[jrest_admin] |
admin = aurelien@tela-botanica.org,david.delon@clapas.net,jpm@tela-botanica.org,marie@tela-botanica.org |
ip_autorisees = "localhost,www.tela-botanica.org, api.tela-botanica.org" |
ip_autorisees = "127.0.0.1,193.54.123.216,193.54.123.169" |
;*/?> |
/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/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; |
} |
} |
/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/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/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/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/lib/GestionChampsEtendus.php |
---|
56,7 → 56,7 |
"WHERE {$this->champ_id} = $id ". |
" AND cle = $cle "; |
$resultat = Cel::db()->executerRequete($requete); |
$resultat = Cel::db()->requeter($requete); |
return ($resultat[0]['existe'] == '1'); |
} |
69,7 → 69,7 |
public function consulter($id_element_lie) { |
$id = Cel::db()->proteger($id_element_lie); |
$requete = "SELECT * FROM {$this->table_champs_etendus} WHERE {$this->champ_id} = $id "; |
$resultat = Cel::db()->executerRequete($requete); |
$resultat = Cel::db()->requeter($requete); |
return $resultat; |
} |
88,7 → 88,7 |
$ids = implode(',', $ids_element_lies); |
$requete = "SELECT * FROM {$this->table_champs_etendus} WHERE {$this->champ_id} IN ($ids) "; |
$resultats = Cel::db()->executerRequete($requete); |
$resultats = Cel::db()->requeter($requete); |
foreach ($resultats as &$ligne) { |
$id_element = $ligne[$this->champ_id]; |
127,7 → 127,7 |
// la partie on duplicate key est spécifique mysql mais il sera facile de s'en passer le jour |
// où l'on change de sgbd |
$ajout = Cel::db()->executerRequeteSimple($requete); |
$ajout = Cel::db()->executer($requete); |
return ($ajout !== false); |
} |
153,7 → 153,7 |
// la partie on duplicate key est spécifique mysql mais il sera facile de s'en passer le jour |
// où l'on change de sgbd |
$ajout = Cel::db()->executerRequeteSimple(sprintf( |
$ajout = Cel::db()->executer(sprintf( |
"INSERT INTO %s (%s, cle, label, valeur) VALUES %s ON DUPLICATE KEY UPDATE valeur = VALUES(valeur) -- %s:%d", |
$this->table_champs_etendus, |
$this->champ_id, |
179,7 → 179,7 |
"WHERE cle = $cle". |
" AND {$this->champ_id} = $id "; |
$modif = Cel::db()->executerRequeteSimple($requete); |
$modif = Cel::db()->executer($requete); |
return ($modif !== false); |
} |
194,7 → 194,7 |
$id = Cel::db()->proteger($id_element_lie); |
$cle = Cel::db()->proteger($cle); |
$requete = "DELETE FROM {$this->table_champs_etendus} WHERE cle = $cle AND {$this->champ_id} = $id "; |
$suppr = Cel::db()->executerRequeteSimple($requete); |
$suppr = Cel::db()->executer($requete); |
return ($suppr !== false); |
} |
207,7 → 207,7 |
public function vider($id_element_lie) { |
$id = Cel::db()->proteger($id_element_lie); |
$requete = "DELETE FROM {$this->table_champs_etendus} WHERE {$this->champ_id} = $id "; |
$suppr = Cel::db()->executerRequeteSimple($requete); |
$suppr = Cel::db()->executer($requete); |
return ($suppr !== false); |
} |
220,7 → 220,7 |
public function viderParLots($ids_elements_lies) { |
$ids = $this->protegerTableau($ids_elements_lies); |
$requete = "DELETE FROM {$this->table_champs_etendus} WHERE {$this->champ_id} IN (".implode(',',$ids).") "; |
$suppr = Cel::db()->executerRequeteSimple($requete); |
$suppr = Cel::db()->executer($requete); |
return ($suppr !== false); |
} |
235,7 → 235,7 |
if(!empty($ids_elements_lies)) { |
$ids = $this->protegerTableau($ids_elements_lies); |
$requete = "SELECT cle FROM {$this->table_champs_etendus} WHERE {$this->champ_id} IN (".implode(',',$ids).") "; |
$cles = Cel::db()->executerRequete($requete); |
$cles = Cel::db()->requeter($requete); |
$i = 0; |
foreach($cles as &$cle) { |
$cles_fmt[$cle['cle']] = $i++; |
/trunk/jrest/lib/RechercheInfosTaxon.php |
---|
59,13 → 59,12 |
" AND esn_id_nom= en_id_nom ". |
" ORDER BY esn_ce_statut, en_ce_rang, en_epithete_espece, en_nom_genre LIMIT 50"; |
} |
} |
else { |
} else { |
if ($genre != null) { |
$genre=preg_replace('/\*+/','%',$genre); |
//TODO: comprendre pourquoi à l'origine il y avait : (strlen($genre) >= 1) /*&& ($genre != '%') |
// voir avec david |
if ((strlen($genre) >= 1)) { |
if (strlen($genre) >= 1) { |
$requete_recherche = "SELECT DISTINCT en_nom_genre, en_id_nom, 0 as esn_ce_statut FROM eflore_nom WHERE en_id_version_projet_nom = '25'" . |
"AND en_ce_rang = 160 " . |
"AND en_nom_genre LIKE ".Cel::db()->proteger($genre.'%')." ORDER BY esn_ce_statut, en_nom_genre LIMIT 50"; |
74,7 → 73,7 |
} |
if ($requete_recherche != '') { |
$resultat_recherche = Cel::db()->executerRequete($requete_recherche); |
$resultat_recherche = Cel::db()->requeter($requete_recherche); |
if (is_array($resultat_recherche)) { |
foreach ($resultat_recherche as $ligne) { |
90,7 → 89,6 |
} |
function rechercherInformationsComplementairesSurNumNom($numNom) { |
$resultat_infos_complementaires = $this->effectuerRequeteInfosComplementairesSurNumNom($numNom); |
// Nom retenu, Num Nomen nom retenu, Num Taxon, Famille |
98,37 → 96,31 |
if (is_array($resultat_infos_complementaires)) { |
foreach ($resultat_infos_complementaires as $row) { |
$fam=$this->rechercherFamille($row['esn_id_taxon']); |
while (($fam['en_ce_rang']!='fin') && ($fam['en_ce_rang'] !=120)) { |
while ($fam['en_ce_rang'] != 'fin' && $fam['en_ce_rang'] != 120) { |
$fam=$this->rechercherFamille($fam['etr_id_taxon_2']); |
} |
if ($fam['en_ce_rang']==120) { |
$famille=$fam['en_nom_supra_generique']; |
} |
else { |
} else { |
$famille="Famille inconnue"; |
} |
$value=array('Nom_Retenu'=>$this->formaterNom($row),'Num_Nom_Retenu'=>$row['esn_id_nom'],'Num_Taxon'=>$row['esn_id_taxon'],'Famille'=>$famille); |
} |
} |
return $value; |
} |
public function effectuerRequeteInfosComplementairesEtFormaterNom($numNom) { |
$resultat = $this->effectuerRequeteInfosComplementairesSurNumNom($numNom); |
$resultat_infos_complementaires = $this->effectuerRequeteInfosComplementairesSurNumNom($numNom); |
$retour_infos_complementaires = array(); |
foreach ($resultat_infos_complementaires as $info) { |
$retour_infos_complementaires=array(($this->formaterNom($info))); |
$infos = array(); |
foreach ($resultat as $info) { |
$infos = array($this->formaterNom($info)); |
} |
return $retour_infos_complementaires; |
return $infos; |
} |
public function effectuerRequeteInfosComplementairesSurNumNom($numNom) { |
$requete_infos_complementaires = "SELECT DISTINCT en_nom_genre, en_epithete_espece, en_nom_supra_generique, en_epithete_infra_generique,". |
" auteur_bex.enaia_intitule_abrege AS abreviation_auteur_basio_ex ". |
" , auteur_b.enaia_intitule_abrege AS abreviation_auteur_basio ". |
136,11 → 128,11 |
" , auteur_m.enaia_intitule_abrege AS abreviation_auteur_modif ". |
" , en_epithete_espece, en_epithete_infra_specifique, enrg_abreviation_rang, b.esn_id_taxon, b.esn_id_nom" . |
" FROM eflore_nom, eflore_nom_rang," . |
" eflore_naturaliste_intitule_abreviation AS auteur_bex ". |
" , eflore_naturaliste_intitule_abreviation AS auteur_b ". |
" , eflore_naturaliste_intitule_abreviation AS auteur_mex ". |
" , eflore_naturaliste_intitule_abreviation AS auteur_m ". |
" ,eflore_selection_nom a, eflore_selection_nom b". |
" eflore_naturaliste_intitule_abreviation AS auteur_bex, ". |
" eflore_naturaliste_intitule_abreviation AS auteur_b, ". |
" eflore_naturaliste_intitule_abreviation AS auteur_mex, ". |
" eflore_naturaliste_intitule_abreviation AS auteur_m, ". |
" eflore_selection_nom a, eflore_selection_nom b ". |
" WHERE a.esn_id_nom= ".Cel::db()->proteger($numNom). |
" AND a.esn_id_version_projet_taxon = 25 ". |
" AND a.esn_id_taxon=b.esn_id_taxon ". |
155,7 → 147,7 |
" AND a.esn_id_version_projet_taxon=en_id_version_projet_nom "; |
$resultat_infos_complementaires = Cel::db()->executerRequete($requete_infos_complementaires); |
$resultat_infos_complementaires = Cel::db()->requeter($requete_infos_complementaires); |
return $resultat_infos_complementaires; |
} |
184,7 → 176,7 |
" AND en_ce_auteur_modif = auteur_m.enaia_id_intitule_naturaliste_abrege ". |
" AND esn_id_version_projet_taxon=en_id_version_projet_nom "; |
$resultat_infos_complementaires = Cel::db()->executerRequete($requete_infos_complementaires); |
$resultat_infos_complementaires = Cel::db()->requeter($requete_infos_complementaires); |
return $resultat_infos_complementaires; |
} |
194,7 → 186,6 |
$value = array(); |
if ($nom_saisi != null && $nom_saisi != "") { |
$requete_infos_comp_sur_nom = 'SELECT * FROM eflore_nom_intitule '. |
'WHERE eni_id_categorie_format = 3 AND '. |
'eni_id_version_projet_nom = 25 AND '. |
202,7 → 193,7 |
'eni_intitule_nom LIKE "'.$nom_saisi.'%" '. |
'ORDER BY LENGTH(eni_intitule_nom)'; |
$resultat_infos_comp_sur_nom = Cel::db()->executerRequete($requete_infos_comp_sur_nom); |
$resultat_infos_comp_sur_nom = Cel::db()->requeter($requete_infos_comp_sur_nom); |
if (is_array($resultat_infos_comp_sur_nom)) { |
foreach ($resultat_infos_comp_sur_nom as $ligne) { |
215,7 → 206,6 |
} |
public function rechercherFamille($taxon) { |
$row = array(); |
$requete_famille = "SELECT DISTINCT en_ce_rang, etr_id_taxon_2, en_id_nom, en_nom_supra_generique ". |
232,7 → 222,7 |
" AND en_id_nom = esn_id_nom ". |
" AND esn_id_version_projet_taxon=en_id_version_projet_nom "; |
$resultat_recherche_famille = Cel::db()->executerRequete($requete_famille); |
$resultat_recherche_famille = Cel::db()->requeter($requete_famille); |
if (!is_array($resultat_recherche_famille) || count($resultat_recherche_famille) == 0) { |
$resultat_recherche_famille = array('en_ce_rang' => 'fin'); |
244,7 → 234,6 |
} |
public function rechercherNumTaxSurNumNom($num_nom) { |
$requete_num_tax = "SELECT DISTINCT b.esn_id_taxon FROM eflore_nom, eflore_nom_rang," . |
" eflore_selection_nom a, eflore_selection_nom b". |
" WHERE a.esn_id_nom= ".Cel::db()->proteger($num_nom). |
256,7 → 245,7 |
" AND en_id_nom = b.esn_id_nom" . |
" AND a.esn_id_version_projet_taxon=en_id_version_projet_nom "; |
$res_num_nom = Cel::db()->executerRequete($requete_num_tax); |
$res_num_nom = Cel::db()->requeter($requete_num_tax); |
$nt = null; |
if (is_array($res_num_nom) && count($res_num_nom) > 0) { |
275,7 → 264,7 |
"AND ezg_id_projet_zg = ecd_ce_version_projet_zg ". |
"AND ecd_ce_version_projet_taxon=25"; |
$resultat_presence_taxon = Cel::db()->executerRequete($requete_presence_taxon); |
$resultat_presence_taxon = Cel::db()->requeter($requete_presence_taxon); |
$presence_taxon = (is_array($resultat_presence_taxon) && count($resultat_presence_taxon) > 0); |
311,7 → 300,7 |
} |
$resultat = Cel::db()->executerRequete($requete); |
$resultat = Cel::db()->requeter($requete); |
$retour = array(); |
if (is_array($resultat) && count($resultat) > 0) { |
322,7 → 311,6 |
} |
private function formaterNom($rawnom) { |
// Constitution du nom: |
$nom = ''; |
419,5 → 407,4 |
return $retour; |
} |
} |
?> |
} |
/trunk/jrest/lib/Cel.php |
---|
1,18 → 1,15 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
/** |
* Classe mère abstraite contenant les méthodes génériques des services. |
* Encodage en entrée : utf8 |
* Encodage en sortie : utf8 |
* |
* @author Jean-Pascal MILCENT <jpm@clapas.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @author Aurélien Peronnet <aurelien@tela-botanica.org> |
* @author Raphaël Droz <raphael@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 © 2012, 2013 Tela Botanica |
* @copyright © 2006-2014 Tela Botanica |
*/ |
require_once('Bdd2.php'); |
46,7 → 43,6 |
static $fallback_referentiel = 'autre'; |
public function __construct($config) { |
@session_start(); |
// Tableau contenant la config de Jrest |
$this->config = $config; |
73,15 → 69,20 |
} |
public static function db() { |
if(! self::$bdd) die('ERR: no DB available'); |
if (! self::$bdd) { |
die('ERREUR: aucune base de données de disponible.'); |
} |
return self::$bdd; |
} |
// TODO: delete wrappers, en attendant que $this->bdd soit remplacé par Cel::db() partout. |
public function __get($prop) { |
if($prop == 'bdd') return self::$bdd; |
return $this->$prop; |
$retour = $this->$prop; |
if ($prop == 'bdd') { |
$retour = self::$bdd; |
} |
return $retour; |
} |
protected function protegerTableau(Array $tableau) { |
foreach ($tableau as $id => $val) { |
157,6 → 158,12 |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION de l'ENVOI au NAVIGATEUR |
protected function envoyerMessageErreur($code, $msg) { |
http_response_code($code); |
header("Content-Type: text/plain; charset=utf-8"); |
die($msg); |
} |
protected function envoyerJson($donnees, $encodage = 'utf-8') { |
$encodage_json = true; |
$this->envoyer($donnees, 'application/json', $encodage, $encodage_json); |
175,7 → 182,7 |
protected function envoyer($donnees = null, $mime = 'text/html', $encodage = 'utf-8', $json = false) { |
// Traitements des messages d'erreurs et données |
if (count($this->messages) != 0) { |
header('HTTP/1.1 500 Internal Server Error'); |
http_response_code(500);// Internal Server Error |
$mime = 'application/json'; |
$json = true; |
$sortie = $this->messages; |
219,7 → 226,7 |
} |
static function envoyerAuth($message_accueil, $message_echec) { |
header('HTTP/1.0 401 Unauthorized'); |
http_response_code(401);// Unauthorized |
header('WWW-Authenticate: Basic realm="'.mb_convert_encoding($message_accueil, 'ISO-8859-1', 'UTF-8').'"'); |
header('Content-type: text/plain; charset=UTF-8'); |
print $message_echec; |
281,10 → 288,13 |
} |
public function controleAppelIpAutorisee() { |
$ips_autorisees = explode(',', @$this->config['jrest_admin']['ip_autorisees']); |
if(!in_array($_SERVER['REMOTE_ADDR'], $ips_autorisees) && $_SERVER['REMOTE_ADDR'] != $_SERVER['SERVER_ADDR']) { |
header('HTTP/1.0 401 Unauthorized'); |
exit('Accès interdit'); |
$ipsAutorisees = explode(',', $this->config['jrest_admin']['ip_autorisees']); |
$remoteIp = filter_input(INPUT_SERVER, 'REMOTE_ADDR', FILTER_VALIDATE_IP); |
$serverIp = filter_input(INPUT_SERVER, 'SERVER_ADDR', FILTER_VALIDATE_IP); |
if (!in_array($remoteIp, $ipsAutorisees) || $remoteIp != $serverIp) { |
$msg = "Accès interdit. \n". |
"Vous n'êtes pas autorisé à accéder à ce service depuis '$remoteIp' !\n"; |
$this->envoyerMessageErreur(401, $msg); |
} |
return true; |
} |
293,11 → 303,9 |
if(!class_exists('Log')) { |
Log::getInstance(); |
} |
Log::setCheminLog($this->config['log']['cheminlog']); |
Log::setTimeZone($this->config['log']['timezone']); |
Log::setTailleMax($this->config['log']['taillemax']); |
Log::ajouterEntree($index,$chaine); |
} |
343,48 → 351,59 |
} |
public function getInfosComplementairesUtilisateur($id_utilisateur) { |
$defaut_infos = array('prenom' => '', 'nom' => '', 'courriel' => ''); |
if(! is_numeric($id_utilisateur)) return $defaut_infos; |
$infos = array('prenom' => '', 'nom' => '', 'courriel' => ''); |
if (is_numeric($id_utilisateur)) { |
$idUtilisateurP = Cel::db()->proteger($id_utilisateur); |
$requete = 'SELECT prenom, nom, courriel '. |
'FROM cel_utilisateurs '. |
"WHERE id_utilisateur = $idUtilisateurP ". |
' -- ' . __FILE__ . ':' . __LINE__; |
$resultat = Cel::db()->requeter($requete); |
$resultat_infos_utilisateur = Cel::db()->requeter( |
'SELECT prenom, nom, courriel FROM cel_utilisateurs' |
. ' WHERE id_utilisateur = '.Cel::db()->proteger($id_utilisateur)); |
if($resultat_infos_utilisateur && count($resultat_infos_utilisateur)) return $resultat_infos_utilisateur[0]; |
return $defaut_infos; // autrement, info par défaut |
if ($resultat && count($resultat)) { |
$infos = $resultat[0]; |
} |
} |
return $infos; |
} |
public function getInfosComplementairesUtilisateurPourMail($mail_utilisateur) { |
$infos = array('prenom' => '', 'nom' => '', 'courriel' => $mail_utilisateur); |
$infos_utilisateur = array('prenom' => '', 'nom' => '', 'courriel' => $mail_utilisateur); |
$mailUtilisateurP = Cel::db()->proteger($mail_utilisateur); |
$requete = 'SELECT id_utilisateur as id, prenom, nom '. |
'FROM cel_utilisateurs '. |
"WHERE courriel = $mailUtilisateurP ". |
' -- ' . __FILE__ . ':' . __LINE__; |
$requete_infos_utilisateur = 'SELECT id_utilisateur as id, prenom, nom FROM cel_utilisateurs '. |
'WHERE courriel = '.Cel::db()->proteger($mail_utilisateur); |
$resultat = Cel::db()->requeter($requete); |
$resultat_infos_utilisateur = Cel::db()->requeter($requete_infos_utilisateur); |
if ($resultat && is_array($resultat) && count($resultat) > 0) { |
$infos = $resultat; |
} |
if($resultat_infos_utilisateur && is_array($resultat_infos_utilisateur) && count($resultat_infos_utilisateur) > 0) { |
$infos_utilisateur = $resultat_infos_utilisateur; |
return $infos; |
} |
return $infos_utilisateur; |
protected function controlerAccessibiliteWs() { |
if (self::ARRET_SERVICE) { |
$msg = "Les services du CEL sont temporairement désactivées."; |
$this->envoyerMessageErreur(503, $msg); |
} |
return true; |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DE MÉTHODES COMMUNES ENTRE LES SERVICES |
protected function denullifierTableauValeurCel(&$tableau) { |
// Denullifiage |
foreach($tableau as $k=>$v) { |
if (($v=="null") || ($v=="000null")) { |
$row[$k]=""; |
} |
else { |
if (($v == 'null') || ($v == '000null')) { |
$row[$k] = ''; |
} else { |
$row[$k]=utf8_decode($v); |
} |
} |
return $tableau; |
} |
403,7 → 422,8 |
*/ |
protected function creerAuteurs(Array $courriels) { |
$auteurs = array(); |
if ($identites = $this->recupererUtilisateursIdentite($courriels)) { |
$identites = $this->recupererUtilisateursIdentite($courriels); |
if ($identites) { |
foreach ($identites as $courriel => $infos) { |
$auteurs[$courriel] = $infos['intitule']; |
} |
499,12 → 519,10 |
} |
protected function convertirCodeZoneGeoVersDepartement($code_zone_geo) { |
$code_departement = ''; |
if($this->estUnCodeInseeDepartement($code_zone_geo)) { |
$code_departement = substr(ltrim($code_zone_geo,'INSEE-C:'),0,2); |
} |
return $code_departement; |
} |
513,24 → 531,28 |
} |
protected function convertirCodeZoneGeoVersCodeInsee($code_zone_geo) { |
$code_departement = ''; |
if($this->estUnCodeInseeDepartement($code_zone_geo)) { |
$code_departement = ltrim($code_zone_geo,'INSEE-C:'); |
} |
return $code_departement; |
} |
static function obtenirCodeInseeCommunePourNomEtDepartement($nom_commune, $code_insee) { |
$resultat = Cel::db()->requeter(sprintf( |
'SELECT id_zone_geo FROM cel_zones_geo WHERE nom LIKE %s AND id_zone_geo LIKE %s', |
Cel::db()->proteger($nom_commune), |
Cel::db()->proteger("INSEE-C:" . $code_insee . '%'))); |
$nomCommuneP = Cel::db()->proteger($nom_commune); |
$codeInseeP = Cel::db()->proteger("INSEE-C:$code_insee%"); |
$requete = 'SELECT id_zone_geo '. |
'FROM cel_zones_geo '. |
"WHERE nom LIKE $nomCommuneP AND id_zone_geo LIKE $codeInseeP ". |
' -- ' . __FILE__ . ':' . __LINE__; |
$resultat = Cel::db()->requeter($requete); |
if($resultat && count($resultat)) return $resultat[0]['id_zone_geo']; |
return $code_insee; // autrement retourne l'original |
$infos = $code_insee; // Par défaut retourne l'original |
if ($resultat && count($resultat)) { |
$infos = $resultat[0]['id_zone_geo']; |
} |
return $infos; |
} |
protected function encoderMotCle($mot_cle) { |
return md5(mb_strtolower(trim($mot_cle))); |
556,9 → 578,10 |
$requete = 'SELECT cmc_mot_cle as mot_cle '. |
"FROM $table ". |
"WHERE cmc_id_mot_cle_utilisateur IN ($mots_cles) ". |
"AND cmc_id_proprietaire = $utilisateur_id "; |
"AND cmc_id_proprietaire = $utilisateur_id ". |
' -- ' . __FILE__ . ':' . __LINE__; |
$elements = Cel::db()->executerRequete($requete); |
$elements = Cel::db()->requeter($requete); |
if (is_array($elements)) { |
foreach ($elements as $mot) { |
$mots[] = $mot['mot_cle']; |
/trunk/jrest/lib/RechercheObservation.php |
---|
43,7 → 43,7 |
$requete_selection_id .= ' AND ce_utilisateur = '.Cel::db()->proteger($id_utilisateur). |
' ORDER BY id_observation'; |
$resultat_ids = Cel::db()->executerRequete($requete_selection_id); |
$resultat_ids = Cel::db()->requeter($requete_selection_id); |
$ids = array(); |
if (is_array($resultat_ids)) { |
86,7 → 86,7 |
public function get() { |
if(!$this->requete_selection_observations) return FALSE; |
return Cel::db()->executerRequete($this->requete_selection_observations); |
return Cel::db()->requeter($this->requete_selection_observations); |
} |
public function compterObservations($id_utilisateur = null, $criteres = array()) { |
104,7 → 104,7 |
$requete_selection_observations = rtrim($requete_selection_observations, 'AND '); |
$nb_obs = '0'; |
$resultat_requete_nombre_observations = Cel::db()->executerRequete($requete_selection_observations); |
$resultat_requete_nombre_observations = Cel::db()->requeter($requete_selection_observations); |
if($resultat_requete_nombre_observations && is_array($resultat_requete_nombre_observations) && count($resultat_requete_nombre_observations) > 0) { |
$nb_obs = $resultat_requete_nombre_observations[0]['nb_obs']; |
150,7 → 150,7 |
$id_obs = Cel::db()->proteger($id_obs); |
$requete = "SELECT courriel_utilisateur FROM cel_obs WHERE id_observation = $id_obs"; |
$utilisateur_courriel = Cel::db()->executerRequete($requete . ' -- ' . __FILE__ . ':' . __LINE__); |
$utilisateur_courriel = Cel::db()->requeter($requete . ' -- ' . __FILE__ . ':' . __LINE__); |
$retour = false; |
if (!empty($utilisateur_courriel) && isset($utilisateur_courriel[0]['courriel_utilisateur'])) { |
163,7 → 163,7 |
$requete_selection_mots_cles = 'SELECT DISTINCT id_mot_cle '. |
'FROM cel_mots_cles_obs_liaison '. |
"WHERE id_element_lie = $id_observation "; |
return Cel::db()->executerRequete($requete_selection_mots_cles); |
return Cel::db()->requeter($requete_selection_mots_cles); |
} |
// TODO: fonction temporaire |
/trunk/jrest/lib/GestionImage.php |
---|
68,7 → 68,7 |
// important ! ne pas utiliser la fonction executerRequete qui renvoie une erreur si la requete contient des | (pipes) |
// ce qui est fréquent dans les métadonnées |
// TODO: corriger la fonction ou bien continuer à utiliser executerRequeteSimple |
$resultat_insertion_infos_image = Cel::db()->executerRequeteSimple($requete_insertion_infos_image); |
$resultat_insertion_infos_image = Cel::db()->executer($requete_insertion_infos_image); |
if (!$resultat_insertion_infos_image) { |
$message = "Echec de l'insertion dans la base de donnees : " ; |
99,7 → 99,7 |
'FROM cel_images '. |
"WHERE ce_utilisateur = $idUtilisateurP ". |
' -- '.__FILE__.' : '.__LINE__; |
$resultat = Cel::db()->executerRequete($requete); |
$resultat = Cel::db()->requeter($requete); |
$nouvel_ordre = 0; |
if ($resultat !== false) { |
118,7 → 118,7 |
"WHERE ce_utilisateur = $idUtilisateurP ". |
" AND ordre = $ordreP ". |
' -- '.__FILE__.' : '.__LINE__; |
$resultat = Cel::db()->executerRequete($requete); |
$resultat = Cel::db()->requeter($requete); |
if (count($resultat) > 0) { |
$id_image = $resultat[0]['id_image']; |
165,7 → 165,7 |
$requete_mise_a_jour_image .= ' WHERE id_image = '.Cel::db()->proteger($id_image). |
' AND ce_utilisateur = '.Cel::db()->proteger($utilisateur). |
' -- '.__FILE__.' : '.__LINE__; |
$resultat_mise_a_jour = Cel::db()->executerRequeteSimple($requete_mise_a_jour_image); |
$resultat_mise_a_jour = Cel::db()->executer($requete_mise_a_jour_image); |
return ($resultat_mise_a_jour !== false); |
} |
195,7 → 195,7 |
public function supprimerImageParOrdre($id_utilisateur, $ordre_images) { |
if (is_array($ordre_images)) { |
$ordre_images = Cel::db()->protegerTableau($ordre_images); |
$ordre_images = Cel::db()->proteger($ordre_images); |
$idsImagesP = implode(',', $ordre_images); |
} else { |
$idsImagesP = Cel::db()->proteger($ordre_images); |
208,7 → 208,7 |
"AND ordre IN ($idsImagesP) ". |
' -- '.__FILE__.' : '.__LINE__; |
$resultats = Cel::db()->executerRequete($requete); |
$resultats = Cel::db()->requeter($requete); |
$idsImages = array(); |
foreach ($resultats as $id_image) { |
222,7 → 222,7 |
$ids_images_non_protegees = array(); |
if (is_array($id_image_ou_tableau)) { |
$ids_images_non_protegees = $id_image_ou_tableau; |
$id_image_ou_tableau = Cel::db()->protegerTableau($id_image_ou_tableau); |
$id_image_ou_tableau = Cel::db()->proteger($id_image_ou_tableau); |
$chaine_ids_images = implode(',', $id_image_ou_tableau); |
} else { |
$ids_images_non_protegees[] = $id_image_ou_tableau; |
232,7 → 232,7 |
$requete = 'DELETE FROM cel_images '. |
"WHERE id_image in ($chaine_ids_images) ". |
' -- '.__FILE__.' : '.__LINE__; |
$resultat_suppression_image = Cel::db()->executerRequeteSimple($requete); |
$resultat_suppression_image = Cel::db()->executer($requete); |
if ($resultat_suppression_image === false) { |
$message = "Erreur lors de la suppression de l'image" ; |
$this->logger($message); |
241,7 → 241,7 |
$requete = 'DELETE FROM cel_obs_images '. |
"WHERE id_image in ($chaine_ids_images) ". |
' -- '.__FILE__.' : '.__LINE__; |
$resultat_suppression_lien_images_obs = Cel::db()->executerRequeteSimple($requete); |
$resultat_suppression_lien_images_obs = Cel::db()->executer($requete); |
if ($resultat_suppression_lien_images_obs === false) { |
$message = "Erreur lors de la suppression des observations associées à l'image" ; |
$this->logger($message); |
279,7 → 279,7 |
'WHERE ce_utilisateur = '.Cel::db()->proteger($mail_utilisateur).' '. |
' -- '.__FILE__.' : '.__LINE__; |
$migration_releve = Cel::db()->executerRequeteSimple($requete); |
$migration_releve = Cel::db()->executer($requete); |
return $migration_releve; |
} |
} |
/trunk/jrest/lib/RechercheImage.php |
---|
61,7 → 61,7 |
$requete_recherche_images .= ' ORDER BY '.$ordre.' '.$direction.' LIMIT '.$debut.','.$limite ; |
$resultats_images = array(); |
$resultats_images = Cel::db()->executerRequete($requete_recherche_images); |
$resultats_images = Cel::db()->requeter($requete_recherche_images); |
return $resultats_images; |
} |
89,7 → 89,7 |
$requete_recherche_images .= $sous_requete_recherche; |
$nb_images = 0; |
$resultat_requete_nombre_images = Cel::db()->executerRequete($requete_recherche_images); |
$resultat_requete_nombre_images = Cel::db()->requeter($requete_recherche_images); |
if($resultat_requete_nombre_images && is_array($resultat_requete_nombre_images) && count($resultat_requete_nombre_images) > 0) { |
$nb_images = $resultat_requete_nombre_images[0]['nb_images']; |
119,7 → 119,7 |
$requete_table_liaison = 'SELECT id_observation FROM cel_obs_images WHERE id_image = '.$id_image; |
$resultats_liaisons_images = Cel::db()->executerRequete($requete_table_liaison); |
$resultats_liaisons_images = Cel::db()->requeter($requete_table_liaison); |
$ids_obs = ''; |
131,7 → 131,7 |
if(trim($ids_obs) != '') { |
$requete_obs_liees = 'SELECT * FROM cel_obs WHERE id_observation IN ('.$ids_obs.') AND ce_utilisateur ="'.$id_utilisateur.'"'; |
$resultat_obs_liees = Cel::db()->executerRequete($requete_obs_liees); |
$resultat_obs_liees = Cel::db()->requeter($requete_obs_liees); |
foreach($resultat_obs_liees as $obs_liee) |
{ |
330,7 → 330,7 |
$requete = 'SELECT courriel_utilisateur FROM cel_images WHERE '. |
'id_image = '.Cel::db()->proteger($id_image); |
$utilisateur_courriel = Cel::db()->executerRequete($requete); |
$utilisateur_courriel = Cel::db()->requeter($requete); |
$retour = false; |
if(!empty($utilisateur_courriel) && isset($utilisateur_courriel[0]['courriel_utilisateur'])) { |
345,7 → 345,7 |
'FROM cel_mots_cles_images_liaison '. |
'WHERE id_element_lie = '.$id_image; |
return Cel::db()->executerRequete($requete_selection_mots_cles); |
return Cel::db()->requeter($requete_selection_mots_cles); |
} |
// TODO: fonction temporaire |
/trunk/jrest/lib/FormateurGroupeColonne.php |
---|
644,7 → 644,7 |
static function referenceTableExiste() { |
if(!self::$is_table) { |
// une seule fois |
if(! Cel::db()->executerRequete("SHOW TABLES LIKE 'cel_references'", Cel::SQL_RETOUR_LIGNE)) return FALSE; |
if (! Cel::db()->requeterLigne("SHOW TABLES LIKE 'cel_references'")) return FALSE; |
self::$is_table = TRUE; |
} |
return TRUE; |
666,11 → 666,10 |
} |
// pas de cache: |
$nom = Cel::db()->executerRequete(sprintf("SELECT nom_commun FROM cel_references " . |
$nom = Cel::db()->requeterLigne(sprintf("SELECT nom_commun FROM cel_references " . |
"WHERE referentiel = '%s' AND num_taxon = %d LIMIT 1", |
$referentiel, |
$obs['nt']), |
Cel::SQL_RETOUR_LIGNE); |
$obs['nt'])); |
if(! $nom) return NULL; |
$nom = $nom["nom_commun"]; |
729,12 → 728,11 |
} |
// pas de cache: |
$data = Cel::db()->executerRequete(sprintf("SELECT %s FROM cel_references " . |
$data = Cel::db()->requeterLigne(sprintf("SELECT %s FROM cel_references " . |
"WHERE referentiel = '%s' AND num_nom_retenu = %d LIMIT 1", |
implode(', ', array_keys(self::$baseflor_col)), |
$referentiel, |
$obs['nom_ret_nn']), |
Cel::SQL_RETOUR_LIGNE); |
$obs['nom_ret_nn'])); |
if(! $data) { |
$ligne = array_merge($ligne, array_fill(0, count(self::$baseflor_col), NULL)); |
/trunk/jrest/lib/GestionMotsClesChemin.php |
---|
54,7 → 54,7 |
"AND id_utilisateur = ".$idUtilisateurP." ". |
' -- '.__FILE__.':'.__LINE__; |
$ids_enfants = Cel::db()->executerRequete($requete); |
$ids_enfants = Cel::db()->requeter($requete); |
return $ids_enfants; |
} |
70,7 → 70,7 |
"AND id_utilisateur = $idUtilisateurP ". |
' -- '.__FILE__.':'.__LINE__; |
$infosMotCle = Cel::db()->executerRequete($requete); |
$infosMotCle = Cel::db()->requeter($requete); |
if (!empty($infosMotCle)) { |
$idMotCle = $infosMotCle[0]['id_mot_cle']; |
197,7 → 197,7 |
} |
public function supprimerToutesLiaisonsPourIdsElementsLies($ids_elements_lies) { |
$idsElementsLiesP = Cel::db()->protegerTableau($ids_elements_lies); |
$idsElementsLiesP = Cel::db()->proteger($ids_elements_lies); |
$listeIds = implode(',', $idsElementsLiesP); |
$requete = "DELETE FROM {$this->table_liaison} ". |
212,7 → 212,7 |
public function supprimerToutesLiaisonsIdsMotsCles($ids_mots_cles, $id_utilisateur) { |
$suppression = true; |
if (!empty($ids_mots_cles)) { |
$idsMotsClesP = Cel::db()->protegerTableau($ids_mots_cles); |
$idsMotsClesP = Cel::db()->proteger($ids_mots_cles); |
$listeIds = implode(',', $idsMotsClesP); |
$requete = "DELETE FROM {$this->table_liaison} ". |
219,7 → 219,7 |
"WHERE id_mot_cle IN ($listeIds) ". |
' -- '.__FILE__.':'.__LINE__; |
$suppression = Cel::db()->executerRequeteSimple($requete); |
$suppression = Cel::db()->executer($requete); |
$suppression = ($suppression !== false) ? true : false; |
} |
return $suppression; |
242,7 → 242,7 |
"AND id_mot_cle IN ($sousRequete) ". |
' -- '.__FILE__.':'.__LINE__; |
$suppression_liaison = Cel::db()->executerRequeteSimple($requete); |
$suppression_liaison = Cel::db()->executer($requete); |
$suppression_liaison = ($suppression_liaison !== false); |
return $suppression_liaison; |
405,7 → 405,7 |
} |
public function obtenirIdsMotClesPourMotsCles($mots_cles, $id_utilisateur) { |
$motsClesP = Cel::db()->protegerTableau($mots_cles); |
$motsClesP = Cel::db()->proteger($mots_cles); |
$listeMotsClesP = implode(',', $motsClesP); |
$idUtilisateurP = Cel::db()->proteger($id_utilisateur); |
443,7 → 443,7 |
public function obtenirIdElementsLiesPourIds($ids_mots_cles) { |
$idsElementsLies = array(); |
if (!empty($ids_mots_cles)) { |
$idsMotsClesP = Cel::db()->protegerTableau($ids_mots_cles); |
$idsMotsClesP = Cel::db()->proteger($ids_mots_cles); |
$listeIdsMotsCles = implode(',', $idsMotsClesP); |
$requete = 'SELECT id_element_lie '. |
452,7 → 452,7 |
' -- '.__FILE__.':'.__LINE__; |
$idsElementsLies = Cel::db()->executerRequete($requete); |
$idsElementsLies = Cel::db()->requeter($requete); |
} |
return $idsElementsLies; |
} |
608,7 → 608,7 |
"SET id_utilisateur = $idUtilisateurP ". |
"WHERE id_utilisateur = $emailUtilisateurP "; |
$migration = Cel::db()->executerRequeteSimple($requete_migration_mc); |
$migration = Cel::db()->executer($requete_migration_mc); |
$migration = ($migration !== false) ? true : false; |
return $migration; |
} |
/trunk/jrest/lib/Bdd2.php |
---|
39,73 → 39,25 |
* @param unknown_type $requete |
*/ |
public function requeter($requete, $retour = self::SQL_RETOUR_COMPLET, $mode = PDO::FETCH_ASSOC) { |
$requete = $this->protegerRequete($requete); |
return $this->executerRequete($requete, $retour, $mode); |
} |
/** |
* Protège automatiquement toutes les chaines comprises entre deux caractères '|'. |
* @see protegerRequete() |
* @param unknown_type $requete |
* Execute la requete retournant une seule ligne de résultat. |
* @param String $requete |
*/ |
public function executer($requete) { |
$requete = $this->protegerRequete($requete); |
return $this->executerRequeteSimple($requete); |
public function requeterLigne($requete, $mode = PDO::FETCH_ASSOC) { |
return $this->executerRequete($requete, self::SQL_RETOUR_LIGNE, $mode); |
} |
/** |
* Méthode permettant de rechercher dans une requete SQL sous forme de chaine (String) les chaines |
* à protéger. Cela évite de protéger chaque variable avant de l'insérer dans une requete SQL. |
* Par contre, il est important que les chaine à protéger ne contiennent pas le caractère '|'. |
* |
* @param $requete |
* Execute la requete retournant une seule colone de résultat. |
* @param String $requete |
*/ |
public function protegerRequete($requete) { |
if (substr_count($requete, '|') % 2 === 0) { |
if (preg_match_all('/\|([^|]*)\|/', $requete, $correspondances, PREG_SET_ORDER)) { |
foreach ($correspondances as $chaine) { |
$chaine_protegee = $this->quote($chaine[1]); |
$requete = str_replace($chaine[0], $chaine_protegee, $requete); |
public function requeterValeurUnique($requete, $mode = PDO::FETCH_ASSOC) { |
return $this->executerRequete($requete, self::SQL_RETOUR_COLONNE, $mode); |
} |
} |
} else { |
$this->messages[] = "La requête a protéger contient un nombre impair de caractère de protection '|'."; |
$requete = false; |
} |
return $requete; |
} |
public function proteger($chaine) { |
return $this->quote($chaine); |
} |
public function protegerTableau(Array $tableau) { |
foreach ($tableau as $id => $val) { |
if (is_array($val)) { |
$tableau[$id] = $this->protegerTableau($val); |
} else { |
$tableau[$id] = $this->proteger($val); |
} |
} |
return $tableau; |
} |
public function executerRequeteSimple($requete) { |
$resultat = false; |
try { |
$resultat = $this->exec($requete); |
if ($resultat === false) { |
$this->debug[] = "La requête a échoué : $requete"; |
} |
} catch (PDOException $e) { |
$message = "Fichier : {$e->getFile()} \nLigne : {$e->getLine()} \nMessage : {$e->getMessage()} \nRequête : $requete"; |
$code = E_USER_ERROR; |
throw new Exception($message, $code); |
} |
return $resultat; |
} |
public function executerRequete($requete, $retour = self::SQL_RETOUR_COMPLET, $mode = PDO::FETCH_ASSOC) { |
$resultat = false; |
try { |
129,21 → 81,60 |
$this->debug[] = "La requête a retourné aucun résultat : $requete"; |
} |
} catch (PDOException $e) { |
$this->debug[] = sprintf($this->getTxt('sql_erreur_requete'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete); |
$msgTpl = "Requête echec.\nFichier : %s.\nLigne : %s.\nMessage : %s.\nRequête : %s"; |
$this->debug[] = sprintf($msgTpl, $e->getFile(), $e->getLine(), $e->getMessage(), $requete); |
} |
return $resultat; |
} |
public function getTxt($id) { |
$sortie = ''; |
switch ($id) { |
case 'sql_erreur' : $sortie = 'Requête echec. Fichier : "%s". Ligne : "%s". Message : %s'; break; |
case 'sql_erreur_requete' : $sortie = "Requête echec.\nFichier : %s.\nLigne : %s.\nMessage : %s.\nRequête : %s"; break; |
default : $sortie = $id; |
/** |
* Execute la requete retournant l'objet brut de résultat pour l'utiliser dans un foreach. |
* @param String $requete |
*/ |
public function requeterBrut($requete) { |
return $this->executerRequete($requete, self::SQL_RETOUR_BRUT); |
} |
return $sortie; |
/** |
* Protège automatiquement toutes les chaines comprises entre deux caractères '|'. |
* @see protegerRequete() |
* @param unknown_type $requete |
*/ |
public function executer($requete) { |
$resultat = false; |
try { |
$resultat = $this->exec($requete); |
if ($resultat === false) { |
$this->debug[] = "La requête a échoué : $requete"; |
} |
} catch (PDOException $e) { |
$message = "Fichier : {$e->getFile()} \nLigne : {$e->getLine()} \nMessage : {$e->getMessage()} \nRequête : $requete"; |
$code = E_USER_ERROR; |
throw new Exception($message, $code); |
} |
return $resultat; |
} |
public function proteger($donnees) { |
if (is_array($donnees)) { |
$retour = $this->protegerTableau($donnees); |
} else { |
$retour = $this->quote($donnees); |
} |
return $retour; |
} |
private function protegerTableau(Array $tableau) { |
foreach ($tableau as $id => $val) { |
if (is_array($val)) { |
$tableau[$id] = $this->protegerTableau($val); |
} else { |
$tableau[$id] = $this->proteger($val); |
} |
} |
return $tableau; |
} |
public function obtenirDernierId() { |
return $this->lastInsertId(); |
} |
/trunk/jrest/lib/GestionObservation.php |
---|
2,8 → 2,9 |
/** |
* PHP Version 5.2 |
* |
* @category PHP |
* @package jrest |
* @category CEL |
* @package Services |
* @subpackage Bibliothèque |
* @author Raphaël Droz <raphael@tela-botanica.org> |
* @author Aurelien Peronnet <aurelien@tela-botanica.org> |
* @copyright 2010, 2013 Tela-Botanica |
68,7 → 69,7 |
// important ! ne pas utiliser la fonction executerRequete qui renvoie une erreur si la requete |
// contient des | (pipes) ce qui peut arriver dans les commentaires |
// TODO: corriger la fonction ou bien continuer à utiliser executerRequeteSimple |
$resultat_ajout_observation = Cel::db()->executerRequeteSimple($requete_insertion_observation); |
$resultat_ajout_observation = Cel::db()->executer($requete_insertion_observation); |
$retour = true; |
if ($resultat_ajout_observation === false) { |
90,11 → 91,11 |
*/ |
public function renvoyerDernierOrdreUtilisePlusUn($utilisateur) { |
$idUtilisateurP = Cel::db()->proteger($utilisateur); |
$requete_selection_dernier_ordre = 'SELECT max(ordre) AS ordre '. |
$requete = 'SELECT max(ordre) AS ordre '. |
'FROM cel_obs '. |
"WHERE ce_utilisateur = $idUtilisateurP ". |
' -- ' . __FILE__ . ':' . __LINE__; |
$dernier_ordre = Cel::db()->executerRequete($requete_selection_dernier_ordre); |
$dernier_ordre = Cel::db()->requeter($requete); |
$nouvel_ordre = 0; |
if (is_array($dernier_ordre) && count($dernier_ordre) > 0 && trim($dernier_ordre[0]['ordre']) != '') { |
113,13 → 114,13 |
$idUtilisateurP = Cel::db()->proteger($utilisateur); |
$ordreP = Cel::db()->proteger($ordre); |
$requete_selection_dernier_id = 'SELECT id_observation '. |
$requete = 'SELECT id_observation '. |
'FROM cel_obs '. |
"WHERE ce_utilisateur = $idUtilisateurP ". |
"AND ordre = $ordreP ". |
' -- ' . __FILE__ . ':' . __LINE__; |
$dernier_id = Cel::db()->executerRequete($requete_selection_dernier_id); |
$dernier_id = Cel::db()->requeter($requete); |
$retour = null; |
if ($dernier_id != false) { |
185,7 → 186,7 |
// important ! ne pas utiliser la fonction executerRequete qui renvoie une erreur si la requete contient des | (pipes) |
// ce qui peut arriver dans les commentaires |
// TODO: corriger la fonction ou bien continuer à utiliser executerRequeteSimple |
$resultat_modification = Cel::db()->executerRequeteSimple($requete_modification); |
$resultat_modification = Cel::db()->executer($requete_modification); |
$retour = true; |
if ($resultat_modification === false) { |
262,7 → 263,7 |
// important ! ne pas utiliser la fonction executerRequete qui renvoie une erreur si la requete contient des | (pipes) |
// ce qui peut arriver dans les commentaires |
// TODO: corriger la fonction ou bien continuer à utiliser executerRequeteSimple |
$resultat_modification = Cel::db()->executerRequeteSimple($requete_modification . ' -- ' . __FILE__ . ':' . __LINE__); |
$resultat_modification = Cel::db()->executer($requete_modification . ' -- ' . __FILE__ . ':' . __LINE__); |
if ($resultat_modification === false) { |
$this->logger("CEL_bugs","Erreur de mise à jour de l\'observation : ".$id); |
278,17 → 279,15 |
} else { |
$chaine_ids_obs = Cel::db()->proteger($ids_obs_ou_tableau); |
} |
$etat_transmission = $publier ? 1 : 0; |
$requete = "UPDATE cel_obs ". |
"SET transmission = ".$etat_transmission.", ". |
"date_modification = NOW() ". |
"WHERE id_observation IN (".$chaine_ids_obs.")"; |
"SET transmission = $etat_transmission , date_modification = NOW() ". |
"WHERE id_observation IN ($chaine_ids_obs) ". |
' -- ' . __FILE__ . ':' . __LINE__; |
$resultat_modif_obs = Cel::db()->executerRequeteSimple($requete); |
return $resultat_modif_obs; |
$resultat = Cel::db()->executer($requete); |
return $resultat; |
} |
/** |
328,7 → 327,7 |
"AND id_observation IN ($chaine_ids_obs) ". |
' -- ' . __FILE__ . ':' . __LINE__; |
$resultat_suppression_observations = Cel::db()->executerRequeteSimple($requete); |
$resultat_suppression_observations = Cel::db()->executer($requete); |
// TODO: Faire la suppression des mots clés |
// et des liaisons obs images dans une ou des fonctions à part |
340,7 → 339,7 |
"WHERE id_observation IN ($chaine_ids_obs) ". |
' -- ' . __FILE__ . ':' . __LINE__; |
$resultat_suppression_liens = Cel::db()->executerRequeteSimple($requete); |
$resultat_suppression_liens = Cel::db()->executer($requete); |
if ($resultat_suppression_liens === false) { |
$msg = "Erreur de suppression d'une liste de liaison entre observations et images : $requete"; |
383,7 → 382,7 |
"WHERE ce_utilisateur = $idAncienP ". |
'ORDER BY ordre '. |
' -- '.__FILE__.' : '.__LINE__; |
$resultat = Cel::db()->executerRequete($requete); |
$resultat = Cel::db()->requeter($requete); |
$reussite = true; |
if (is_array($resultat)) { |
396,7 → 395,7 |
"WHERE ce_utilisateur = $idAncienP ". |
"AND ordre = $ancienOrdre ". |
' -- '.__FILE__.' : '.__LINE__; |
$migration_releve = Cel::db()->executerRequeteSimple($requete); |
$migration_releve = Cel::db()->executer($requete); |
//TODO: meilleure vérification |
if ($migration_releve === false) { |
425,7 → 424,7 |
'WHERE ce_utilisateur = '.Cel::db()->proteger($mail_utilisateur).' '. |
' -- '.__FILE__.' : '.__LINE__; |
$migration_releve = Cel::db()->executerRequeteSimple($requete_migration_releve); |
$migration_releve = Cel::db()->executer($requete_migration_releve); |
return $migration_releve; |
} |
/trunk/jrest |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/topic-dbsingleton/jrest:r1720-1764 |
Merged /branches/v1.8-debroussailleuse/jrest:r1981,1987,1992 |
Merged /branches/v1.7-croissant/jrest:r1855,1879-1880,1885-1886,1917,1923,1983 |
Merged /branches/v2.0-elagueuse/jrest:r2113-2114 |