Subversion Repositories eFlore/Applications.cel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1764 → Rev 1765

/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 = $this->executerRequete($requete);
$elements = Cel::db()->executerRequete($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 = $this->executerRequete($requete);
$elements = Cel::db()->executerRequete($requete);
 
// Création du contenu
if ($elements != false && count($elements) > 0) {
300,11 → 300,11
$nom_valeur = explode("=",$pair);
if (sizeof($nom_valeur) != 0) {
switch ($nom_valeur[0]) {
case "ci_limite" : $this->limit = $this->bdd->quote($nom_valeur[1]); break;
case "ci_limite" : $this->limit = Cel::db()->quote($nom_valeur[1]); break;
case "commentaire" : $mots_comment_liste = explode(" " , $nom_valeur[1]);
foreach($mots_comment_liste as $mot_comment) {
$mot_comment = trim($mot_comment) ;
$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote('%'.$mot_comment.'%').' AND ';
$requete .= $nom_valeur[0].' LIKE '.Cel::db()->quote('%'.$mot_comment.'%').' AND ';
}
break;
case "date_observation" :
312,7 → 312,7
if (preg_match('/(^[0-9]{2})-([0-9]{2})-([0-9]{4}$)/', $nom_valeur[1], $matches)) {
$nom_valeur[1] = $matches[3].'-'.$matches[2].'-'.$matches[1];
}
$requete .= $nom_valeur[0].'='.$this->bdd->quote($nom_valeur[1]).' AND '; break;
$requete .= $nom_valeur[0].'='.Cel::db()->quote($nom_valeur[1]).' AND '; break;
case "ce_zone_geo" :
$requete .= ' ('.$nom_valeur[0].' LIKE "INSEE-C:'.$nom_valeur[1].'%") AND '; break;
case "nom_ret" :
334,17 → 334,17
if (preg_match('/.*OU.*/', $mot_cle)) {
$mots_cles_tab = explode('OU',$mot_cle);
foreach($mots_cles_tab as $mot_cle_item) {
$requete .= '(mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') OR ';
$requete .= '(mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') OR ';
}
$requete = '('.rtrim($requete,'OR ').') ';
} else if (preg_match('/.*ET.*/', $mot_cle)) {
$mots_cles_tab = explode('ET',$mot_cle);
foreach($mots_cles_tab as $mot_cle_item) {
$requete .= '(mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') AND ';
$requete .= '(mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') AND ';
}
$requete = '('.rtrim($requete, 'AND ').') ';
} else {
$requete = "(mots_cles_texte LIKE ".$this->proteger('%'.$mot_cle.'%').') ';
$requete = "(mots_cles_texte LIKE ".Cel::db()->proteger('%'.$mot_cle.'%').') ';
}
return $requete;
}
355,17 → 355,17
if (preg_match('/.*OU.*/', $tag)) {
$mots_cles_tab = explode('OU',$tag);
foreach($mots_cles_tab as $mot_cle_item) {
$where .= '(ci.mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') OR ';
$where .= '(ci.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') OR ';
}
$where .= '('.rtrim($where,'OR ').') ';
} else if (preg_match('/.*ET.*/', $tag)) {
$mots_cles_tab = explode('ET',$tag);
foreach($mots_cles_tab as $mot_cle_item) {
$where .= '(ci.mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') AND ';
$where .= '(ci.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') AND ';
}
$where .= '('.rtrim($where, 'AND ').') ';
} else {
$where .= "(ci.mots_cles_texte LIKE ".$this->proteger('%'.$tag.'%').') ';
$where .= "(ci.mots_cles_texte LIKE ".Cel::db()->proteger('%'.$tag.'%').') ';
}
$requete .= $where.' ))';
return $requete;
/trunk/jrest/services/InventoryUserList.php
35,7 → 35,7
$this->construireRequeteConditionTableObs($uid).' '.
'LIMIT 0,50';
$utilisateurs = $this->executerRequete($requete_utilisateurs);
$utilisateurs = Cel::db()->executerRequete($requete_utilisateurs);
$liste_utilisateurs = array();
if (!$utilisateurs) {
57,7 → 57,7
$condition = '';
if (isset($params[1]) && $params[1] != null && $params[1] != '*') {
$condition .= ' WHERE courriel LIKE '.$this->proteger($params[1].'%');
$condition .= ' WHERE courriel LIKE '.Cel::db()->proteger($params[1].'%');
}
return $condition;
68,7 → 68,7
$condition = '';
if (isset($params[1]) && $params[1] != null && $params[1] != '*') {
$condition .= ' WHERE courriel_utilisateur LIKE '.$this->proteger($params[1].'%');
$condition .= ' WHERE courriel_utilisateur LIKE '.Cel::db()->proteger($params[1].'%');
}
return $condition;
/trunk/jrest/services/CelImageDoublon.php
95,7 → 95,7
'FROM cel_images '.
"WHERE ce_utilisateur = '$utilisateur' ";
 
$images = $this->executerRequete($requete);
$images = Cel::db()->executerRequete($requete);
 
// Traitement
$doublons = array();
112,7 → 112,7
if (!isset($doublons[$img['md5']])) {
$id_img = $md5[$img['md5']]['img_id'];
$doublons[$img['md5']][$id_img] = $md5[$img['md5']];
$images_doublons_id[] = $this->bdd->quote($id_img);
$images_doublons_id[] = Cel::db()->quote($id_img);
}
 
$doublons[$img['md5']][$img['id_image']] = array(
120,7 → 120,7
'obs_ordre' => array(),
'img_ordre' => $img['ordre'],
'img_id' => $img['id_image']);
$images_doublons_id[] = $this->bdd->quote($img['id_image']);
$images_doublons_id[] = Cel::db()->quote($img['id_image']);
}
}
134,7 → 134,7
"WHERE cim.ce_utilisateur = '$utilisateur' ".
' AND cim.id_image IN ('.implode(',', $images_doublons_id).')';
 
$infos = $this->executerRequete($requete);
$infos = Cel::db()->executerRequete($requete);
foreach ($infos as $info) {
if (isset($doublons[$info['md5']][$info['id_image']]) && ! $this->etreNull($info['ordre_obs'])) {
/trunk/jrest/services/InventoryCheck.php
27,7 → 27,7
 
$requete_obs ="SELECT id_observation, zone_geo, ce_zone_geo, date_observation, ce_utilisateur, courriel_utilisateur FROM cel_obs";
$resultat_obs = $this->requeter($requete_obs);
$resultat_obs = Cel::db()->requeter($requete_obs);
$observations = array();
if (is_array($resultat_obs)) {
43,7 → 43,7
$requete_lieu = "select * from cel_zones_geo where name = '".mysql_escape_string($obs['zone_geo'])."' limit 1";
}
$res_loc = $this->requeter($requete_lieu);
$res_loc = Cel::db()->requeter($requete_lieu);
if (is_array($res_loc) && count($res_loc) > 0) {
/trunk/jrest/services/CoordSearch.php
161,9 → 161,9
$departement = substr($departement,0,2);
}
$requete_selection_commune = 'SELECT utm_x, utm_y, utm_secteur, code FROM cel_zones_geo '.
'WHERE nom LIKE '.$this->proteger($commune_formatee).' AND code LIKE '.$this->proteger($departement.'%');
'WHERE nom LIKE '.Cel::db()->proteger($commune_formatee).' AND code LIKE '.Cel::db()->proteger($departement.'%');
 
$commune_coordonnees = $this->executerRequete($requete_selection_commune);
$commune_coordonnees = Cel::db()->executerRequete($requete_selection_commune);
 
$retour = false;
 
/trunk/jrest/services/InventoryKeyWordList.php
47,10 → 47,10
$requete = 'SELECT mot_cle, id_mot_cle'.$this->suffixe_champ.', ce_mot_cle'.$this->suffixe_champ.'_parent '.
'FROM cel_mots_cles'.$this->suffixe_table.' '.
'WHERE id_utilisateur = '.$this->proteger($id_utilisateur).' '.
'WHERE id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' '.
'ORDER BY niveau ';
$resultats_mots_cles = $this->requeter($requete);
$resultats_mots_cles = Cel::db()->requeter($requete);
if (is_array($resultats_mots_cles)) {
$mots_cles = array();
77,11 → 77,11
$nouvel_id_general = md5(mb_strtolower($nouveau_nom));
 
$requete = 'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
'SET mot_cle = '.$this->proteger($nouveau_nom).' , '.
' md5 = '.$this->proteger($nouvel_id_general).' '.
'WHERE id_mot_cle'.$this->suffixe_champ.' = '.$this->proteger($id_mot_cle).' '.
' AND id_utilisateur = '.$this->proteger($id_utilisateur) ;
$reussite = $this->executer($requete);
'SET mot_cle = '.Cel::db()->proteger($nouveau_nom).' , '.
' md5 = '.Cel::db()->proteger($nouvel_id_general).' '.
'WHERE id_mot_cle'.$this->suffixe_champ.' = '.Cel::db()->proteger($id_mot_cle).' '.
' AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur) ;
$reussite = Cel::db()->executer($requete);
if ($reussite !== false) {
echo 'OK';
}
161,16 → 161,16
$requete = 'INSERT INTO cel_mots_cles'.$this->suffixe_table.' '.
'VALUES ( '.
$this->proteger($id_mot_cle).', '.
$this->proteger($id_utilisateur).', '.
$this->proteger($mot_cle).', '.
$this->proteger($id_mot_cle_general).', '.
$this->proteger($bg).', '.
$this->proteger($bd).', '.
$this->proteger($niveau).', '.
$this->proteger($id_parent).') ' ;
Cel::db()->proteger($id_mot_cle).', '.
Cel::db()->proteger($id_utilisateur).', '.
Cel::db()->proteger($mot_cle).', '.
Cel::db()->proteger($id_mot_cle_general).', '.
Cel::db()->proteger($bg).', '.
Cel::db()->proteger($bd).', '.
Cel::db()->proteger($niveau).', '.
Cel::db()->proteger($id_parent).') ' ;
$transaction_reussie_2 = $this->executer($requete);
$transaction_reussie_2 = Cel::db()->executer($requete);
 
if ($transaction_reussie_1 && $transaction_reussie_2) {
$this->completerTransaction();
197,21 → 197,21
$bd = $bornes['bd'];
$requete_mots_cles_fils = 'SELECT id_mot_cle'.$this->suffixe_champ.' as id FROM cel_mots_cles'.$this->suffixe_table.' '.
'WHERE bg >= '.$this->proteger($bg).' '.
' AND bd <= '.$this->proteger($bd).' '.
' AND id_utilisateur = '.$this->proteger($id_utilisateur).' ';
'WHERE bg >= '.Cel::db()->proteger($bg).' '.
' AND bd <= '.Cel::db()->proteger($bd).' '.
' AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
 
$mots_cles_fils = $this->requeter($requete_mots_cles_fils);
$mots_cles_fils = Cel::db()->requeter($requete_mots_cles_fils);
foreach ($mots_cles_fils as $fils) {
$tableau_ids_mots_cles[] = $fils['id'];
}
$requete = 'DELETE FROM cel_mots_cles'.$this->suffixe_table.' '.
'WHERE bg >= '.$this->proteger($bg).' '.
' AND bd <= '.$this->proteger($bd).' '.
' AND id_utilisateur = '.$this->proteger($id_utilisateur).' ';
'WHERE bg >= '.Cel::db()->proteger($bg).' '.
' AND bd <= '.Cel::db()->proteger($bd).' '.
' AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
$transaction_reussie_1 = $this->executer($requete);
$transaction_reussie_1 = Cel::db()->executer($requete);
$transaction_reussie_2 = $this->decalerBornesMoinsIntervalle($bg, $bd, $id_utilisateur) ? true : false;
if ($transaction_reussie_1 !== false && $transaction_reussie_2 !== false) {
228,8 → 228,8
private function ajouterMotCleRacine($id) {
$requete = 'SELECT COUNT(*) as nb_mc '.
'FROM cel_mots_cles'.$this->suffixe_table.' '.
'WHERE id_utilisateur = '.$this->proteger($id).' ';
$resultat = $this->requeter($requete);
'WHERE id_utilisateur = '.Cel::db()->proteger($id).' ';
$resultat = Cel::db()->requeter($requete);
 
if (is_array($resultat) && count($resultat) > 0) {
$valeurs = $resultat[0]['nb_mc'];
248,10 → 248,10
$id_racine = $this->suffixe;
}
$md5_racine = $this->proteger(md5($nom_racine));
$id_racine = $this->proteger($id_racine);
$nom_racine = $this->proteger($nom_racine);
$id_utilisateur = $this->proteger($id);
$md5_racine = Cel::db()->proteger(md5($nom_racine));
$id_racine = Cel::db()->proteger($id_racine);
$nom_racine = Cel::db()->proteger($nom_racine);
$id_utilisateur = Cel::db()->proteger($id);
 
if ($valeurs == 0) {
$requete = "INSERT INTO cel_mots_cles{$this->suffixe_table} ".
258,7 → 258,7
"VALUES ($id_racine, $id_utilisateur, $nom_racine, $md5_racine, ".
"1, 2, 0, '') ";
$this->executer($requete);
Cel::db()->executer($requete);
}
}
}
269,11 → 269,11
private function commencerTransaction() {
// Désactive l'autocommit le temps de la manipulation de l'arbre
$requete = 'SET AUTOCOMMIT = 0 ';
$reussite_autocommit = $this->executer($requete);
$reussite_autocommit = Cel::db()->executer($requete);
 
// Débute une nouvelle transaction
$requete = 'BEGIN ';
$reussite_begin = $this->executer($requete);
$reussite_begin = Cel::db()->executer($requete);
}
 
/**
282,11 → 282,11
private function completerTransaction() {
// Complète la transaction
$requete = 'COMMIT ';
$reussite_commit = $this->executer($requete);
$reussite_commit = Cel::db()->executer($requete);
 
// Réactive l'autocommit le temps de la manipulation de l'arbre
$requete = 'SET AUTOCOMMIT = 1 ';
$reussite_autocommit = $this->executer($requete);
$reussite_autocommit = Cel::db()->executer($requete);
 
echo 'OK';
}
297,11 → 297,11
private function annulerTransaction() {
// Annule la transaction
$requete = 'ROLLBACK ';
$reussite_rollback = $this->executer($requete);
$reussite_rollback = Cel::db()->executer($requete);
 
// Réactive l'autocommit le temps de la manipulation de l'arbre
$requete = 'SET AUTOCOMMIT = 1 ';
$reussite_autocommit = $this->executer($requete);
$reussite_autocommit = Cel::db()->executer($requete);
 
echo 'ERROR';
}
312,10 → 312,10
private function calculerBornesEtNiveau($id_mot_cle,$id_utilisateur) {
$requete = 'SELECT bd, bg, niveau '.
'FROM cel_mots_cles'.$this->suffixe_table.' '.
'WHERE id_mot_cle'.$this->suffixe_champ.' = '.$this->proteger($id_mot_cle).' '.
' AND id_utilisateur = '.$this->proteger($id_utilisateur).' ';
'WHERE id_mot_cle'.$this->suffixe_champ.' = '.Cel::db()->proteger($id_mot_cle).' '.
' AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
$resultat = $this->requeter($requete);
$resultat = Cel::db()->requeter($requete);
$valeurs = null;
if(is_array($resultat) && count($resultat) > 0) {
332,15 → 332,15
// Décalage borne droite
$requete = 'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
'SET bd = bd + 2 WHERE bd >= '.$valeur.' '.
' AND id_utilisateur = '.$this->proteger($id_utilisateur).' ';
$reussi_1 = $this->executer($requete);
' AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
$reussi_1 = Cel::db()->executer($requete);
// Décalage borne gauche
$requete = 'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
'SET bg = bg + 2 '.
'WHERE bg >= '.$valeur.' '.
' AND id_utilisateur = '.$this->proteger($id_utilisateur).' ';
$reussi_2 = $this->executer($requete);
' AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
$reussi_2 = Cel::db()->executer($requete);
return $reussi_1 !== false && $reussi_2 !== false;
}
355,15 → 355,15
$requete = 'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
'SET bd = bd - '.$decalage.' '.
'WHERE bd >= '.$bg.' '.
' AND id_utilisateur = '.$this->proteger($id_utilisateur).' ';
$reussi_1 = $this->executer($requete);
' AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
$reussi_1 = Cel::db()->executer($requete);
 
// Décalage borne gauche
$requete = 'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
'SET bg = bg - '.$decalage.' '.
'WHERE bg > '.$bg.' '.
' AND id_utilisateur = '.$this->proteger($id_utilisateur).' ';
$reussi_2 = $this->executer($requete);
' AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
$reussi_2 = Cel::db()->executer($requete);
return $reussi_1 !== false && $reussi_2 !== false;
}
378,15 → 378,15
$requete = 'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
'SET bd = bd + '.$decalage.' '.
'WHERE bd >= '.$valeur_bornes.' '.
' AND id_utilisateur = '.$this->proteger($id_utilisateur).' ';
$reussi_1 = $this->executer($requete);
' AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
$reussi_1 = Cel::db()->executer($requete);
 
// decalage borne gauche
$requete = 'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
'SET bg = bg + '.$decalage.' '.
'WHERE bg >= '.$valeur_bornes.' '.
' AND id_utilisateur = '.$this->proteger($id_utilisateur).' ';
$reussi_2 = $this->executer($requete);
' AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
$reussi_2 = Cel::db()->executer($requete);
 
return $reussi_1 !== false && $reussi_2 !== false;
}
400,9 → 400,9
' bg = bg - '.$bd.' - 1 '.
'WHERE bd <= '.$bd.' '.
' AND bg >= '.$bg.' '.
' AND id_utilisateur = '.$this->proteger($id_utilisateur).' ';
' AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
 
return $this->executer($requete);
return Cel::db()->executer($requete);
}
 
/**
417,18 → 417,18
' niveau = niveau + '.$modif_niveau.' '.
' WHERE bg >= '.$bg.' '.
' AND bd <= '.$bd.' '.
' AND id_utilisateur = '.$this->proteger($id_utilisateur).' ';
' AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
 
return $this->executer($requete);
return Cel::db()->executer($requete);
}
 
private function changerPere($id_mot_cle, $id_pere, $id_utilisateur) {
$requete = 'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
'SET ce_mot_cle'.$this->suffixe_champ.'_parent = '.$this->proteger($id_pere).' '.
'WHERE id_mot_cle'.$this->suffixe_champ.' = '.$this->proteger($id_mot_cle).' '.
' AND id_utilisateur = '.$this->proteger($id_utilisateur).' ';
'SET ce_mot_cle'.$this->suffixe_champ.'_parent = '.Cel::db()->proteger($id_pere).' '.
'WHERE id_mot_cle'.$this->suffixe_champ.' = '.Cel::db()->proteger($id_mot_cle).' '.
' AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
 
return $this->executer($requete);
return Cel::db()->executer($requete);
}
}
?>
/trunk/jrest/services/LocationSearch.php
50,10 → 50,10
$requete_information_lieu = 'SELECT DISTINCT nom, code '.
'FROM cel_zones_geo '.
'WHERE '.
'nom LIKE '.$this->proteger($lieu_formate.'%').' '.
'nom LIKE '.Cel::db()->proteger($lieu_formate.'%').' '.
'ORDER BY nom LIMIT 50';
 
$liste_lieux = $this->requeter($requete_information_lieu);
$liste_lieux = Cel::db()->requeter($requete_information_lieu);
if($liste_lieux) {
foreach($liste_lieux as $lieu_trouve) {
/trunk/jrest/services/Resume.php
23,11 → 23,11
function getElement($uid){
 
$requete_dernieres_obs = 'SELECT * FROM cel_obs'.
' WHERE ce_utilisateur = '.$this->proteger($uid[1]).
' WHERE ce_utilisateur = '.Cel::db()->proteger($uid[1]).
' AND transmission = 0'.
' ORDER BY date_modification DESC LIMIT 0,5';
 
$resultat_dernieres_obs = $this->requeter($requete_dernieres_obs);
$resultat_dernieres_obs = Cel::db()->requeter($requete_dernieres_obs);
$dernieres_obs = array();
$resume = array();
54,7 → 54,7
$cible_lien = '';
$req_liaison = 'SELECT * FROM cel_images WHERE id_image IN (SELECT id_image FROM cel_obs_images WHERE id_observation = "'.$obs['id_observation'].'") AND ce_utilisateur = "'.$obs['ce_utilisateur'].'"' ;
$res_liaison = $this->requeter($req_liaison);
$res_liaison = Cel::db()->requeter($req_liaison);
 
$ligne_image = null;
/trunk/jrest/services/CelStatistique.php
53,7 → 53,7
}
 
private function getEvolImgLieesParMois($param) {
$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : null;
$utilisateur = isset($_GET['utilisateur']) ? Cel::db()->quote($_GET['utilisateur']) : null;
// Récupération des données
$requete = "SELECT DATE_FORMAT(date_creation, '%Y%m') AS periode, COUNT(ci.id_image) AS nbre ".
63,7 → 63,7
'GROUP BY periode '.
'ORDER BY periode ';
 
$resulats = $this->executerRequete($requete);
$resulats = Cel::db()->executerRequete($requete);
 
$img_totale = array();
foreach ($resulats as $info) {
124,7 → 124,7
}
 
private function getEvolImgParMois($param) {
$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : null;
$utilisateur = isset($_GET['utilisateur']) ? Cel::db()->quote($_GET['utilisateur']) : null;
// Récupération des données
$requete = "SELECT DATE_FORMAT(date_creation, '%Y%m') AS periode, COUNT(id_image) AS nbre ".
134,7 → 134,7
'GROUP BY periode '.
'ORDER BY periode ';
 
$resulats = $this->executerRequete($requete);
$resulats = Cel::db()->executerRequete($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 = $this->executerRequete($requete);
$resultats = Cel::db()->executerRequete($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 = $this->executerRequete($requete);
$utilisateurs = Cel::db()->executerRequete($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 = $this->executerRequete($requete);
$utilisateurs = Cel::db()->executerRequete($requete);
 
// Création des classes d'utilisateurs
$classes = array('00->10' => 0, '11->50' => 0, '51->100' => 0, '101->500' => 0, '500->∞' => 0);
779,7 → 779,7
}
 
private function getNuagePointsObsParHeureEtJourSemaine($param) {
$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : false;
$utilisateur = isset($_GET['utilisateur']) ? Cel::db()->quote($_GET['utilisateur']) : false;
// Récupération des données de la base
$requete = 'SELECT courriel_utilisateur, DATE_FORMAT(date_creation, "%w-%H") AS periode, (ROUND(LOG10(COUNT(id_observation))) + 1) AS nbre '.
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 = $this->executerRequete($requete);
$infos = Cel::db()->executerRequete($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 = $this->executerRequete($requete);
$resultats = Cel::db()->executerRequete($requete);
 
// Trie des données
$max_obs = 0;
927,7 → 927,7
}
 
private function executerRequeteEvol($table, $champ, $format_date = '%Y%m', $where = null, $champ_date = 'date_creation', $order_by = null, $limit = null) {
$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : false;
$utilisateur = isset($_GET['utilisateur']) ? Cel::db()->quote($_GET['utilisateur']) : false;
$requete = "SELECT DATE_FORMAT($champ_date, '$format_date') AS periode, COUNT($champ) AS nbre ".
"FROM $table ".
938,7 → 938,7
((is_null($order_by)) ? '' : "ORDER BY $order_by ");
((is_null($limit)) ? '' : "LIMIT $limit ");
 
$evolution = $this->executerRequete($requete);
$evolution = Cel::db()->executerRequete($requete);
 
// Traitement du tableau
$donnees_traitees = array();
952,7 → 952,7
private function executerRequeteNombre($table, $champ, $where = null) {
$utilisateur = null;
if (isset($_GET['utilisateur'])) {
$utilisateur = $this->bdd->quote($_GET['utilisateur']);
$utilisateur = Cel::db()->quote($_GET['utilisateur']);
$where = isset($where) ? $where.' AND ' : '';
$where .= "courriel_utilisateur = $utilisateur ";
}
961,7 → 961,7
"FROM $table ".
((isset($where)) ? "WHERE $where " : '');
 
$nbre = $this->executerRequete($requete, 'Column');
$nbre = Cel::db()->executerRequete($requete, 'Column');
return $nbre;
}
}
/trunk/jrest/services/CelWidgetSaisie.php
117,7 → 117,7
$valeurs = implode(', ', $obs);
$requete = "INSERT INTO cel_obs ($champs) VALUES ($valeurs) ";
 
if ($this->executerRequeteSimple($requete) === false) {
if (Cel::db()->executerRequeteSimple($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'], "'");
283,12 → 283,12
 
private function getMaxOrdre($id_utilisateur) {
$ordre = null;
$identifiant = $this->bdd->quote($id_utilisateur);
$identifiant = Cel::db()->quote($id_utilisateur);
$requete = "SELECT MAX(ordre) AS ordre ".
"FROM cel_obs ".
"WHERE ce_utilisateur = ".$this->proteger($id_utilisateur)." ";
"WHERE ce_utilisateur = ".Cel::db()->proteger($id_utilisateur)." ";
 
$ordre_max = $this->executerRequete($requete, 'Column');
$ordre_max = Cel::db()->executerRequete($requete, 'Column');
if ($ordre_max !== false) {
$ordre = $ordre_max + 1;
}
410,8 → 410,8
}
 
public function lierObsEtImg($id_image, $utilisateur, $ordre_obs) {
$id_image = $this->proteger($id_image);
$id_obs = $this->proteger($this->obtenirIdObsPourIdentifiantEtOrdre($utilisateur, $ordre_obs));
$id_image = Cel::db()->proteger($id_image);
$id_obs = Cel::db()->proteger($this->obtenirIdObsPourIdentifiantEtOrdre($utilisateur, $ordre_obs));
 
$requete = 'INSERT INTO cel_obs_images '.
' (id_image, id_observation, date_liaison) '.
419,7 → 419,7
' ON DUPLICATE KEY UPDATE id_image = id_image';
 
$liaison = true;
if ($this->executerRequeteSimple($requete) === false) {
if (Cel::db()->executerRequeteSimple($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;
}
428,8 → 428,8
 
private function obtenirIdObsPourIdentifiantEtOrdre($id_utilisateur, $ordre) {
 
$id_utilisateur = $this->proteger($id_utilisateur);
$ordre = $this->proteger($ordre);
$id_utilisateur = Cel::db()->proteger($id_utilisateur);
$ordre = Cel::db()->proteger($ordre);
 
$requete = 'SELECT id_observation '.
'FROM cel_obs '.
436,7 → 436,7
"WHERE ce_utilisateur = $id_utilisateur ".
" AND ordre = $ordre ";
 
$resultat = $this->executerRequete($requete);
$resultat = Cel::db()->executerRequete($requete);
 
$id_obs = (count($resultat) > 0) ? $resultat[0]['id_observation'] : false;
return $id_obs;
443,8 → 443,8
}
 
private function obtenirIdsObsPourTableauOrdres($id_utilisateur, $ordres) {
$id_utilisateur = $this->proteger($id_utilisateur);
$ordres = array_map(array($this,'proteger'), $ordres);
$id_utilisateur = Cel::db()->proteger($id_utilisateur);
$ordres = array_map(array(Cel::db(),'proteger'), $ordres);
 
$requete = 'SELECT id_observation '.
'FROM cel_obs '.
451,7 → 451,7
"WHERE ce_utilisateur = $id_utilisateur ".
" AND ordre IN (".implode(',',$ordres).") ";
 
$resultat = $this->executerRequete($requete);
$resultat = Cel::db()->executerRequete($requete);
$ids = array();
foreach($resultat as $id) {
$ids[] = $id['id_observation'];
508,7 → 508,7
$infosImage['md5'] = md5_file($cheminImage);
$this->debug[] = 'Nom fichier img meta :'.$nomFichierImage;
$requete = $this->construireRequeteInsertionImage($infosImage);
$resultat = $this->executerRequeteSimple($requete);
$resultat = Cel::db()->executerRequeteSimple($requete);
if ($resultat !== false) {
$idImage = $this->obtenirIdImagePourIdentifiantEtOrdre($idUtilisateur, $nouvelOrdre);
if ($idImage !== false) {
544,12 → 544,12
}
 
private function obtenirNouvelOrdrePourUtilisateur($id_utilisateur) {
$id_utilisateur = $this->proteger($id_utilisateur);
$id_utilisateur = Cel::db()->proteger($id_utilisateur);
 
$requete = 'SELECT MAX(ordre) as max_ordre '.
'FROM cel_images '.
"WHERE ce_utilisateur = $id_utilisateur ";
$resultat = $this->executerRequete($requete);
$resultat = Cel::db()->executerRequete($requete);
 
$ordre = ($resultat) ? ++$resultat[0]['max_ordre'] : 0;
return $ordre;
556,14 → 556,14
}
 
private function obtenirIdImagePourIdentifiantEtOrdre($id_utilisateur, $ordre) {
$id_utilisateur = $this->proteger($id_utilisateur);
$ordre = $this->proteger($ordre);
$id_utilisateur = Cel::db()->proteger($id_utilisateur);
$ordre = Cel::db()->proteger($ordre);
 
$requete = 'SELECT id_image '.
'FROM cel_images '.
"WHERE ce_utilisateur = $id_utilisateur ".
" AND ordre = $ordre ";
$resultat = $this->executerRequete($requete);
$resultat = Cel::db()->executerRequete($requete);
 
$id_image = (count($resultat) > 0) ? $resultat[0]['id_image'] : false;
return $id_image;
576,10 → 576,10
 
foreach ($informations as $champ => $valeur) {
$champs[] = $champ;
$valeurs[] = is_null($valeur) ? 'NULL' : $this->proteger($valeur);
$valeurs[] = is_null($valeur) ? 'NULL' : Cel::db()->proteger($valeur);
if ($champ == 'date_creation' && $valeur != 'NULL') {
$champs[] = 'date_creation';
$valeurs[] = $this->proteger($valeur);
$valeurs[] = Cel::db()->proteger($valeur);
}
}
$champs = implode(', ', $champs);
/trunk/jrest/services/CelMotCle.php
74,11 → 74,11
foreach($ids as $id) {
foreach($mots_cles_ids as $mot) {
$requete .= '('.$id.','.$this->proteger($mot).'),';
$requete .= '('.$id.','.Cel::db()->proteger($mot).'),';
}
}
$requete = rtrim($requete,',');
$resultat = $this->executer($requete);
$resultat = Cel::db()->executer($requete);
// J'en suis ici
if ($resultat) {
126,10 → 126,10
'('.
'SELECT id_mot_cle_'.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'obs' : 'image').' '.
'FROM cel'.$this->suffix.'_mots_cles '.
'WHERE '.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs).
'WHERE '.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'id_observation' : 'id_image').' = '.Cel::db()->proteger($id_image_ou_obs).
')';
 
$resultats = $this->requeter($requete);
$resultats = Cel::db()->requeter($requete);
return $resultats;
}
 
153,14 → 153,14
}
 
private function mettreAJourMotsClesConcatenes($mots_cles, $id) {
$mots_cles = $this->proteger($mots_cles);
$utilisateur_id = $this->proteger($this->utilisateur_id);
$mots_cles = Cel::db()->proteger($mots_cles);
$utilisateur_id = Cel::db()->proteger($this->utilisateur_id);
 
$requete = 'UPDATE cel'.$this->suffix." ".
"SET mots_cles_texte = $mots_cles ".
"WHERE id_".(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'observation' : 'image')." = $id ";
 
$ok = $this->executer($requete) ? true : false;
$ok = Cel::db()->executer($requete) ? true : false;
return $ok;
}
 
199,14 → 199,14
$bd = $bg + 1;
$mot_cle_encode = $this->encoderMotCle($mot_cle);
 
$mot_cle_protege = $this->proteger($mot_cle);
$bg = $this->proteger($bg);
$bd = $this->proteger($bd);
$mot_cle_encode = $this->proteger($mot_cle_encode);
$mot_cle_id = $this->proteger($mot_cle_id);
$id_utilisateur = $this->proteger($this->utilisateur_id);
$mot_cle_parent_id_protege = $this->proteger($mot_cle_parent_id);
$niveau = $this->proteger($niveau);
$mot_cle_protege = Cel::db()->proteger($mot_cle);
$bg = Cel::db()->proteger($bg);
$bd = Cel::db()->proteger($bd);
$mot_cle_encode = Cel::db()->proteger($mot_cle_encode);
$mot_cle_id = Cel::db()->proteger($mot_cle_id);
$id_utilisateur = Cel::db()->proteger($this->utilisateur_id);
$mot_cle_parent_id_protege = Cel::db()->proteger($mot_cle_parent_id);
$niveau = Cel::db()->proteger($niveau);
 
$transaction_reussie_1 = $this->decalerBornesPlusDeux($borne_pere) ? true : false;
 
267,10 → 267,10
$id_racine = $this->suffix;
}
 
$md5_racine = $this->proteger($this->encoderMotCle($nom_racine));
$nom_racine = $this->proteger($nom_racine);
$id_racine = $this->proteger($id_racine);
$id_utilisateur = $this->proteger($this->utilisateur_id);
$md5_racine = Cel::db()->proteger($this->encoderMotCle($nom_racine));
$nom_racine = Cel::db()->proteger($nom_racine);
$id_racine = Cel::db()->proteger($id_racine);
$id_utilisateur = Cel::db()->proteger($this->utilisateur_id);
 
$requete = "INSERT INTO cel_mots_cles{$this->suffix} ".
"VALUES ($id_racine, $id_utilisateur, $nom_racine, $md5_racine,".
285,9 → 285,9
 
private function verifierAbsence($mot_cle, $mot_cle_parent_id) {
$absence = false;
$mot_cle = $this->proteger($mot_cle);
$mot_cle_parent_id = $this->proteger($mot_cle_parent_id);
$id_utilisateur = $this->proteger($this->utilisateur_id);
$mot_cle = Cel::db()->proteger($mot_cle);
$mot_cle_parent_id = Cel::db()->proteger($mot_cle_parent_id);
$id_utilisateur = Cel::db()->proteger($this->utilisateur_id);
$requete = 'SELECT COUNT(*) AS nbre '.
"FROM cel_mots_cles{$this->suffix} ".
"WHERE mot_cle = $mot_cle ".
305,9 → 305,9
}
 
private function getIdMotCle($mot_cle, $mot_cle_parent_id) {
$mot_cle = $this->proteger($mot_cle);
$mot_cle_parent_id = $this->proteger($mot_cle_parent_id);
$id_utilisateur = $this->proteger($this->utilisateur_id);
$mot_cle = Cel::db()->proteger($mot_cle);
$mot_cle_parent_id = Cel::db()->proteger($mot_cle_parent_id);
$id_utilisateur = Cel::db()->proteger($this->utilisateur_id);
$requete = 'SELECT id_mot_cle_'.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'obs' : 'image').' AS id '.
"FROM cel_mots_cles{$this->suffix} ".
"WHERE mot_cle = $mot_cle ".
320,7 → 320,7
 
private function compterMotsCles() {
$nbre = 0;
$id_utilisateur = $this->proteger($this->utilisateur_id);
$id_utilisateur = Cel::db()->proteger($this->utilisateur_id);
$requete = 'SELECT COUNT(*) AS nbre '.
"FROM cel_mots_cles{$this->suffix} ".
"WHERE id_utilisateur = $id_utilisateur ";
380,8 → 380,8
* Renvoie les bornes d'un noeud de l'arbre des mots clés
*/
private function retrouverBornesEtNiveau($mot_cle_id) {
$mot_cle_id = $this->proteger($mot_cle_id);
$id_utilisateur = $this->proteger($this->utilisateur_id);
$mot_cle_id = Cel::db()->proteger($mot_cle_id);
$id_utilisateur = Cel::db()->proteger($this->utilisateur_id);
$requete = 'SELECT bd, bg, niveau '.
"FROM cel_mots_cles{$this->suffix} ".
"WHERE id_mot_cle_".(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'obs' : 'image')." = $mot_cle_id ".
396,8 → 396,8
*/
private function decalerBornesPlusDeux($valeur) {
// Décalage borne droite
$valeur = $this->proteger($valeur);
$id_utilisateur = $this->proteger($this->utilisateur_id);
$valeur = Cel::db()->proteger($valeur);
$id_utilisateur = Cel::db()->proteger($this->utilisateur_id);
$requete = "UPDATE cel_mots_cles{$this->suffix} ".
'SET bd = bd + 2 '.
"WHERE bd >= $valeur ".
427,8 → 427,8
*/
private function decalerBornesMoinsIntervalle($bg, $bd) {
$decalage = $bd - $bg + 1;
$bg = $this->proteger($bg);
$id_utilisateur = $this->proteger($this->utilisateur_id);
$bg = Cel::db()->proteger($bg);
$id_utilisateur = Cel::db()->proteger($this->utilisateur_id);
 
// Décalage borne droite
$requete = "UPDATE cel_mots_cles{$this->suffix} ".
451,9 → 451,9
* Décale à droite des bornes donées d'un intervalle positif donné (pour l'ajout d'un sous arbre).
*/
private function decalerBornesPlusIntervalle($valeur_bornes, $largeur) {
$valeur_bornes = $this->proteger($valeur_bornes);
$largeur = $this->proteger($largeur);
$id_utilisateur = $this->proteger($this->utilisateur_id);
$valeur_bornes = Cel::db()->proteger($valeur_bornes);
$largeur = Cel::db()->proteger($largeur);
$id_utilisateur = Cel::db()->proteger($this->utilisateur_id);
 
// Décalage borne droite
$requete = "UPDATE cel_mots_cles{$this->suffix} ".
476,9 → 476,9
* Inverse les bornes d'un intervalle pour l'exclure des modifications sur l'arbre sans changer la hiérarchie.
*/
private function exclureIntervalle($bg, $bd) {
$bg = $this->proteger($bg);
$bd = $this->proteger($bd);
$id_utilisateur = $this->proteger($this->utilisateur_id);
$bg = Cel::db()->proteger($bg);
$bd = Cel::db()->proteger($bd);
$id_utilisateur = Cel::db()->proteger($this->utilisateur_id);
$requete = "UPDATE cel_mots_cles{$this->suffix} ".
"SET bd = bd - $bd - 1 , ".
" bg = bg - $bd - 1 ".
493,11 → 493,11
* Décalage borne droite
*/
private function inclureIntervalle($bg, $bd, $largeur, $modif_niveau) {
$bg = $this->proteger($bg);
$bd = $this->proteger($bd);
$largeur = $this->proteger($largeur);
$modif_niveau = $this->proteger($modif_niveau);
$id_utilisateur = $this->proteger($this->utilisateur_id);
$bg = Cel::db()->proteger($bg);
$bd = Cel::db()->proteger($bd);
$largeur = Cel::db()->proteger($largeur);
$modif_niveau = Cel::db()->proteger($modif_niveau);
$id_utilisateur = Cel::db()->proteger($this->utilisateur_id);
$requete = "UPDATE cel_mots_cles{$this->suffix} ".
"SET bg = bg + $largeur , ".
" bd = bd + $largeur, ".
510,9 → 510,9
}
 
private function changerPere($mot_cle_id, $id_pere) {
$mot_cle_id = $this->proteger($mot_cle_id);
$id_pere = $this->proteger($id_pere);
$id_utilisateur = $this->proteger($this->utilisateur_id);
$mot_cle_id = Cel::db()->proteger($mot_cle_id);
$id_pere = Cel::db()->proteger($id_pere);
$id_utilisateur = Cel::db()->proteger($this->utilisateur_id);
$requete = "UPDATE cel_mots_cles{$this->suffix} ".
"SET ce_mot_cle_".(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'obs' : 'image')."_parent = $id_pere ".
"WHERE id_mot_cle_".(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'obs' : 'image')." = $mot_cle_id ".
522,28 → 522,28
}
 
private function executerSQL($requete) {
$execution = $this->executer($requete);
$execution = Cel::db()->executer($requete);
$execution = ($execution === false) ? false : true;
return $execution;
}
 
private function recupererValeur($requete) {
$resultat = $this->requeter($requete, Cel::SQL_RETOUR_COLONNE);
$resultat = Cel::db()->requeter($requete, Cel::SQL_RETOUR_COLONNE);
return $resultat;
}
 
private function recupererResultat($requete) {
$resultat = $this->requeter($requete, Cel::SQL_RETOUR_LIGNE, Cel::SQL_MODE_ASSOC);
$resultat = Cel::db()->requeter($requete, Cel::SQL_RETOUR_LIGNE, Cel::SQL_MODE_ASSOC);
return $resultat;
}
 
private function recupererResultats($requete) {
$resultat = $this->requeter($requete, Cel::SQL_RETOUR_COMPLET, Cel::SQL_MODE_ASSOC);
$resultat = Cel::db()->requeter($requete, Cel::SQL_RETOUR_COMPLET, Cel::SQL_MODE_ASSOC);
return $resultat;
}
 
private function verifierLignesAffectees($requete) {
$execution = $this->executer($requete);
$execution = Cel::db()->executer($requete);
return $execution;
}
}
/trunk/jrest/services/InventoryImportExcel.php
135,8 → 135,8
$cpt_img=0;
 
/* Recherche dernier numero d'ordre utilise : pas de mise a jour concurente a priori */
$requete = "SELECT MAX(ordre) AS ordre FROM cel_obs WHERE ce_utilisateur = ".$this->proteger($pairs['utilisateur'])." ";
$resultat = $this->requeter($requete);
$requete = "SELECT MAX(ordre) AS ordre FROM cel_obs WHERE ce_utilisateur = ".Cel::db()->proteger($pairs['utilisateur'])." ";
$resultat = Cel::db()->requeter($requete);
 
if(is_array($resultat) && count($resultat) > 0) {
$this->dernier_ordre = $resultat[0]['ordre']; // 1 par defaut
341,33 → 341,33
"date_observation,".
"lieudit,station, milieu, commentaire, transmission, ".
"date_creation,date_modification,latitude,longitude) ".
" VALUES(".$this->proteger($utilisateur).",".
$this->proteger($this->utilisateur['prenom']).",".
$this->proteger($this->utilisateur['nom']).",".
$this->proteger($this->utilisateur['courriel']).",".
$this->proteger($this->dernier_ordre).",".
$this->proteger($info_espece['nom_sel']).",".
$this->proteger($info_espece['nom_sel_nn']).",".
$this->proteger($info_espece['nom_ret']).",".
$this->proteger($info_espece['nom_ret_nn']).",".
$this->proteger($info_espece['nt']).",".
$this->proteger($info_espece['famille']).",".
$this->proteger($info_commune['nom']).",".
$this->proteger('INSEE-C:'.$info_commune['code']).",".
$this->proteger($info_dateobs).",".
$this->proteger($info_lieudit).",".
$this->proteger($info_station).",".
$this->proteger($info_milieu).",".
$this->proteger($info_notes).",".
$this->proteger($info_transmettre).",".
" VALUES(".Cel::db()->proteger($utilisateur).",".
Cel::db()->proteger($this->utilisateur['prenom']).",".
Cel::db()->proteger($this->utilisateur['nom']).",".
Cel::db()->proteger($this->utilisateur['courriel']).",".
Cel::db()->proteger($this->dernier_ordre).",".
Cel::db()->proteger($info_espece['nom_sel']).",".
Cel::db()->proteger($info_espece['nom_sel_nn']).",".
Cel::db()->proteger($info_espece['nom_ret']).",".
Cel::db()->proteger($info_espece['nom_ret_nn']).",".
Cel::db()->proteger($info_espece['nt']).",".
Cel::db()->proteger($info_espece['famille']).",".
Cel::db()->proteger($info_commune['nom']).",".
Cel::db()->proteger('INSEE-C:'.$info_commune['code']).",".
Cel::db()->proteger($info_dateobs).",".
Cel::db()->proteger($info_lieudit).",".
Cel::db()->proteger($info_station).",".
Cel::db()->proteger($info_milieu).",".
Cel::db()->proteger($info_notes).",".
Cel::db()->proteger($info_transmettre).",".
"now() , now(),".
$this->proteger($info_latitude).",".
$this->proteger($info_longitude).")";
Cel::db()->proteger($info_latitude).",".
Cel::db()->proteger($info_longitude).")";
$insertion = $this->executer($requete);
$insertion = Cel::db()->executer($requete);
$requete_id_obs = 'SELECT id_observation FROM cel_obs WHERE ordre = '.$this->proteger($this->dernier_ordre).' AND ce_utilisateur = '.$this->proteger($utilisateur);
$resultat_id_obs = $this->requeter($requete_id_obs);
$requete_id_obs = 'SELECT id_observation FROM cel_obs WHERE ordre = '.Cel::db()->proteger($this->dernier_ordre).' AND ce_utilisateur = '.Cel::db()->proteger($utilisateur);
$resultat_id_obs = Cel::db()->requeter($requete_id_obs);
$id_obs = $resultat_id_obs[0]['id_observation'];
374,8 → 374,8
// creation lien image
foreach ($info_image as $pic) {
$requete_liaison = 'INSERT INTO cel_obs_images (id_image, id_observation ) VALUES ('.$this->proteger($pic['id_image']).', '.$id_obs.') ON DUPLICATE KEY UPDATE id_image = id_image ';
$liaison = $this->executer($requete_liaison);
$requete_liaison = 'INSERT INTO cel_obs_images (id_image, id_observation ) VALUES ('.Cel::db()->proteger($pic['id_image']).', '.$id_obs.') ON DUPLICATE KEY UPDATE id_image = id_image ';
$liaison = Cel::db()->executer($requete_liaison);
if ($liaison !== false) {
$this->cpt_images_liees++;
} else {
391,8 → 391,8
$info_image=$this->traiterImage($line[IMAGE][$i],$utilisateur); // Image separee par des / + utilisateur
// creation lien image
foreach ($info_image as $pic) {
$requete = 'INSERT INTO cel_obs_images (id_image, id_observation) VALUES ('.$this->proteger($pic['id_image']).', '.$this->proteger($id_obs).') ON DUPLICATE KEY UPDATE id_image = id_image' ;
$resultat_liaison = $this->executer($requete);
$requete = 'INSERT INTO cel_obs_images (id_image, id_observation) VALUES ('.Cel::db()->proteger($pic['id_image']).', '.Cel::db()->proteger($id_obs).') ON DUPLICATE KEY UPDATE id_image = id_image' ;
$resultat_liaison = Cel::db()->executer($requete);
if ($resultat_liaison !== false) {
$this->cpt_images_liees++;
} else {
411,13 → 411,13
if (isset($elements[1])) { // commune + departement : montpellier (34)
$nom_commune=$elements[1];
$code_commune=$elements[2];
$requete="SELECT DISTINCT nom, code FROM cel_zones_geo WHERE nom = ".$this->proteger($nom_commune)." AND code LIKE ".$this->proteger($code_commune.'%');
$requete="SELECT DISTINCT nom, code FROM cel_zones_geo WHERE nom = ".Cel::db()->proteger($nom_commune)." AND code LIKE ".Cel::db()->proteger($code_commune.'%');
}
else { // Code insee seul
preg_match('/([0-9][0-9]*)|(2A[0-9][0-9]*)|(2B[0-9][0-9]*)/',$identifiant_commune,$elements);
if (isset($elements[1])) { // code insee commune
$code_insee_commune=$elements[1];
$requete="SELECT DISTINCT nom, code FROM cel_zones_geo WHERE code = ".$this->proteger($code_insee_commune);
$requete="SELECT DISTINCT nom, code FROM cel_zones_geo WHERE code = ".Cel::db()->proteger($code_insee_commune);
}
else { // Commune seule (le departement sera recupere dans la colonne departement si elle est presente, on prend le risque ici de retourner une mauvaise
// Commune
427,12 → 427,12
$nom_commune=trim($nom_commune);
$nom_commune=iconv('UTF-8', 'ASCII//TRANSLIT', $nom_commune);
$nom_commune=preg_replace("/ /","%",$nom_commune);
$requete="SELECT DISTINCT nom, code FROM cel_zones_geo WHERE nom like ".$this->proteger($nom_commune.'%');
$requete="SELECT DISTINCT nom, code FROM cel_zones_geo WHERE nom like ".Cel::db()->proteger($nom_commune.'%');
}
}
}
$resultat_commune = $this->requeter($requete);
$resultat_commune = Cel::db()->requeter($requete);
// cas de la commune introuvable dans le référentiel
if(!is_array($resultat_commune) || count($resultat_commune) == 0) {
510,8 → 510,8
$row =array();
foreach($liste_images as $image) {
$image = iconv('UTF-8', 'ASCII//TRANSLIT', $image);
$requete = "SELECT * FROM cel_images WHERE ce_utilisateur = ".$this->proteger($utilisateur)." AND nom_original= ".$this->proteger($image);
$ligne = $this->requeter($requete);
$requete = "SELECT * FROM cel_images WHERE ce_utilisateur = ".Cel::db()->proteger($utilisateur)." AND nom_original= ".Cel::db()->proteger($image);
$ligne = Cel::db()->requeter($requete);
if(is_array($ligne) && !empty($ligne)) {
$row[] = $ligne[0];
}
/trunk/jrest/services/CelSyndicationImage.php
205,12 → 205,12
protected function executerRequete($requete, $retour = 'All', $mode = PDO::FETCH_ASSOC) {
$infos = null;
try {
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
$infos = Cel::db()->query($requete)->fetchAll(PDO::FETCH_ASSOC);
if ($infos === false) {
$this->messages[] = "La requête suivante a retourné aucun résultat :\n$requete";
}
} catch (PDOException $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
$this->messages[] = sprintf(Cel::db()->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
}
return $infos;
}
262,7 → 262,7
$item['guid'] = $this->creerGuidItem($info);
$item['lien'] = $this->creerLienItem($info);
$item['categorie'] = $this->creerCategorie($item);
$item['description'] = $this->creerDescription($this->protegerCaracteresHtmlDansChamps($info), $item);
$item['description'] = $this->creerDescription(Cel::db()->protegerCaracteresHtmlDansChamps($info), $item);
$item['description_encodee'] = htmlspecialchars($this->creerDescription($info, $item));
$item['modifier_par'] = $this->getIntituleAuteur($info['courriel_utilisateur']);
return $item;
484,12 → 484,12
$nom_valeur = explode("=",$pair);
if (sizeof($nom_valeur) != 0) {
switch ($nom_valeur[0]) {
case "ci_limite" : $this->limit = $this->bdd->quote($nom_valeur[1]); break;
case "c.ci_numero_page" : $this->limit*$this->bdd->quote($nom_valeur[1]); break;
case "ci_limite" : $this->limit = Cel::db()->quote($nom_valeur[1]); break;
case "c.ci_numero_page" : $this->limit*Cel::db()->quote($nom_valeur[1]); break;
case "c.commentaire" : $mots_comment_liste = explode(" " , $nom_valeur[1]);
foreach($mots_comment_liste as $mot_comment) {
$mot_comment = trim($mot_comment) ;
$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote('%'.$mot_comment.'%').' AND ';
$requete .= $nom_valeur[0].' LIKE '.Cel::db()->quote('%'.$mot_comment.'%').' AND ';
}
break;
case "c.date_prise_de_vue" :
497,7 → 497,7
if (preg_match('/(^[0-9]{2})-([0-9]{2})-([0-9]{4}$)/', $nom_valeur[1], $matches)) {
$nom_valeur[1] = $matches[3].'-'.$matches[2].'-'.$matches[1];
}
$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote($nom_valeur[1]."%").' AND '; break;
$requete .= $nom_valeur[0].' LIKE '.Cel::db()->quote($nom_valeur[1]."%").' AND '; break;
case "b.ce_zone_geo" :
$requete .= ' ('.$nom_valeur[0].' LIKE "%INSEE-C:'.$nom_valeur[1].'%") AND '; break;
case "b.nom_ret" :
519,17 → 519,17
if (preg_match('/.*OU.*/', $mot_cle)) {
$mots_cles_tab = explode('OU',$mot_cle);
foreach($mots_cles_tab as $mot_cle_item) {
$requete .= '(c.mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') OR ';
$requete .= '(c.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') OR ';
}
$requete = '('.rtrim($requete,'OR ').')';
} else if (preg_match('/.*ET.*/', $mot_cle)) {
$mots_cles_tab = explode('ET',$mot_cle);
foreach($mots_cles_tab as $mot_cle_item) {
$requete .= '(c.mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') AND ';
$requete .= '(c.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') AND ';
}
$requete = '('.rtrim($requete, 'AND ').') ';
} else {
$requete = "(c.mots_cles_texte LIKE ".$this->proteger('%'.$mot_cle.'%').') ';
$requete = "(c.mots_cles_texte LIKE ".Cel::db()->proteger('%'.$mot_cle.'%').') ';
}
return $requete;
}
539,17 → 539,17
if (preg_match('/.*OU.*/', $mot_cle)) {
$mots_cles_tab = explode('OU',$mot_cle);
foreach($mots_cles_tab as $mot_cle_item) {
$requete .= '(b.mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') OR ';
$requete .= '(b.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') OR ';
}
$requete = '('.rtrim($requete,'OR ').')';
} else if (preg_match('/.*ET.*/', $mot_cle)) {
$mots_cles_tab = explode('ET',$mot_cle);
foreach($mots_cles_tab as $mot_cle_item) {
$requete .= '(b.mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') AND ';
$requete .= '(b.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') AND ';
}
$requete = '('.rtrim($requete, 'AND ').') ';
} else {
$requete = "(b.mots_cles_texte LIKE ".$this->proteger('%'.$mot_cle.'%').') ';
$requete = "(b.mots_cles_texte LIKE ".Cel::db()->proteger('%'.$mot_cle.'%').') ';
}
return $requete;
}
/trunk/jrest/services/ImageDateList.php
45,7 → 45,7
'FROM cel_images WHERE '.$condition_requete.' '.
'ORDER BY date_prise_de_vue';
$liste_dates = $this->executerRequete($requete_liste_dates);
$liste_dates = Cel::db()->executerRequete($requete_liste_dates);
$liste_dates = $this->formaterListeResultats($liste_dates);
78,13 → 78,13
private function traiterParametresEtConstruireRequete($params) {
$requete_condition = ' ce_utilisateur = '.$this->proteger($params[0]);
$requete_condition = ' ce_utilisateur = '.Cel::db()->proteger($params[0]);
$taille_tableau_parametres = count($params);
for($i=1; $i < $taille_tableau_parametres; $i++) {
if($this->estUnParametreDate($params[$i])) {
$fonction_date = $this->correspondance_fonction[$i];
$requete_condition .= ' AND '.$fonction_date.'(date_prise_de_vue) = '.$this->proteger($params[$i]);
$requete_condition .= ' AND '.$fonction_date.'(date_prise_de_vue) = '.Cel::db()->proteger($params[$i]);
}
}
/trunk/jrest/services/InventoryTransmit.php
33,10 → 33,10
$requete_transmission = 'UPDATE cel_obs '.
'SET transmission = '.$pairs['transmission'].','.
'date_modification = now(), date_transmission = now() '.
'WHERE ce_utilisateur = '.$this->proteger($uid[0]).' AND ordre in ('.$uid[1].')';
'WHERE ce_utilisateur = '.Cel::db()->proteger($uid[0]).' AND ordre in ('.$uid[1].')';
}
 
$resultat_transmission = $this->executer($requete_transmission);
$resultat_transmission = Cel::db()->executer($requete_transmission);
if ($resultat_transmission === false) {
return false;
/trunk/jrest/services/ImageContribution.php
29,10 → 29,10
function getElement($uid){
 
$requete_obs_liee_images = 'SELECT * FROM cel_obs'.
' WHERE ce_utilisateur = '.$this->proteger($uid[1]).
' WHERE ce_utilisateur = '.Cel::db()->proteger($uid[1]).
' AND id_observation IN (SELECT id_observation
FROM cel_obs_images
WHERE id_utilisateur = '.$this->proteger($uid[1]).' )'.
WHERE id_utilisateur = '.Cel::db()->proteger($uid[1]).' )'.
' AND transmission = 0'.
' ORDER BY date_modification DESC LIMIT 0,5';
 
40,7 → 40,7
$obs_liees_images = array();
$resultat_obs_liees_images = $this->requeter($requete_obs_liee_images);
$resultat_obs_liees_images = Cel::db()->requeter($requete_obs_liee_images);
if(is_array($resultat_obs_liees_images)) {
$obs_liees_images = $resultat_obs_liees_images;
55,7 → 55,7
'WHERE id_observation = "'.$obs['id_observation'].'") '.
'AND ce_utilisateur = "'.$obs['ce_utilisateur'].'"' ;
 
$resultat_requete_img_liees = $this->requeter($requete_img_liees);
$resultat_requete_img_liees = Cel::db()->requeter($requete_img_liees);
 
if (is_array($resultat_requete_img_liees) && count($resultat_requete_img_liees) > 0) {
/trunk/jrest/services/InventoryLocationList.php
28,10 → 28,10
$retour = array();
 
$requete_zones_geo = 'SELECT DISTINCT ce_zone_geo, zone_geo, lieudit, station FROM cel_obs '.
'WHERE ce_utilisateur = '.$this->proteger($uid[0]).' '.
'WHERE ce_utilisateur = '.Cel::db()->proteger($uid[0]).' '.
'ORDER BY ce_zone_geo ASC, zone_geo ASC, lieudit ASC, station ASC';
 
$resultat_zones_geo = $this->requeter($requete_zones_geo);
$resultat_zones_geo = Cel::db()->requeter($requete_zones_geo);
 
if (is_array($resultat_zones_geo)) {
$retour = $resultat_zones_geo;
/trunk/jrest/services/SelfRefList.php
46,7 → 46,7
$requete_referentiel .= " ORDER BY '.$referentiel_demande.' LIMIT ".$_GET["start"].",".$_GET["limit"];
}
$referentiel_resultat = $this->executerRequete($requete_referentiel);
$referentiel_resultat = Cel::db()->executerRequete($requete_referentiel);
$referentiel = array();
foreach($referentiel_resultat as $cle => $valeur) {
/trunk/jrest/services/InventoryDateList.php
41,7 → 41,7
'FROM cel_obs WHERE '.$condition_requete.' '.
'ORDER BY date_observation';
$liste_dates = $this->executerRequete($requete_liste_dates);
$liste_dates = Cel::db()->executerRequete($requete_liste_dates);
$liste_dates = $this->formaterListeResultats($liste_dates);
69,13 → 69,13
private function traiterParametresEtConstruireRequete($params) {
$requete_condition = ' ce_utilisateur = '.$this->proteger($params[0]);
$requete_condition = ' ce_utilisateur = '.Cel::db()->proteger($params[0]);
$taille_tableau_parametres = count($params);
for($i=1; $i < $taille_tableau_parametres; $i++) {
if($this->estUnParametreDate($params[$i])) {
$fonction_date = $this->correspondance_fonction[$i];
$requete_condition .= ' AND '.$fonction_date.'(date_observation) = '.$this->proteger($params[$i]);
$requete_condition .= ' AND '.$fonction_date.'(date_observation) = '.Cel::db()->proteger($params[$i]);
}
}
/trunk/jrest/services/InventoryPDF.php
64,7 → 64,7
$requete_location="";
}
else {
$requete_location=" AND location= ".$this->proteger($uid[1])." ";
$requete_location=" AND location= ".Cel::db()->proteger($uid[1])." ";
}
if (!isset($uid[2]) || $uid[2]=="" || $uid[2]=="all") {
72,7 → 72,7
$requete_date="";
}
else {
$requete_date=" AND date_observation= ".$this->proteger($uid[2])." ";
$requete_date=" AND date_observation= ".Cel::db()->proteger($uid[2])." ";
}
if (!isset($uid[3]) || $uid[3]=="" || $uid[3]=="all") {
80,10 → 80,10
$requete_libre="";
}
else {
$requete_libre=" AND (nom_sel LIKE ".$this->proteger('%'.$uid[3].'%').
" OR nom_ret LIKE ".$this->proteger('%'.$uid[3].'%').
" OR station LIKE ".$this->proteger('%'.$uid[3].'%').
" OR commentaire LIKE ".$this->proteger('%'.$uid[3].'%');
$requete_libre=" AND (nom_sel LIKE ".Cel::db()->proteger('%'.$uid[3].'%').
" OR nom_ret LIKE ".Cel::db()->proteger('%'.$uid[3].'%').
" OR station LIKE ".Cel::db()->proteger('%'.$uid[3].'%').
" OR commentaire LIKE ".Cel::db()->proteger('%'.$uid[3].'%');
}
 
if (!isset($uid[4]) || $uid[4]=="" || $uid[4]=="all") {
91,13 → 91,13
$requete_station="";
}
else {
$requete_station=" AND station= ".$this->proteger($uid[4])." ";
$requete_station=" AND station= ".Cel::db()->proteger($uid[4])." ";
}
$value=array();
$requete="SELECT ce_utilisateur, ordre, nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, zone_geo, date_observation," .
" station, commentaire, transmission FROM cel_obs WHERE ce_utilisateur = ".$this->proteger($uid[0])." " .
" station, commentaire, transmission FROM cel_obs WHERE ce_utilisateur = ".Cel::db()->proteger($uid[0])." " .
$requete_location.
$requete_date.
$requete_libre.
104,7 → 104,7
$requete_station.
" ORDER BY ordre ";
$resultat_requete = $this->requeter($requete);
$resultat_requete = Cel::db()->requeter($requete);
$observations = array();;
if(is_array($resultat_requete)) {
/trunk/jrest/services/InventoryContributionList.php
30,10 → 30,10
}
 
$requete_contributions = "SELECT * FROM cel_obs ".
"WHERE ce_utilisateur = ".$this->proteger($uid[0])." ".
"WHERE ce_utilisateur = ".Cel::db()->proteger($uid[0])." ".
"ORDER BY date_modification DESC LIMIT 0,5";
 
$resultat_contributions = $this->requeter($requete_contributions);
$resultat_contributions = Cel::db()->requeter($requete_contributions);
$resume = '';
 
/trunk/jrest/services/LicenceUtilisateur.php
34,10 → 34,10
}
$requete_acceptation_licence = 'UPDATE cel_utilisateurs_infos '.
'SET licence_acceptee = '.$this->proteger($pairs['licence']).
'WHERE id_utilisateur = '.$this->proteger($uid[0]);
'SET licence_acceptee = '.Cel::db()->proteger($pairs['licence']).
'WHERE id_utilisateur = '.Cel::db()->proteger($uid[0]);
$resultat_acceptation_licence = $this->executer($requete_acceptation_licence);
$resultat_acceptation_licence = Cel::db()->executer($requete_acceptation_licence);
$resultat = false;
if($resultat_acceptation_licence) {
/trunk/jrest/services/ImportXLS.php
72,7 → 72,7
function __anonyme_6() { return NULL; }
 
class ImportXLS extends Cel {
static function __anonyme_4(&$item, $key, $obj) { $item = $obj->quoteNonNull(trim($item)); }
static function __anonyme_4(&$item, $key) { $item = self::quoteNonNull(trim($item)); }
 
static $ordre_BDD = Array(
"ce_utilisateur",
229,7 → 229,7
$nb_images_ajoutees = 0;
$nb_mots_cle_ajoutes = 0;
 
$dernier_ordre = $this->requeter("SELECT MAX(ordre) AS ordre FROM cel_obs WHERE ce_utilisateur = $id_utilisateur");
$dernier_ordre = Cel::db()->requeter("SELECT MAX(ordre) AS ordre FROM cel_obs WHERE ce_utilisateur = $id_utilisateur");
$dernier_ordre = intval($dernier_ordre[0]['ordre']) + 1;
if(! $dernier_ordre) $dernier_ordre = 0;
 
270,8 → 270,8
str_repeat(self::$insert_ligne_pattern . ', ', $nb_rec - 1) .
self::$insert_ligne_pattern;
 
$this->bdd->beginTransaction();
$stmt = $this->bdd->prepare($sql_pattern);
Cel::db()->beginTransaction();
$stmt = Cel::db()->prepare($sql_pattern);
$donnees = array();
foreach($enregistrements as $e) $donnees = array_merge($donnees, array_values($e));
 
280,8 → 280,8
$stmt->execute($donnees);
 
// $stmt->debugDumpParams(); // https://bugs.php.net/bug.php?id=52384
$dernier_autoinc = $this->bdd->lastInsertId();
$this->bdd->commit();
$dernier_autoinc = Cel::db()->lastInsertId();
Cel::db()->commit();
 
if(! $dernier_autoinc) trigger_error("l'insertion semble avoir échoué", E_USER_NOTICE);
 
288,8 → 288,8
$obs_ajouts += count($enregistrements);
// $obs_ajouts += count($enregistrements['insert']);
// $obs_maj += count($enregistrements['update']);
$nb_images_ajoutees += self::stockerImages($this, $enregistrements, $images, $dernier_autoinc);
$nb_mots_cle_ajoutes += self::stockerMotsCle($this, $enregistrements, $mots_cle, $dernier_autoinc);
$nb_images_ajoutees += self::stockerImages($enregistrements, $images, $dernier_autoinc);
$nb_mots_cle_ajoutes += self::stockerMotsCle($enregistrements, $mots_cle, $dernier_autoinc);
}
 
restore_error_handler();
405,7 → 405,7
}
 
 
static function stockerMotsCle($cel, $enregistrements, $tous_mots_cle, $lastid) {
static function stockerMotsCle($enregistrements, $tous_mots_cle, $lastid) {
$c = 0;
// debug: var_dump($tous_mots_cle);die;
foreach($tous_mots_cle as $v) $c += count($v['mots_cle']['to_insert']);
412,7 → 412,7
return $c;
}
 
static function stockerImages($cel, $enregistrements, $toutes_images, $lastid) {
static function stockerImages($enregistrements, $toutes_images, $lastid) {
$images_insert = 'INSERT INTO cel_obs_images (id_image, id_observation) VALUES %s ON DUPLICATE KEY UPDATE id_image = id_image';
$images_obs_assoc = Array();
 
431,7 → 431,7
if($images_obs_assoc) {
$requete = sprintf($images_insert, implode(', ', $images_obs_assoc));
// debug echo "$requete\n";
$cel->requeter($requete);
Cel::db()->requeter($requete);
}
 
return count($images_obs_assoc);
456,7 → 456,7
 
// $localisation est rempli à partir de plusieurs champs: C_ZONE_GEO et C_CE_ZONE_GEO
$localisation = Array(C_ZONE_GEO => NULL, C_CE_ZONE_GEO => NULL);
self::traiterLocalisation($ligne, $localisation, $cel);
self::traiterLocalisation($ligne, $localisation);
 
// $transmission est utilisé pour date_transmission
// XXX: @ contre "Undefined index"
510,40 → 510,40
// passage de $enregistrement par référence, ainsi ['_images'] n'est défini
// que si des résultats sont trouvés
// "@" car PHPExcel supprime les colonnes null sur toute la feuille (ou tout le chunk)
if(@$ligne[C_IMAGES]) self::traiterImage($ligne[C_IMAGES], $cel, $enregistrement);
if(@$ligne[C_IMAGES]) self::traiterImage($ligne[C_IMAGES], $cel->id_utilisateur, $enregistrement);
 
if(@$ligne[C_MOTS_CLES_TEXTE]) self::traiterMotsCle($ligne[C_MOTS_CLES_TEXTE], $cel, $enregistrement);
if(@$ligne[C_MOTS_CLES_TEXTE]) self::traiterMotsCle($ligne[C_MOTS_CLES_TEXTE], $cel->id_utilisateur, $enregistrement);
 
return $enregistrement;
}
 
static function traiterImage($str, $cel, &$enregistrement) {
static function traiterImage($str, $id_utilisateur, &$enregistrement) {
$liste_images = array_filter(explode("/", $str));
 
//array_walk($liste_images, '__anonyme_4', $cel);
array_walk($liste_images, array(__CLASS__, '__anonyme_4'), $cel);
//array_walk($liste_images, '__anonyme_4');
array_walk($liste_images, array(__CLASS__, '__anonyme_4'));
$requete = sprintf(
"SELECT id_image, nom_original FROM cel_images WHERE ce_utilisateur = %d AND nom_original IN (%s)",
$cel->id_utilisateur,
$id_utilisateur,
implode(',', $liste_images));
 
$resultat = $cel->requeter($requete);
$resultat = Cel::db()->requeter($requete);
 
if($resultat) $enregistrement['_images'] = $resultat;
}
 
static function traiterMotsCle($str, $cel, &$enregistrement) {
static function traiterMotsCle($str, $id_utilisateur, &$enregistrement) {
$liste_mots_cle = $liste_mots_cle_recherche = array_map("trim", array_unique(array_filter(explode(",", $str))));
array_walk($liste_mots_cle_recherche, array(__CLASS__, '__anonyme_4'), $cel);
array_walk($liste_mots_cle_recherche, array(__CLASS__, '__anonyme_4'));
 
// TODO!!!! remplace > (pour les tests uniquement) par un = et supprimer le group by mot_cle
$requete = sprintf("SELECT id_mot_cle_obs, mot_cle FROM cel_mots_cles_obs WHERE id_utilisateur > %d ".
"AND mot_cle IN (%s) ".
"GROUP BY mot_cle",
$cel->id_utilisateur,
$id_utilisateur,
implode(',', $liste_mots_cle_recherche));
 
$resultat_sql = $cel->requeter($requete);
$resultat_sql = Cel::db()->requeter($requete);
if(!$resultat_sql) return;
 
$resultat = array();
715,21 → 715,21
//var_dump("a", $espece);die;
}
 
static function detectFromNom($nom, $cel) {
$r = $cel->requeter(sprintf("SELECT num_nom, num_tax_sup FROM bdtfx_v1_01 WHERE (nom_sci LIKE '%s') ".
static function detectFromNom($nom) {
$r = Cel::db()->requeter(sprintf("SELECT num_nom, num_tax_sup FROM bdtfx_v1_01 WHERE (nom_sci LIKE '%s') ".
"ORDER BY nom_sci ASC LIMIT 0, 1",
$cel->proteger($nom)));
Cel::db()->proteger($nom)));
if($r) return $r;
 
$cel->requeter(sprintf("SELECT num_nom, num_tax_sup FROM bdtfx_v1_01 WHERE (nom_sci LIKE '%s' OR nom LIKE '%s') ".
Cel::db()->requeter(sprintf("SELECT num_nom, num_tax_sup FROM bdtfx_v1_01 WHERE (nom_sci LIKE '%s' OR nom LIKE '%s') ".
"ORDER BY nom_sci ASC LIMIT 0, 1",
$cel->proteger($nom),
$cel->proteger(str_replace(' ', '% ', $nom))));
Cel::db()->proteger($nom),
Cel::db()->proteger(str_replace(' ', '% ', $nom))));
return $r;
}
 
 
static function traiterLocalisation($ligne, Array &$localisation, $cel) {
static function traiterLocalisation($ligne, Array &$localisation) {
$identifiant_commune = trim($ligne[C_ZONE_GEO]);
if(!$identifiant_commune) {
$departement = trim($ligne[C_CE_ZONE_GEO]);
763,21 → 763,21
$nom_commune=$elements[1];
$code_commune=$elements[2];
$requete = sprintf("%s WHERE nom = %s AND code LIKE %s",
$select, $cel->quoteNonNull($nom_commune), $cel->quoteNonNull($code_commune.'%'));
$select, self::quoteNonNull($nom_commune), self::quoteNonNull($code_commune.'%'));
}
elseif (preg_match('/^(\d+|(2[ab]\d+))$/i', $identifiant_commune, $elements)) {
// Code insee seul
$code_insee_commune=$elements[1];
$requete = sprintf("%s WHERE code = %s", $select, $cel->quoteNonNull($code_insee_commune));
$requete = sprintf("%s WHERE code = %s", $select, self::quoteNonNull($code_insee_commune));
}
else {
// Commune seule (le departement sera recupere dans la colonne departement si elle est presente)
// on prend le risque ici de retourner une mauvaise Commune
$nom_commune = str_replace(" ", "%", iconv('UTF-8', 'ASCII//TRANSLIT', $identifiant_commune));
$requete = sprintf("%s WHERE nom LIKE %s", $select, $cel->quoteNonNull($nom_commune.'%'));
$requete = sprintf("%s WHERE nom LIKE %s", $select, self::quoteNonNull($nom_commune.'%'));
}
$resultat_commune = $cel->requeter($requete);
$resultat_commune = Cel::db()->requeter($requete);
// TODO: levenstein sort ?
 
// cas de la commune introuvable dans le référentiel
814,7 → 814,7
}
 
/*
static function traiterLocalisation($ligne, Array &$localisation, $cel) {
static function traiterLocalisation($ligne, Array &$localisation) {
$identifiant_commune = trim($ligne[C_ZONE_GEO]);
if(!$identifiant_commune) {
$departement = trim($ligne[C_CE_ZONE_GEO]);
829,21 → 829,21
$nom_commune=$elements[1];
$code_commune=$elements[2];
$requete = sprintf("%s WHERE nom = %s AND code LIKE %s",
$select, $cel->quoteNonNull($nom_commune), $cel->quoteNonNull($code_commune.'%'));
$select, self::quoteNonNull($nom_commune), self::quoteNonNull($code_commune.'%'));
}
elseif (preg_match('/^(\d+|(2[ab]\d+))$/i', $identifiant_commune, $elements)) {
// Code insee seul
$code_insee_commune=$elements[1];
$requete = sprintf("%s WHERE code = %s", $select, $cel->quoteNonNull($code_insee_commune));
$requete = sprintf("%s WHERE code = %s", $select, self::quoteNonNull($code_insee_commune));
}
else {
// Commune seule (le departement sera recupere dans la colonne departement si elle est presente)
// on prend le risque ici de retourner une mauvaise Commune
$nom_commune = str_replace(" ", "%", iconv('UTF-8', 'ASCII//TRANSLIT', $identifiant_commune));
$requete = sprintf("%s WHERE nom LIKE %s", $select, $cel->quoteNonNull($nom_commune.'%'));
$requete = sprintf("%s WHERE nom LIKE %s", $select, self::quoteNonNull($nom_commune.'%'));
}
$resultat_commune = $cel->requeter($requete);
$resultat_commune = Cel::db()->requeter($requete);
// TODO: levenstein sort ?
 
// cas de la commune introuvable dans le référentiel
906,9 → 906,9
$this->colonnes_statiques = array_merge($this->colonnes_statiques,
Array(
"ce_utilisateur" => $this->id_utilisateur,
"prenom_utilisateur" => $this->quoteNonNull($this->utilisateur['prenom']),
"nom_utilisateur" => $this->quoteNonNull($this->utilisateur['nom']),
"courriel_utilisateur" => $this->quoteNonNull($this->utilisateur['courriel']),
"prenom_utilisateur" => self::quoteNonNull($this->utilisateur['prenom']),
"nom_utilisateur" => self::quoteNonNull($this->utilisateur['nom']),
"courriel_utilisateur" => self::quoteNonNull($this->utilisateur['courriel']),
));
 
}
949,12 → 949,12
);
}
 
// équivalent à CEL->Bdd->proteger() (qui wrap PDO::quote),
// équivalent à Bdd2->proteger() (qui wrap PDO::quote),
// sans transformer NULL en ""
private function quoteNonNull($chaine) {
static function quoteNonNull($chaine) {
if(is_null($chaine)) return "NULL";
if(!is_string($chaine)) die("erreur __FILE__, __LINE__");
return $this->bdd->quote($chaine);
return Cel::db()->quote($chaine);
}
 
public function erreurs_stock($errno, $errstr) {
/trunk/jrest/services/CelStatistiqueTxt.php
44,9 → 44,9
}
private function analyserParametresUrl() {
$this->parametres['utilisateur'] = isset($_GET['utilisateur']) ? $this->bdd->quote($this->verifierSecuriteParametreUrl($_GET['utilisateur'])) : null;
$this->parametres['num_taxon'] = isset($_GET['num_taxon']) ? $this->bdd->quote($this->verifierSecuriteParametreUrl($_GET['num_taxon'])) : null;
$this->parametres['taxon'] = isset($_GET['taxon']) ? $this->bdd->quote($this->verifierSecuriteParametreUrl($_GET['taxon'].'%')) : null;
$this->parametres['utilisateur'] = isset($_GET['utilisateur']) ? Cel::db()->quote($this->verifierSecuriteParametreUrl($_GET['utilisateur'])) : null;
$this->parametres['num_taxon'] = isset($_GET['num_taxon']) ? Cel::db()->quote($this->verifierSecuriteParametreUrl($_GET['num_taxon'])) : null;
$this->parametres['taxon'] = isset($_GET['taxon']) ? Cel::db()->quote($this->verifierSecuriteParametreUrl($_GET['taxon'].'%')) : null;
$this->parametres['tag'] = isset($_GET['tag']) ? $this->verifierSecuriteParametreUrl($_GET['tag']) : null;
$this->parametres['start'] = isset($_GET['start']) ? $this->verifierSecuriteParametreUrl($_GET['start']) : null;
$this->parametres['limit'] = isset($_GET['limit']) ? $this->verifierSecuriteParametreUrl($_GET['limit']) : null;
57,7 → 57,7
$requete = $this->construireRequeteListeUtilisateurNbrePhoto();
if ($requete != null) {
$resultats = $this->executerRequete($requete);
$resultats = Cel::db()->executerRequete($requete);
if ($resultats != false) {
foreach ($resultats as $resultat) {
$liste[$resultat['courriel_utilisateur']] = $resultat['nbre'];
122,13 → 122,13
$where = null;
if (isset($this->parametres['tag'])) {
$tag = $this->parametres['tag'];
$tag_encode = $this->bdd->quote($this->encoderMotCle(trim($tag)));
$tag_encode = Cel::db()->quote($this->encoderMotCle(trim($tag)));
 
// Construction de la requête
$requete = 'SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire '.
'FROM cel_mots_cles_images '.
"WHERE cmc_id_mot_cle_general = $tag_encode ";
$elements = $this->executerRequete($requete);
$elements = Cel::db()->executerRequete($requete);
if ($elements != false && count($elements) > 0) {
// Pré-construction du where de la requête
135,7 → 135,7
$tpl_where = '(ci_meta_mots_cles LIKE "%%%s%%" AND ci_ce_utilisateur = %s )';
$requete_where = array();
foreach ($elements as $occurence) {
$requete_where[] = sprintf($tpl_where, $occurence['cmc_id_mot_cle_utilisateur'], $this->bdd->quote($occurence['cmc_id_proprietaire']));
$requete_where[] = sprintf($tpl_where, $occurence['cmc_id_mot_cle_utilisateur'], Cel::db()->quote($occurence['cmc_id_proprietaire']));
}
$where = ' ('.implode(" \nOR ", $requete_where).') ';
} else {
148,7 → 148,7
private function getListeTaxonsNbrePhotos() {
$requete = $this->construireRequeteListeTaxonNbrePhoto();
 
$resultats = $this->executerRequete($requete);
$resultats = Cel::db()->executerRequete($requete);
$liste = array();
if ($resultats != false) {
foreach ($resultats as $resultat) {
202,24 → 202,24
private function getNombres() {
 
$requete = $this->construireRequeteNbreObs();
$info['observations'] = (int) $this->executerRequete($requete, 'Column');
$info['observations'] = (int) Cel::db()->executerRequete($requete, 'Column');
$requete = $this->construireRequeteNbreObsPubliques();
$info['observationsPubliques'] = (int) $this->executerRequete($requete, 'Column');
$info['observationsPubliques'] = (int) Cel::db()->executerRequete($requete, 'Column');
$requete = $this->construireRequeteNbreImg();
$info['images'] =(int) $this->executerRequete($requete, 'Column');
$info['images'] =(int) Cel::db()->executerRequete($requete, 'Column');
$requete = $this->construireRequeteNbreImgLiees();
$info['imagesLiees'] =(int) $this->executerRequete($requete, 'Column');
$info['imagesLiees'] =(int) Cel::db()->executerRequete($requete, 'Column');
$requete = $this->construireRequeteNbreObsLiees();
$info['observationsLiees'] = (int) $this->executerRequete($requete, 'Column');
$info['observationsLiees'] = (int) Cel::db()->executerRequete($requete, 'Column');
$info['moyImagesParObs'] = ($info['observationsLiees'] > 0 ? round($info['imagesLiees']/$info['observationsLiees'], 2) : '');
$requete = $this->construireRequeteNbreObsParCommune();
$info['communes'] = ($resultats = $this->executerRequete($requete)) ? count($resultats) : '' ;
$info['communes'] = ($resultats = Cel::db()->executerRequete($requete)) ? count($resultats) : '' ;
$info['observationsParCommunesMin'] = 1000;
$info['observationsParCommunesMax'] = 0;
$info['observationsParCommunesTotal'] = 0;
/trunk/jrest/services/CelWidgetMap.php
77,7 → 77,7
$this->construireWhereProjet().
$this->construireWhereTag();
//die($requete);
$resultats = $this->requeter($requete);
$resultats = Cel::db()->requeter($requete);
// Traitement des résultats
$obs_nbre = $this->traiterNbreObs($resultats);
152,10 → 152,10
'ORDER BY nom_sel ASC '.
"LIMIT {$this->start},{$this->limit} ";
//die($requete);
$resultats = $this->requeter($requete, self::SQL_RETOUR_COMPLET, self::SQL_MODE_OBJET);
$resultats = Cel::db()->requeter($requete, self::SQL_RETOUR_COMPLET, self::SQL_MODE_OBJET);
$requete = 'SELECT FOUND_ROWS()';
$total = (int) $this->requeter($requete, self::SQL_RETOUR_COLONNE);
$total = (int) Cel::db()->requeter($requete, self::SQL_RETOUR_COLONNE);
}
// Post-traitement
294,10 → 294,10
"LIMIT {$this->start},{$this->limit} ";
//$this->debug[] = $requete;
//die($requete);
$resultats = $this->requeter($requete, self::SQL_RETOUR_COMPLET, self::SQL_MODE_OBJET);
$resultats = Cel::db()->requeter($requete, self::SQL_RETOUR_COMPLET, self::SQL_MODE_OBJET);
$requete = 'SELECT FOUND_ROWS()';
$taxons['total'] = (int) $this->requeter($requete, self::SQL_RETOUR_COLONNE);
$taxons['total'] = (int) Cel::db()->requeter($requete, self::SQL_RETOUR_COLONNE);
// Post-traitement
$taxons['taxons'] = $this->traiterTaxons($resultats);
329,14 → 329,14
extract($this->decomposerParametreStation());
if (isset($type)) {
if ($type == 'UTM') {
$secteur = $this->proteger($secteur);
$utm_x = $this->proteger($utm_x);
$utm_y = $this->proteger($utm_y);
$secteur = Cel::db()->proteger($secteur);
$utm_x = Cel::db()->proteger($utm_x);
$utm_y = Cel::db()->proteger($utm_y);
$sql = " AND (utm_secteur = $secteur AND utm_x = $utm_x AND utm_y = $utm_y ) ";
} else if ($type == 'LngLat') {
$latitude = $this->proteger($latitude);
$longitude = $this->proteger($longitude);
$latitude = Cel::db()->proteger($latitude);
$longitude = Cel::db()->proteger($longitude);
$sql = " AND (latitude = $latitude AND longitude = $longitude ) ";
}
348,7 → 348,7
$sql = '';
list($type, $commentaire) = $this->decomposerParametreCommentaire();
if (!$this->etreNull($commentaire)) {
$commentaire = $this->proteger('%'.$commentaire.'%');
$commentaire = Cel::db()->proteger('%'.$commentaire.'%');
switch ($type) {
case '*' :
$sql = $this->obtenirConditionPourCommentaires($commentaire);
378,7 → 378,7
$sql = '';
list($type, $nom) = $this->decomposerParametreTaxon();
if (!$this->etreNull($nom)) {
$nom = $this->proteger($nom.'%');
$nom = Cel::db()->proteger($nom.'%');
switch ($type) {
case '*' :
$sql = " AND (nom_ret LIKE $nom OR nom_sel LIKE $nom OR famille LIKE $nom) ";
405,7 → 405,7
list($type, $date) = $this->decomposerParametreDate();
if (!$this->etreNull($date)) {
$date = $this->proteger($date.'%');
$date = Cel::db()->proteger($date.'%');
switch ($type) {
case '*' :
$sql = " AND (
532,7 → 532,7
'ORDER BY utilisateur ASC, ordre ASC';
//$this->debug[] = $requete;
//die($requete);
$resultats = $this->executerRequete($requete);
$resultats = Cel::db()->executerRequete($requete);
$observations = null;
if ($resultats != false) {
577,7 → 577,7
if (isset($dept) && !$this->etreNull($dept)) {
$valeurs_a_proteger = explode(',',trim($dept));
foreach ($valeurs_a_proteger as $valeur) {
$valeurs_protegees[] = '(ce_zone_geo LIKE '.$this->bdd->quote('INSEE-C:'.$valeur.'%').') ';
$valeurs_protegees[] = '(ce_zone_geo LIKE '.Cel::db()->quote('INSEE-C:'.$valeur.'%').') ';
}
$valeurs = implode(' OR ', $valeurs_protegees);
$sql = " AND ($valeurs) ";
590,7 → 590,7
// Récupération des coordonnées depuis l'id station
extract($this->parametres);
if (isset($commune) && !$this->etreNull($commune)) {
$commune = $this->proteger($commune);
$commune = Cel::db()->proteger($commune);
$sql = " AND zone_geo LIKE $commune ";
}
return $sql;
610,7 → 610,7
// Récupération des coordonnées depuis l'id station
extract($this->parametres);
if (isset($utilisateur) && !$this->etreNull($utilisateur)) {
$utilisateur = $this->proteger($utilisateur);
$utilisateur = Cel::db()->proteger($utilisateur);
$sql = " AND courriel_utilisateur = $utilisateur ";
}
return $sql;
621,7 → 621,7
// Récupération des coordonnées depuis l'id station
extract($this->parametres);
if (isset($num_taxon) && !$this->etreNull($num_taxon)) {
$num_taxon = $this->proteger($num_taxon);
$num_taxon = Cel::db()->proteger($num_taxon);
$sql = " AND nt = $num_taxon ";
}
return $sql;
644,7 → 644,7
private function getSqlWhereProjet($projet) {
$sql = null;
if (isset($projet) && !$this->etreNull($projet)) {
$sql = 'co.mots_cles_texte LIKE '.$this->proteger($projet);
$sql = 'co.mots_cles_texte LIKE '.Cel::db()->proteger($projet);
}
return $sql;
}
685,7 → 685,7
'ORDER BY utilisateur ASC, ci.ordre ASC';
//$this->debug[] = $requete;
//die($requete);
$elements_tag = $this->executerRequete($requete);
$elements_tag = Cel::db()->executerRequete($requete);
$requete_tag = array();
if ($elements_tag != false && count($elements_tag) > 0) {
756,7 → 756,7
}
foreach ($mots_cles['motsCles'] as $mot) {
$mots_cles['motsClesEncodesProteges'][] = $this->bdd->quote('%'.$mot.'%');
$mots_cles['motsClesEncodesProteges'][] = Cel::db()->quote('%'.$mot.'%');
}
$this->debug[] = $mots_cles;
return $mots_cles;
/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 = $this->executerRequete($requete_obs);
$resultat_obs = Cel::db()->executerRequete($requete_obs);
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();
/trunk/jrest/services/CelImage.php
67,7 → 67,7
' ON (coi.id_image = cim.id_image) '.
"WHERE co.id_observation IN ($observations) ";
$resultat_requete_images = $this->requeter($requete);
$resultat_requete_images = Cel::db()->requeter($requete);
$infos = array();
if(is_array($resultat_requete_images)) {
/trunk/jrest/services/User.php
123,9 → 123,9
function chargerInfosUtilisateur($login) {
 
$requete_selection_utilisateur = 'SELECT * FROM cel_utilisateurs cu '.
'WHERE courriel = '.$this->proteger($login);
'WHERE courriel = '.Cel::db()->proteger($login);
 
$resultat_selection_utilisateur = $this->requeter($requete_selection_utilisateur);
$resultat_selection_utilisateur = Cel::db()->requeter($requete_selection_utilisateur);
$retour = false;
if(is_array($resultat_selection_utilisateur) && count($resultat_selection_utilisateur) > 0) {
231,10 → 231,10
$requete = 'INSERT INTO cel_utilisateurs_infos '.
'(id_utilisateur, admin, licence_acceptee, preferences, date_premiere_utilisation )'.
'VALUES '.
"(".$this->proteger($id_utilisateur).", '0', '0', NULL, NOW()) ".
"(".Cel::db()->proteger($id_utilisateur).", '0', '0', NULL, NOW()) ".
'ON DUPLICATE KEY UPDATE date_premiere_utilisation = NOW() ';
$resultat_insertion_infos = $this->executer($requete);
$resultat_insertion_infos = Cel::db()->executer($requete);
}
/**
/trunk/jrest/services/ImageRDF.php
33,12 → 33,12
// Recherche de toutes les observations transmises du taxon pour lesquelles une photo est associee.
$requete_obs_publiques_images_taxon = 'SELECT * FROM cel_obs, cel_obs_images, cel_images '.
' WHERE cel_obs.nom_sel_nn = '.$this->proteger($uid[0]).
' WHERE cel_obs.nom_sel_nn = '.Cel::db()->proteger($uid[0]).
' AND cel_obs_images.id_observation = cel_obs.id_observation '.
' AND cel_obs.transmission = 1 '.
' AND cel_images.id_image = cel_obs_images.id_image';
 
$resultat_requete_obs_images_taxon = $this->requeter($requete_obs_publiques_images_taxon);
$resultat_requete_obs_images_taxon = Cel::db()->requeter($requete_obs_publiques_images_taxon);
$picture_path = $this->config['cel']['url_images'];
// Formatage du xml
/trunk/jrest/services/InventoryImageLink.php
51,10 → 51,10
{
$requete_creation_lien = 'INSERT INTO cel_obs_images (id_image, id_observation, date_liaison) '.
'VALUES '.
'('.$this->proteger($image).','.$this->proteger($observation).', NOW()) '.
'('.Cel::db()->proteger($image).','.Cel::db()->proteger($observation).', NOW()) '.
'ON DUPLICATE KEY UPDATE id_image = id_image' ;
$resultat_creation_lien = $this->executer($requete_creation_lien);
$resultat_creation_lien = Cel::db()->executer($requete_creation_lien);
if ($resultat_creation_lien) {
$retour = "OK";
96,18 → 96,18
'WHERE id_image IN ( '.
'SELECT id_image '.
'FROM cel_obs_images '.
'WHERE id_observation = '.$this->proteger($value).' '.
'WHERE id_observation = '.Cel::db()->proteger($value).' '.
')';
}
else
{
$column = 'id_observation' ;
$requete_selection_liaison = 'SELECT * from cel_obs WHERE id_observation IN (SELECT '.$column.' FROM cel_obs_images WHERE '.$field.' = '.$this->proteger($value).') ' ;
$requete_selection_liaison = 'SELECT * from cel_obs WHERE id_observation IN (SELECT '.$column.' FROM cel_obs_images WHERE '.$field.' = '.Cel::db()->proteger($value).') ' ;
}
 
}
 
$resultat_selection_liaison = $this->requeter($requete_selection_liaison);
$resultat_selection_liaison = Cel::db()->requeter($requete_selection_liaison);
$liaisons = array();
if (is_array($resultat_selection_liaison) && count($resultat_selection_liaison) > 0) {
141,7 → 141,7
$this->controleUtilisateur($uid[0]);
 
$id_img = $uid[1] ;
$id_obs = $this->proteger($uid[2]) ;
$id_obs = Cel::db()->proteger($uid[2]) ;
 
$id = $uid[0] ;
 
151,7 → 151,7
"AND id_observation IN (".$id_obs.") " ;
}
 
$resultat_suppression_lien = $this->executer($requete_suppression_lien);
$resultat_suppression_lien = Cel::db()->executer($requete_suppression_lien);
 
$retour = false;
if ($resultat_suppression_lien) {
/trunk/jrest/services/CelWidgetMapPoint.php
122,7 → 122,7
$this->construireWhereNombreDeJours().
' GROUP BY id_coord';
$resultats_emplacements = $this->executerRequete($requete);
$resultats_emplacements = Cel::db()->executerRequete($requete);
$emplacements = $this->traiterEmplacements($resultats_emplacements, $this->compterObservations($params));
return $emplacements;
}
158,7 → 158,7
$this->construireWhereTag().
$this->construireWhereNombreDeJours();
 
$resultats_nb_obs = $this->executerRequete($requete);
$resultats_nb_obs = Cel::db()->executerRequete($requete);
return $resultats_nb_obs[0]['nb'];
}
 
344,9 → 344,9
'ORDER BY nom_sel ASC '.
"LIMIT {$this->start},{$this->limit} ";
//echo $requete;exit;
$resultats = $this->requeter($requete, self::SQL_RETOUR_COMPLET, self::SQL_MODE_OBJET);
$resultats = Cel::db()->requeter($requete, self::SQL_RETOUR_COMPLET, self::SQL_MODE_OBJET);
$requete = 'SELECT FOUND_ROWS()';
$total = (int) $this->requeter($requete, self::SQL_RETOUR_COLONNE);
$total = (int) Cel::db()->requeter($requete, self::SQL_RETOUR_COLONNE);
}
 
// Post-traitement
490,10 → 490,10
'ORDER BY nom_ret ASC '.
"LIMIT {$this->start},{$this->limit} ";
//$this->debug[] = $requete;
$resultats = $this->requeter($requete, self::SQL_RETOUR_COMPLET, self::SQL_MODE_OBJET);
$resultats = Cel::db()->requeter($requete, self::SQL_RETOUR_COMPLET, self::SQL_MODE_OBJET);
//echo $requete;exit;
$requete = 'SELECT FOUND_ROWS()';
$taxons['total'] = (int) $this->requeter($requete, self::SQL_RETOUR_COLONNE);
$taxons['total'] = (int) Cel::db()->requeter($requete, self::SQL_RETOUR_COLONNE);
 
// Post-traitement
$taxons['taxons'] = $this->traiterTaxons($resultats);
525,12 → 525,12
extract($this->decomposerParametreStation());
if (isset($type)) {
if ($type == self::MARQUEUR_COMMUNE) {
$lat = $this->proteger($lat.'%');
$lng = $this->proteger($lng.'%');
$lat = Cel::db()->proteger($lat.'%');
$lng = Cel::db()->proteger($lng.'%');
$sql = " AND wgs84_latitude LIKE $lat AND wgs84_longitude LIKE $lng ";
} else if ($type == self::MARQUEUR_STATION) {
$lat = $this->proteger($lat.'%');
$lng = $this->proteger($lng.'%');
$lat = Cel::db()->proteger($lat.'%');
$lng = Cel::db()->proteger($lng.'%');
$sql = " AND (latitude LIKE $lat AND longitude LIKE $lng) ";
}
}
543,12 → 543,12
extract($this->decomposerParametreStation());
if (isset($type)) {
if ($type == self::MARQUEUR_COMMUNE) {
$lat = $this->proteger($lat);
$lng = $this->proteger($lng);
$lat = Cel::db()->proteger($lat);
$lng = Cel::db()->proteger($lng);
$sql = " AND wgs84_latitude LIKE $lat AND wgs84_longitude LIKE $lng ";
} else if ($type == self::MARQUEUR_STATION) {
$lat = $this->proteger($lat.'%');
$lng = $this->proteger($lng.'%');
$lat = Cel::db()->proteger($lat.'%');
$lng = Cel::db()->proteger($lng.'%');
$sql = " AND (latitude LIKE $lat AND longitude LIKE $lng) ";
}
}
560,7 → 560,7
$sql = '';
list($type, $commentaire) = $this->decomposerParametreCommentaire();
if (!$this->etreNull($commentaire)) {
$commentaire = $this->proteger('%'.$commentaire.'%');
$commentaire = Cel::db()->proteger('%'.$commentaire.'%');
switch ($type) {
case '*' :
$sql = $this->obtenirConditionPourCommentaires($commentaire);
590,7 → 590,7
$sql = '';
list($type, $nom) = $this->decomposerParametreTaxon();
if (!$this->etreNull($nom)) {
$nom = $this->proteger($nom.'%');
$nom = Cel::db()->proteger($nom.'%');
switch ($type) {
case '*' :
$sql = " AND (nom_ret LIKE $nom OR nom_sel LIKE $nom OR famille LIKE $nom) ";
615,7 → 615,7
$sql = '';
extract($this->parametres);
if (isset($referentiel) && !$this->etreNull($referentiel)) {
$referentiel = $this->proteger($referentiel.'%');
$referentiel = Cel::db()->proteger($referentiel.'%');
$sql = ' AND co.nom_referentiel LIKE '.$referentiel.' ';
}
return $sql;
627,7 → 627,7
list($type, $date) = $this->decomposerParametreDate();
 
if (!$this->etreNull($date)) {
$date = $this->proteger($date.'%');
$date = Cel::db()->proteger($date.'%');
switch ($type) {
case '*' :
$sql = " AND (
754,7 → 754,7
'ORDER BY utilisateur ASC, ordre ASC';
//$this->debug[] = $requete;
//die($requete);
$resultats = $this->executerRequete($requete);
$resultats = Cel::db()->executerRequete($requete);
 
$observations = null;
if ($resultats != false) {
890,7 → 890,7
if (isset($dept) && !$this->etreNull($dept)) {
$valeurs_a_proteger = explode(',',trim($dept));
foreach ($valeurs_a_proteger as $valeur) {
$valeurs_protegees[] = '(ce_zone_geo LIKE '.$this->bdd->quote('INSEE-C:'.$valeur.'%').') ';
$valeurs_protegees[] = '(ce_zone_geo LIKE '.Cel::db()->quote('INSEE-C:'.$valeur.'%').') ';
}
$valeurs = implode(' OR ', $valeurs_protegees);
$sql = " AND ($valeurs) ";
903,7 → 903,7
// Récupération des coordonnées depuis l'id station
extract($this->parametres);
if (isset($this->parametres['commune']) && !$this->etreNull($commune)) {
$commune = $this->proteger($commune);
$commune = Cel::db()->proteger($commune);
$sql = " AND zone_geo LIKE $commune ";
}
return $sql;
914,7 → 914,7
// Récupération des coordonnées depuis l'id station
extract($this->parametres);
if (isset($this->parametres['commune']) && !$this->etreNull($commune)) {
$commune = $this->proteger($commune);
$commune = Cel::db()->proteger($commune);
$sql = " AND zone_geo LIKE $commune ";
$sql .= " AND (
(
943,7 → 943,7
// pour en faire une fonction polyvalente
extract($this->parametres);
if (isset($this->parametres['utilisateur']) && !$this->etreNull($utilisateur)) {
$utilisateur = $this->proteger($utilisateur);
$utilisateur = Cel::db()->proteger($utilisateur);
$sql = " AND co.courriel_utilisateur = $utilisateur ";
}
return $sql;
955,7 → 955,7
// Récupération des coordonnées depuis l'id station
extract($this->parametres);
if (isset($this->parametres['num_taxon']) && !$this->etreNull($num_taxon)) {
$num_taxon = $this->proteger($num_taxon);
$num_taxon = Cel::db()->proteger($num_taxon);
$sql = " AND nt = $num_taxon ";
}
return $sql;
967,7 → 967,7
extract($this->parametres);
if (isset($this->parametres['num_taxon']) && !$this->etreNull($num_taxon)) {
$sous_taxons = $this->obtenirSousTaxons($this->parametres['num_taxon']);
$num_taxon = $this->proteger($num_taxon);
$num_taxon = Cel::db()->proteger($num_taxon);
if(!empty($sous_taxons)) {
$sql_in_sous_tax = implode(',', $sous_taxons);
$sql = " AND (nt = $num_taxon OR ".
1012,7 → 1012,7
private function getSqlWhereProjet($projet) {
$sql = null;
if (isset($projet) && !$this->etreNull($projet)) {
$sql = 'co.mots_cles_texte LIKE '.$this->proteger('%'.$projet.'%');
$sql = 'co.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$projet.'%');
}
return $sql;
}
1031,7 → 1031,7
$sql = null;
extract($this->parametres);
if (isset($nbjours) && !$this->etreNull($nbjours)) {
$sql = ' AND DATEDIFF(CURDATE(),co.date_creation) <= '.$this->proteger($nbjours).' ';
$sql = ' AND DATEDIFF(CURDATE(),co.date_creation) <= '.Cel::db()->proteger($nbjours).' ';
}
return $sql;
}
1063,7 → 1063,7
'ORDER BY utilisateur ASC, ci.ordre ASC';
//$this->debug[] = $requete;
//die($requete);
$elements_tag = $this->executerRequete($requete);
$elements_tag = Cel::db()->executerRequete($requete);
$requete_tag = array();
if ($elements_tag != false && count($elements_tag) > 0) {
1134,7 → 1134,7
}
foreach ($mots_cles['motsCles'] as $mot) {
$mots_cles['motsClesEncodesProteges'][] = $this->bdd->quote('%'.$mot.'%');
$mots_cles['motsClesEncodesProteges'][] = Cel::db()->quote('%'.$mot.'%');
}
$this->debug[] = $mots_cles;
return $mots_cles;
/trunk/jrest/lib/RechercheImage.php
48,11 → 48,11
 
if ($this->doitJoindreTableObs($criteres)) {
$requete_recherche_images .= $this->fabriquerRequeteJointureObs();
$requete_recherche_images .= ($id_utilisateur != null) ? 'AND ci.ce_utilisateur = '.$this->proteger($id_utilisateur) : '';
$requete_recherche_images .= ($id_utilisateur != null) ? 'AND ci.ce_utilisateur = '.Cel::db()->proteger($id_utilisateur) : '';
} else {
$requete_recherche_images .= 'FROM cel_images ci ';
$requete_recherche_images .= ($id_utilisateur != null) ? 'WHERE ci.ce_utilisateur = '.$this->proteger($id_utilisateur) : '';
$requete_recherche_images .= ($id_utilisateur != null) ? 'WHERE ci.ce_utilisateur = '.Cel::db()->proteger($id_utilisateur) : '';
}
$sous_requete_recherche = $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres);
61,7 → 61,7
$requete_recherche_images .= ' ORDER BY '.$ordre.' '.$direction.' LIMIT '.$debut.','.$limite ;
 
$resultats_images = array();
$resultats_images = $this->executerRequete($requete_recherche_images);
$resultats_images = Cel::db()->executerRequete($requete_recherche_images);
return $resultats_images;
}
77,11 → 77,11
if ($this->doitJoindreTableObs($criteres)) {
$requete_recherche_images .= $this->fabriquerRequeteJointureObs();
$requete_recherche_images .= ($id_utilisateur != null) ? 'AND ci.ce_utilisateur = '.$this->proteger($id_utilisateur) : '';
$requete_recherche_images .= ($id_utilisateur != null) ? 'AND ci.ce_utilisateur = '.Cel::db()->proteger($id_utilisateur) : '';
} else {
$requete_recherche_images .= 'FROM cel_images ci ';
$requete_recherche_images .= ($id_utilisateur != null) ? 'WHERE ci.ce_utilisateur = '.$this->proteger($id_utilisateur) : '';
$requete_recherche_images .= ($id_utilisateur != null) ? 'WHERE ci.ce_utilisateur = '.Cel::db()->proteger($id_utilisateur) : '';
}
$sous_requete_recherche = $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres);
89,7 → 89,7
$requete_recherche_images .= $sous_requete_recherche;
$nb_images = 0;
 
$resultat_requete_nombre_images = $this->executerRequete($requete_recherche_images);
$resultat_requete_nombre_images = Cel::db()->executerRequete($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 = $this->executerRequete($requete_table_liaison);
$resultats_liaisons_images = Cel::db()->executerRequete($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 = $this->executerRequete($requete_obs_liees);
$resultat_obs_liees = Cel::db()->executerRequete($requete_obs_liees);
 
foreach($resultat_obs_liees as $obs_liee)
{
171,7 → 171,7
foreach($mots_comment_liste as $mot_comment)
{
$mot_comment = trim($mot_comment) ;
$sous_requete .= 'ci.'.$nom.' LIKE '.$this->proteger('%'.$mot_comment.'%') ;
$sous_requete .= 'ci.'.$nom.' LIKE '.Cel::db()->proteger('%'.$mot_comment.'%') ;
$sous_requete .= ' AND ' ;
}
break;
185,7 → 185,7
case "tampon":
$ids_tampon = rtrim($valeur, ',') ;
$sous_requete .= 'ci.id_images IN ( '.$this->proteger($ids_tampon).')' ;
$sous_requete .= 'ci.id_images IN ( '.Cel::db()->proteger($ids_tampon).')' ;
break;
case "recherche":
194,7 → 194,7
break;
case "transmission":
$sous_requete .= 'co.transmission = '.$this->proteger($valeur) ;
$sous_requete .= 'co.transmission = '.Cel::db()->proteger($valeur) ;
$sous_requete .= ' AND ';
break;
201,17 → 201,17
case "taxon":
$valeur = str_replace('indetermine','null',$valeur);
$sous_requete .= ' (';
$sous_requete .= 'co.nom_ret LIKE '.$this->proteger($valeur.'%') ;
$sous_requete .= 'co.nom_ret LIKE '.Cel::db()->proteger($valeur.'%') ;
$sous_requete .= ' OR ' ;
$sous_requete .= 'co.nom_sel LIKE '.$this->proteger($valeur.'%') ;
$sous_requete .= 'co.nom_sel LIKE '.Cel::db()->proteger($valeur.'%') ;
$sous_requete .= ') AND ' ;
break;
case "auteur":
$sous_requete .= '(ci.ce_utilisateur LIKE '.$this->proteger($valeur.'%').' OR '.
'ci.courriel_utilisateur LIKE '.$this->proteger($valeur.'%').' OR '.
'ci.nom_utilisateur LIKE '.$this->proteger($valeur.'%').' OR '.
'ci.prenom_utilisateur LIKE '.$this->proteger($valeur.'%').
$sous_requete .= '(ci.ce_utilisateur LIKE '.Cel::db()->proteger($valeur.'%').' OR '.
'ci.courriel_utilisateur LIKE '.Cel::db()->proteger($valeur.'%').' OR '.
'ci.nom_utilisateur LIKE '.Cel::db()->proteger($valeur.'%').' OR '.
'ci.prenom_utilisateur LIKE '.Cel::db()->proteger($valeur.'%').
') AND ';
break;
219,7 → 219,7
if($valeur == "NULL") {
$sous_requete .= "(co.ce_zone_geo IS NULL OR co.ce_zone_geo = '')";
} else {
$sous_requete .= '(co.ce_zone_geo LIKE '.(is_numeric($valeur) ? $this->proteger('INSEE-C:'.$valeur.'%') : $this->proteger($valeur)).') ';
$sous_requete .= '(co.ce_zone_geo LIKE '.(is_numeric($valeur) ? Cel::db()->proteger('INSEE-C:'.$valeur.'%') : Cel::db()->proteger($valeur)).') ';
}
break;
227,17 → 227,17
if($valeur == "NULL") {
$sous_requete .= "(co.zone_geo IS NULL OR co.zone_geo = '')";
} else {
$sous_requete .= '(co.zone_geo = '.$this->proteger($valeur).') ';
$sous_requete .= '(co.zone_geo = '.Cel::db()->proteger($valeur).') ';
}
break;
case "famille":
$sous_requete .= 'co.famille = '.$this->proteger($valeur) ;
$sous_requete .= 'co.famille = '.Cel::db()->proteger($valeur) ;
$sous_requete .= ' AND ' ;
break;
default:
$sous_requete .= 'ci.'.$nom.' = '.$this->proteger($valeur) ;
$sous_requete .= 'ci.'.$nom.' = '.Cel::db()->proteger($valeur) ;
$sous_requete .= ' AND ' ;
break;
}
258,17 → 258,17
$chaine_recherche = str_replace(' ','_',$chaine_recherche);
$requete = ' ('.
'ci.nom_original LIKE '.$this->proteger($chaine_recherche.'%').' OR '.
'co.nom_ret LIKE '.$this->proteger($chaine_recherche.'%').' OR '.
'co.nom_sel LIKE '.$this->proteger($chaine_recherche.'%').' OR '.
'co.zone_geo LIKE '.$this->proteger($chaine_recherche.'%').' OR '.
'co.ce_zone_geo LIKE '.$this->proteger('%'.$chaine_recherche.'%').' OR '.
'ci.nom_original LIKE '.Cel::db()->proteger($chaine_recherche.'%').' OR '.
'co.nom_ret LIKE '.Cel::db()->proteger($chaine_recherche.'%').' OR '.
'co.nom_sel LIKE '.Cel::db()->proteger($chaine_recherche.'%').' OR '.
'co.zone_geo LIKE '.Cel::db()->proteger($chaine_recherche.'%').' OR '.
'co.ce_zone_geo LIKE '.Cel::db()->proteger('%'.$chaine_recherche.'%').' OR '.
//TODO: recherche multicriteres sur mots clés texte ne fonctionne pas à cause de la jointure
//'ci.mots_cles_texte LIKE '.$this->proteger('%'.$chaine_recherche.'%').' OR '.
'ci.ce_utilisateur LIKE '.$this->proteger($chaine_recherche.'%').' OR '.
'ci.courriel_utilisateur LIKE '.$this->proteger($chaine_recherche.'%').' OR '.
'ci.nom_utilisateur LIKE '.$this->proteger($chaine_recherche.'%').' OR '.
'ci.prenom_utilisateur LIKE '.$this->proteger($chaine_recherche.'%').' '.
//'ci.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$chaine_recherche.'%').' OR '.
'ci.ce_utilisateur LIKE '.Cel::db()->proteger($chaine_recherche.'%').' OR '.
'ci.courriel_utilisateur LIKE '.Cel::db()->proteger($chaine_recherche.'%').' OR '.
'ci.nom_utilisateur LIKE '.Cel::db()->proteger($chaine_recherche.'%').' OR '.
'ci.prenom_utilisateur LIKE '.Cel::db()->proteger($chaine_recherche.'%').' '.
') ';
return $requete;
281,7 → 281,7
$requete_recherche_date = '';
 
if(is_numeric($valeur) && $valeur != "00") {
$requete_recherche_date = '('.$correspondance_champ[$intervalle].'(ci.date_prise_de_vue) = '.$this->proteger($valeur).') ';
$requete_recherche_date = '('.$correspondance_champ[$intervalle].'(ci.date_prise_de_vue) = '.Cel::db()->proteger($valeur).') ';
} else {
$requete_recherche_date = '(ci.date_prise_de_vue IS NULL OR ci.date_prise_de_vue = "0000-00-00")';
}
294,17 → 294,17
if (preg_match('/.*OU.*/', $mot_cle)) {
$mots_cles_tab = explode('OU',$mot_cle);
foreach($mots_cles_tab as $mot_cle_item) {
$requete .= '(ci.mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') OR ';
$requete .= '(ci.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') OR ';
}
$requete = '('.rtrim($requete,'OR ').')';
} else if (preg_match('/.*ET.*/', $mot_cle)) {
$mots_cles_tab = explode('ET',$mot_cle);
foreach($mots_cles_tab as $mot_cle_item) {
$requete .= '(ci.mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') AND ';
$requete .= '(ci.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') AND ';
}
$requete = '('.rtrim($requete, 'AND ').') ';
} else {
$requete = "(ci.mots_cles_texte LIKE ".$this->proteger('%'.$mot_cle.'%').') ';
$requete = "(ci.mots_cles_texte LIKE ".Cel::db()->proteger('%'.$mot_cle.'%').') ';
}
$requete .= ' AND ';
return $requete;
326,9 → 326,9
public function obtenirCourrielUtilisateurPourIdImage($id_image) {
$requete = 'SELECT courriel_utilisateur FROM cel_images WHERE '.
'id_image = '.$this->proteger($id_image);
'id_image = '.Cel::db()->proteger($id_image);
$utilisateur_courriel = $this->executerRequete($requete);
$utilisateur_courriel = Cel::db()->executerRequete($requete);
$retour = false;
if(!empty($utilisateur_courriel) && isset($utilisateur_courriel[0]['courriel_utilisateur'])) {
343,7 → 343,7
'FROM cel_images_mots_cles '.
'WHERE id_image = '.$id_image;
return $this->executerRequete($requete_selection_mots_cles);
return Cel::db()->executerRequete($requete_selection_mots_cles);
}
// TODO: fonction temporaire
/trunk/jrest/lib/RechercheInfosTaxon.php
48,9 → 48,9
" , eflore_naturaliste_intitule_abreviation AS auteur_mex ".
" , eflore_naturaliste_intitule_abreviation AS auteur_m ".
" , eflore_selection_nom".
" WHERE en_id_version_projet_nom = '25' AND en_nom_genre LIKE ".$this->proteger($genre.'%').
" WHERE en_id_version_projet_nom = '25' AND en_nom_genre LIKE ".Cel::db()->proteger($genre.'%').
" AND en_ce_rang > 160 " .
" AND en_epithete_espece like ".$this->proteger($espece.'%')." AND en_ce_rang = enrg_id_rang " .
" AND en_epithete_espece like ".Cel::db()->proteger($espece.'%')." AND en_ce_rang = enrg_id_rang " .
" AND en_ce_auteur_basio_ex = auteur_bex.enaia_id_intitule_naturaliste_abrege ".
" AND en_ce_auteur_basio = auteur_b.enaia_id_intitule_naturaliste_abrege ".
" AND en_ce_auteur_modif_ex = auteur_mex.enaia_id_intitule_naturaliste_abrege ".
68,13 → 68,13
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 ".$this->proteger($genre.'%')." ORDER BY esn_ce_statut, en_nom_genre LIMIT 50";
"AND en_nom_genre LIKE ".Cel::db()->proteger($genre.'%')." ORDER BY esn_ce_statut, en_nom_genre LIMIT 50";
}
}
}
if ($requete_recherche != '') {
$resultat_recherche = $this->executerRequete($requete_recherche);
$resultat_recherche = Cel::db()->executerRequete($requete_recherche);
if (is_array($resultat_recherche)) {
foreach ($resultat_recherche as $ligne) {
141,7 → 141,7
" , 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= ".$this->proteger($numNom).
" 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 ".
" AND b.esn_ce_statut=3 ".
155,7 → 155,7
" AND a.esn_id_version_projet_taxon=en_id_version_projet_nom ";
 
$resultat_infos_complementaires = $this->executerRequete($requete_infos_complementaires);
$resultat_infos_complementaires = Cel::db()->executerRequete($requete_infos_complementaires);
return $resultat_infos_complementaires;
}
184,7 → 184,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 = $this->executerRequete($requete_infos_complementaires);
$resultat_infos_complementaires = Cel::db()->executerRequete($requete_infos_complementaires);
return $resultat_infos_complementaires;
}
202,7 → 202,7
'eni_intitule_nom LIKE "'.$nom_saisi.'%" '.
'ORDER BY LENGTH(eni_intitule_nom)';
$resultat_infos_comp_sur_nom = $this->executerRequete($requete_infos_comp_sur_nom);
$resultat_infos_comp_sur_nom = Cel::db()->executerRequete($requete_infos_comp_sur_nom);
if (is_array($resultat_infos_comp_sur_nom)) {
foreach ($resultat_infos_comp_sur_nom as $ligne) {
232,7 → 232,7
" AND en_id_nom = esn_id_nom ".
" AND esn_id_version_projet_taxon=en_id_version_projet_nom ";
$resultat_recherche_famille = $this->executerRequete($requete_famille);
$resultat_recherche_famille = Cel::db()->executerRequete($requete_famille);
if (!is_array($resultat_recherche_famille) || count($resultat_recherche_famille) == 0) {
$resultat_recherche_famille = array('en_ce_rang' => 'fin');
247,7 → 247,7
$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= ".$this->proteger($num_nom).
" WHERE a.esn_id_nom= ".Cel::db()->proteger($num_nom).
" AND a.esn_id_version_projet_taxon = 25 ".
" AND a.esn_id_taxon=b.esn_id_taxon ".
" AND b.esn_ce_statut=3 ".
256,7 → 256,7
" AND en_id_nom = b.esn_id_nom" .
" AND a.esn_id_version_projet_taxon=en_id_version_projet_nom ";
$res_num_nom = $this->executerRequete($requete_num_tax);
$res_num_nom = Cel::db()->executerRequete($requete_num_tax);
$nt = null;
if (is_array($res_num_nom) && count($res_num_nom) > 0) {
269,13 → 269,13
public function taxonEstPresentDansDepartement($num_taxon,$code_departement) {
$requete_presence_taxon = "SELECT ecd_ce_taxon FROM eflore_zg, eflore_chorologie_donnee ".
"WHERE ecd_ce_taxon = ".$this->proteger($num_taxon)." ".
"AND ezg_code = ".$this->proteger($code_departement)." ".
"WHERE ecd_ce_taxon = ".Cel::db()->proteger($num_taxon)." ".
"AND ezg_code = ".Cel::db()->proteger($code_departement)." ".
"AND ecd_ce_zone_geo = ezg_id_zone_geo ".
"AND ezg_id_projet_zg = ecd_ce_version_projet_zg ".
"AND ecd_ce_version_projet_taxon=25";
$resultat_presence_taxon = $this->executerRequete($requete_presence_taxon);
$resultat_presence_taxon = Cel::db()->executerRequete($requete_presence_taxon);
$presence_taxon = (is_array($resultat_presence_taxon) && count($resultat_presence_taxon) > 0);
289,12 → 289,12
if (isset($nom_latin_decoupe['infra']) && $nom_latin_decoupe['infra']!="") {
$requete="SELECT DISTINCT en_id_nom, esn_ce_statut" .
" FROM eflore_nom, eflore_nom_rang, eflore_selection_nom " .
" WHERE en_id_version_projet_nom = '25' AND en_nom_genre = ".$this->proteger($nom_latin_decoupe['genus'])." " .
" AND enrg_abreviation_rang = ".$this->proteger($nom_latin_decoupe['infra_type'])." " .
" AND en_epithete_infra_specifique = ".$this->proteger($nom_latin_decoupe['infra'])." " .
" WHERE en_id_version_projet_nom = '25' AND en_nom_genre = ".Cel::db()->proteger($nom_latin_decoupe['genus'])." " .
" AND enrg_abreviation_rang = ".Cel::db()->proteger($nom_latin_decoupe['infra_type'])." " .
" AND en_epithete_infra_specifique = ".Cel::db()->proteger($nom_latin_decoupe['infra'])." " .
" AND esn_id_nom= en_id_nom ".
" AND esn_id_version_projet_taxon=en_id_version_projet_nom " .
" AND en_epithete_espece = ".$this->proteger($nom_latin_decoupe['species'])." AND en_ce_rang = enrg_id_rang " .
" AND en_epithete_espece = ".Cel::db()->proteger($nom_latin_decoupe['species'])." AND en_ce_rang = enrg_id_rang " .
" ORDER BY esn_ce_statut ".
" LIMIT 1";
}
301,17 → 301,17
else { // espece (on privilegie les noms retenu cf tri par esn_ce_statut)
$requete="SELECT DISTINCT en_id_nom, esn_ce_statut" .
" FROM eflore_nom, eflore_nom_rang, eflore_selection_nom " .
" WHERE en_id_version_projet_nom = '25' AND en_nom_genre = ".$this->proteger($nom_latin_decoupe['genus'])." " .
" WHERE en_id_version_projet_nom = '25' AND en_nom_genre = ".Cel::db()->proteger($nom_latin_decoupe['genus'])." " .
" AND enrg_abreviation_rang = 'sp.' " .
" AND esn_id_nom= en_id_nom ".
" AND esn_id_version_projet_taxon=en_id_version_projet_nom " .
" AND en_epithete_espece = ".$this->proteger($nom_latin_decoupe['species'])." AND en_ce_rang = enrg_id_rang " .
" AND en_epithete_espece = ".Cel::db()->proteger($nom_latin_decoupe['species'])." AND en_ce_rang = enrg_id_rang " .
" ORDER BY esn_ce_statut ".
" LIMIT 1";
}
$resultat = $this->executerRequete($requete);
$resultat = Cel::db()->executerRequete($requete);
$retour = array();
if (is_array($resultat) && count($resultat) > 0) {
/trunk/jrest/lib/Cel.php
13,21 → 13,26
* @version $Id$
* @copyright © 2012, Tela Botanica
*/
// TODO : supprimer la méthode protegerRequete()
require_once('Bdd2.php');
 
abstract class Cel {
const TYPE_OBS = 'observation';
const TYPE_IMG = 'image';
const SQL_MODE_ASSOC = PDO::FETCH_ASSOC;
const SQL_MODE_OBJET = PDO::FETCH_OBJ;
const SQL_RETOUR_COMPLET = 'All';
const SQL_RETOUR_LIGNE = 'Row';
const SQL_RETOUR_COLONNE = 'Column';
const SQL_RETOUR_BRUT = 'Raw';
 
// TODO: delete wrappers
const SQL_MODE_ASSOC = Bdd2::SQL_MODE_ASSOC;
const SQL_MODE_OBJET = Bdd2::SQL_MODE_OBJET;
const SQL_RETOUR_COMPLET = Bdd2::SQL_RETOUR_COMPLET;
const SQL_RETOUR_LIGNE = Bdd2::SQL_RETOUR_LIGNE;
const SQL_RETOUR_COLONNE = Bdd2::SQL_RETOUR_COLONNE;
const SQL_RETOUR_BRUT = Bdd2::SQL_RETOUR_BRUT;
 
public $config;
private $ressources;
protected $parametres = array();
protected $bdd;
 
public static $bdd = null;
 
protected $messages = array();
protected $debug = array();
protected $start;
48,7 → 53,7
date_default_timezone_set($this->config['settings']['fuseauHoraire']);
 
// Connection à la base de données
$this->bdd = $this->connecterPDO($this->config, 'database_cel');
self::$bdd = new Bdd2($this->config, 'database_cel');
 
// Nettoyage du _GET (sécurité)
$this->collecterParametres();// Récupération de tous les parametres de _GET, nettoyage et mise dans $this->parametres
60,128 → 65,28
}
 
//+----------------------------------------------------------------------------------------------------------------+
// GESTION de la BASE de DONNÉES
 
protected function connecterPDO($config, $base = 'database_cel') {
$cfg = $config[$base];
// ATTENTION : la connexin à la bdd peut échouer si l'host vaut localhost. Utiliser 127.0.0.1 à la place.
$dsn = $cfg['phptype'].':dbname='.$cfg['database'].';host='.$cfg['hostspec'];
try {
// Création de la connexion en UTF-8 à la BDD
$PDO = new PDO($dsn, $cfg['username'], $cfg['password'], array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"));
// Affiche les erreurs détectées par PDO (sinon mode silencieux => aucune erreur affiché)
$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'La connexion à la base de donnée via PDO a échouée : ' .$dsn. $e->getMessage();
}
return $PDO;
return new Bdd2($config, $base);
}
 
/**
* Protège automatiquement toutes les chaines comprises entre deux caractères '|'.
* Puis execute la requete.
* @see protegerRequete()
* @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);
public static function db() {
if(! self::$bdd) die('ERR: no DB available');
return self::$bdd;
}
 
/**
* Protège automatiquement toutes les chaines comprises entre deux caractères '|'.
* @see protegerRequete()
* @param unknown_type $requete
*/
protected function executer($requete) {
$requete = $this->protegerRequete($requete);
return $this->executerRequeteSimple($requete);
// 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;
}
 
/**
* 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
*/
protected 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->bdd->quote($chaine[1]);
$requete = str_replace($chaine[0], $chaine_protegee, $requete);
}
}
} else {
$this->messages[] = "La requête a protéger contient un nombre impair de caractère de protection '|'.";
$requete = false;
}
return $requete;
}
 
protected function proteger($chaine) {
return $this->bdd->quote($chaine);
}
 
protected function protegerTableau(Array $tableau) {
foreach ($tableau as $id => $val) {
$tableau[$id] = $this->proteger($val);
$tableau[$id] = Cel::db()->proteger($val);
}
return $tableau;
}
 
protected function executerRequeteSimple($requete) {
$resultat = false;
try {
$resultat = $this->bdd->exec($requete);
if ($resultat === false) {
$this->debug[] = "La requête a échoué : $requete";
}
} catch (PDOException $e) {
$this->debug[] = sprintf($this->getTxt('sql_erreur_requete'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
}
return $resultat;
}
 
public function executerRequete($requete, $retour = self::SQL_RETOUR_COMPLET, $mode = PDO::FETCH_ASSOC) {
$resultat = false;
try {
switch ($retour) {
case self::SQL_RETOUR_COMPLET :
$resultat = $this->bdd->query($requete)->fetchAll($mode);// Retourne toutes les lignes
break;
case self::SQL_RETOUR_LIGNE :
$resultat = $this->bdd->query($requete)->fetch($mode);// Retourne la première ligne
break;
case self::SQL_RETOUR_COLONNE :
$resultat = $this->bdd->query($requete)->fetchColumn();// Retourne la première colonne de la première ligne
break;
case self::SQL_RETOUR_BRUT :
$resultat = $this->bdd->query($requete);// Retourne l'objet brut pour être utilisé dans une boucle de type foreach
break;
default:
$this->debug[] = "Le type de retour '$retour' est inconnu.";
}
if ($resultat === false) {
$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);
}
return $resultat;
}
 
protected 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;
}
return $sortie;
}
 
//+----------------------------------------------------------------------------------------------------------------+
// TRAITEMENT des URLs et des PARAMÊTRES
 
235,7 → 140,7
foreach ($params_attendu as $num => $nom) {
if (isset($params[$num]) && $params[$num] != '*') {
if ($pourBDD) {
$params[$num] = $this->bdd->quote($params[$num]);
$params[$num] = self::$bdd->quote($params[$num]);
}
$sortie[$nom] = $params[$num];
}
459,9 → 364,9
if(is_numeric($id_utilisateur)) {
 
$requete_infos_utilisateur = 'SELECT prenom, nom, courriel FROM cel_utilisateurs '.
'WHERE id_utilisateur = '.$this->proteger($id_utilisateur);
'WHERE id_utilisateur = '.Cel::db()->proteger($id_utilisateur);
 
$resultat_infos_utilisateur = $this->requeter($requete_infos_utilisateur);
$resultat_infos_utilisateur = Cel::db()->requeter($requete_infos_utilisateur);
 
if($resultat_infos_utilisateur && is_array($resultat_infos_utilisateur) && count($resultat_infos_utilisateur) > 0) {
$infos_utilisateur = $resultat_infos_utilisateur[0];
476,9 → 381,9
$infos_utilisateur = array('prenom' => $mail_utilisateur, 'nom' => $mail_utilisateur, 'courriel' => $mail_utilisateur);
 
$requete_infos_utilisateur = 'SELECT id, prenom, nom FROM cel_utilisateurs '.
'WHERE courriel = '.$this->proteger($mail_utilisateur);
'WHERE courriel = '.Cel::db()->proteger($mail_utilisateur);
 
$resultat_infos_utilisateur = $this->requeter($requete_infos_utilisateur);
$resultat_infos_utilisateur = Cel::db()->requeter($requete_infos_utilisateur);
 
if($resultat_infos_utilisateur && is_array($resultat_infos_utilisateur) && count($resultat_infos_utilisateur) > 0) {
$infos_utilisateur = $resultat_infos_utilisateur;
649,10 → 554,10
$code_insee = $dpt;
 
$requete = 'SELECT id_zone_geo FROM cel_zones_geo '.
'WHERE nom LIKE '.$this->proteger($nom_commune).' '.
'WHERE nom LIKE '.Cel::db()->proteger($nom_commune).' '.
'AND id_zone_geo LIKE "INSEE-C:'.$dpt.'%"';
 
$resultat = $this->requeter($requete);
$resultat = Cel::db()->requeter($requete);
 
if(is_array($resultat) && count($resultat) > 0) {
$code_insee = $resultat[0]['id_zone_geo'];
677,7 → 582,7
private function decoderMotsCles($utilisateur_id, $mots_cles, $type) {
$mots = array();
if (! $this->etreNull($mots_cles)) {
$utilisateur_id = $this->bdd->quote($utilisateur_id);
$utilisateur_id = self::$bdd->quote($utilisateur_id);
 
$mots_cles = $this->protegerMotsCles($mots_cles, $type);
if (! $this->etreNull($mots_cles)) {
688,7 → 593,7
"WHERE cmc_id_mot_cle_utilisateur IN ($mots_cles) ".
"AND cmc_id_proprietaire = $utilisateur_id ";
 
$elements = $this->executerRequete($requete);
$elements = Cel::db()->executerRequete($requete);
if (is_array($elements)) {
foreach ($elements as $mot) {
$mots[] = $mot['mot_cle'];
709,7 → 614,7
if (! $this->etreNull($valeurs)) {
$valeurs_a_proteger = explode($separateur_entree,trim(trim($valeurs), $separateur_entree));
foreach ($valeurs_a_proteger as $valeur) {
$valeurs_protegees[] = $this->bdd->quote($valeur);
$valeurs_protegees[] = self::$bdd->quote($valeur);
}
$valeurs = implode($separateur_sortie, $valeurs_protegees);
}
/trunk/jrest/lib/FormateurGroupeColonne.php
329,12 → 329,12
if(false && $abbrev == 'date_observation' && $valeur == "0000-00-00") {
/* blah */
}
// ici à cause du passage de $cel ($this), TODO: DB en Singleton !
// ici à cause du passage de $cel ($this->utilisateur)
if($abbrev == 'images') {
$valeur = FormateurGroupeColonne::getImages($obs, $cel->id_utilisateur, $cel);
$valeur = FormateurGroupeColonne::getImages($obs, $cel->id_utilisateur);
}
if($abbrev == 'nom-commun') {
$valeur = FormateurGroupeColonne::getNomCommun_v4($obs, $cel);
$valeur = FormateurGroupeColonne::getNomCommun_v4($obs);
}
if($valeur == null) {
351,7 → 351,7
if(is_null($colonne['dyna'])) continue;
// XXX: PHP-5.3
call_user_func_array($colonne['dyna'],
array($cel, $obs, &$ligne_formatee));
array($obs, &$ligne_formatee));
}
 
return $ligne_formatee;
393,7 → 393,7
* @param $fonction_dynamique (optionnel): défini une fonction ajoutant un nombre arbitraire de colonnes à une ligne donnée
* Utile, notamment, dans le cadre de l'export des champs étendus ou des données baseflor
* La fonction doit TOUJOURS alterer la ligne en lui ajoutant une nombre CONSTANT d'éléments (NULL ou non)
* La fonction doit prendre comme arguments ($cel, $obs, &$ligne_formatee)
* La fonction doit prendre comme arguments ($obs, &$ligne_formatee)
*/
static function GenColInfo($args) {
$default = Array('abbrev' => NULL,
443,12 → 443,12
return NULL;
}
 
static function getImages($obs, $id_utilisateur, $cel) {
static function getImages($obs, $id_utilisateur) {
if(! $id_utilisateur) return NULL;
if(isset(self::$cache['getImages'][$obs['id_observation']]))
return self::$cache['getImages'][$obs['id_observation']];
 
$rec = $cel->requeter(
$rec = Cel::db()->requeter(
sprintf("SELECT GROUP_CONCAT(nom_original ORDER BY nom_original ASC SEPARATOR '%s') AS i FROM cel_images i"
." LEFT JOIN cel_obs_images oi ON (i.id_image = oi.id_image)"
." LEFT JOIN cel_obs o ON (oi.id_observation = o.id_observation)"
605,7 → 605,7
Ainsi, les appels successifs à getNomCommun_v4() ne sont pas couteux (pas de requête SQL) */
static function getNomCommun_preload($cel, $obsids) {
if(!$obsids) return;
if(!self::referenceTableExiste($cel)) return NULL;
if(!self::referenceTableExiste()) return NULL;
 
// CREATE INDEX i_nom_referentiel ON cel_obs (nom_referentiel(5));
$req = sprintf("SELECT r.referentiel, r.num_taxon, r.nom_commun FROM cel_references r" .
612,7 → 612,7
" INNER JOIN cel_obs c ON (r.referentiel = substring_index(c.nom_referentiel, ':', 1) and r.num_taxon = c.nt)" .
" WHERE c.id_observation IN (%s)",
implode(',', $obsids));
$res = $cel->requeter($req);
$res = Cel::db()->requeter($req);
foreach($res as $v) {
self::$cache['getNomCommun'][$v['referentiel'] . '-' . $v['num_taxon'] . '-' . 'fra'] = $v['nom_commun'];
}
619,18 → 619,18
return NULL;
}
 
static function referenceTableExiste($cel) {
static function referenceTableExiste() {
if(!self::$is_table) {
// une seule fois
if(! $cel->executerRequete("SHOW TABLES LIKE 'cel_references'", Cel::SQL_RETOUR_LIGNE)) return FALSE;
if(! Cel::db()->executerRequete("SHOW TABLES LIKE 'cel_references'", Cel::SQL_RETOUR_LIGNE)) return FALSE;
self::$is_table = TRUE;
}
return TRUE;
}
static function getNomCommun_v4($obs, $cel) {
static function getNomCommun_v4($obs) {
if(! $obs['nt']) return NULL;
if(! self::referenceTableExiste($cel)) return NULL;
if(! self::referenceTableExiste()) return NULL;
 
$langue = 'fra';
list($referentiel) = explode(':', strtolower($obs['nom_referentiel']));
644,11 → 644,11
}
 
// pas de cache:
$nom = $cel->executerRequete(sprintf("SELECT nom_commun FROM cel_references " .
"WHERE referentiel = '%s' AND num_taxon = %d LIMIT 1",
$referentiel,
$obs['nt']),
Cel::SQL_RETOUR_LIGNE);
$nom = Cel::db()->executerRequete(sprintf("SELECT nom_commun FROM cel_references " .
"WHERE referentiel = '%s' AND num_taxon = %d LIMIT 1",
$referentiel,
$obs['nt']),
Cel::SQL_RETOUR_LIGNE);
 
if(! $nom) return NULL;
$nom = $nom["nom_commun"];
663,7 → 663,7
Ainsi, les appels successifs à baseflor_ligne() ne sont pas couteux (pas de requête SQL) */
static function baseflor_preload($cel, $obsids) {
if(!$obsids) return;
if(!self::referenceTableExiste($cel)) return NULL;
if(!self::referenceTableExiste()) return NULL;
 
$req = sprintf("SELECT referentiel, num_nom_retenu, %s FROM cel_references r" .
" INNER JOIN cel_obs c ON (r.num_nom_retenu = c.nom_ret_nn)" .
671,7 → 671,7
//" AND catminat_code IS NOT NULL", // TODO: suppression des NULL ici signifie que le cache sera partiel...
implode(',', array_keys(self::$baseflor_col)),
implode(',', $obsids));
$res = $cel->requeter($req);
$res = Cel::db()->requeter($req);
if(!$res) return NULL;
 
foreach($res as $v) {
685,13 → 685,13
}
 
static function baseflor_ligne($cel, $obs, &$ligne) {
static function baseflor_ligne($obs, &$ligne) {
if(! $obs['nom_ret_nn']) {
$ligne = array_merge($ligne, array_fill(0, count(self::$baseflor_col), NULL));
return;
}
 
if(! self::referenceTableExiste($cel)) {
if(! self::referenceTableExiste()) {
$ligne = array_merge($ligne, array_fill(0, count(self::$baseflor_col), NULL));
return;
}
707,7 → 707,7
}
 
// pas de cache:
$data = $cel->executerRequete(sprintf("SELECT %s FROM cel_references " .
$data = Cel::db()->executerRequete(sprintf("SELECT %s FROM cel_references " .
"WHERE referentiel = '%s' AND num_nom_retenu = %d LIMIT 1",
implode(', ', array_keys(self::$baseflor_col)),
$referentiel,
760,7 → 760,7
return $champs_etendus_fmt;
}
 
static function champsEtendus_ligne($cel, $obs, &$ligne) {
static function champsEtendus_ligne($obs, &$ligne) {
// si header n'est pas défini, aucune observation ne possède de champ étendu
// et nous n'ajoutons ni colonnes, ni valeurs.
if(! isset(self::$cache['champsEtendus']['header'])) return;
/trunk/jrest/lib/LiaisonMotsCles.php
42,12 → 42,12
foreach($ids_images_ou_obs as $id_image_ou_obs) {
foreach($mots_cles as $mot) {
$requete_liaison_mots_cles .= '('.$id_image_ou_obs.','.$this->proteger($mot).'),';
$requete_liaison_mots_cles .= '('.$id_image_ou_obs.','.Cel::db()->proteger($mot).'),';
}
}
$requete_liaison_mots_cles = rtrim($requete_liaison_mots_cles,',');
$resultat_liaison_mots_cles = $this->executer($requete_liaison_mots_cles);
$resultat_liaison_mots_cles = Cel::db()->executer($requete_liaison_mots_cles);
foreach($ids_images_ou_obs as $id_image_ou_obs) {
$this->regenererIndexTexteMotCle($id_image_ou_obs, $id_utilisateur);
80,7 → 80,7
$champ_objet_lie.' IN ('.implode(',',$ids_images_ou_obs).') '.
'AND '.$champ_mot_cle.' IN ('.implode(',',$mots_cles).')';
$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
$resultat_suppression_mot_cle = Cel::db()->executer($requete_suppression_liaison_mot_cle);
 
if ($requete_suppression_liaison_mot_cle !== false) {
$retour = true;
102,7 → 102,7
$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '.
$champ_objet_lie.' IN ('.implode(',',$ids_images_ou_obs).') ';
$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
$resultat_suppression_mot_cle = Cel::db()->executer($requete_suppression_liaison_mot_cle);
 
if ($requete_suppression_liaison_mot_cle !== false) {
$retour = true;
129,9 → 129,9
$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '.
$champ_mot_cle.' IN '.$chaine_mot_cles_ids;
$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
$resultat_suppression_mot_cle = Cel::db()->executer($requete_suppression_liaison_mot_cle);
$resultat_requete_objets_lies_mot_cle = $this->requeter($requete_objets_lies_mot_cle);
$resultat_requete_objets_lies_mot_cle = Cel::db()->requeter($requete_objets_lies_mot_cle);
foreach($resultat_requete_objets_lies_mot_cle as $objet_lie) {
$this->regenererIndexTexteMotCle($objet_lie['id'], $id_utilisateur);
}
161,11 → 161,11
private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_image_ou_obs, $identifiant_utilisateur) {
$requete = 'UPDATE '.(($this->mode == 'obs') ? 'cel_obs' : 'cel_images').' '.
'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '.
'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs).
' AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur);
'SET mots_cles_texte = '.Cel::db()->proteger($mots_cles_texte_chaine).' '.
'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.Cel::db()->proteger($id_image_ou_obs).
' AND ce_utilisateur = '.Cel::db()->proteger($identifiant_utilisateur);
 
return $this->executer($requete);
return Cel::db()->executer($requete);
}
private function obtenirMotsClesTexte($id_image_ou_obs, $identifiant_utilisateur) {
175,11 → 175,11
'('.
'SELECT id_mot_cle_'.(($this->mode == 'obs') ? 'obs' : 'image').' '.
'FROM cel_'.$this->mode.'_mots_cles '.
'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs).
'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.Cel::db()->proteger($id_image_ou_obs).
')'.
' AND id_utilisateur = '.$this->proteger($identifiant_utilisateur);
' AND id_utilisateur = '.Cel::db()->proteger($identifiant_utilisateur);
 
$resultats = $this->requeter($requete);
$resultats = Cel::db()->requeter($requete);
return $resultats;
}
214,31 → 214,31
// ATTENTION : cette fonction suppose que l'utilisateur n'ai pas déjà de mots clés dans le CEL
// avec l'identifiant $id_utilisateur ce qui est normalement le cas
$requete_migration_mc_images = 'UPDATE cel_mots_cles_images SET '.
'id_utilisateur = '.$this->proteger($infos_utilisateur['id_utilisateur']).' '.
'WHERE id_utilisateur = '.$this->proteger($mail_utilisateur).' ';
'id_utilisateur = '.Cel::db()->proteger($infos_utilisateur['id_utilisateur']).' '.
'WHERE id_utilisateur = '.Cel::db()->proteger($mail_utilisateur).' ';
 
$migration_mc_images = $this->executerRequeteSimple($requete_migration_mc_images);
$migration_mc_images = Cel::db()->executerRequeteSimple($requete_migration_mc_images);
// ATTENTION : cette fonction suppose que l'utilisateur n'ai pas déjà de mots clés dans le CEL
// avec l'identifiant $id_utilisateur ce qui est normalement le cas
$requete_migration_mc_obs = 'UPDATE cel_mots_cles_obs SET '.
'id_utilisateur = '.$this->proteger($infos_utilisateur['id_utilisateur']).' '.
'WHERE id_utilisateur = '.$this->proteger($mail_utilisateur).' ';
'id_utilisateur = '.Cel::db()->proteger($infos_utilisateur['id_utilisateur']).' '.
'WHERE id_utilisateur = '.Cel::db()->proteger($mail_utilisateur).' ';
$migration_mc_obs = $this->executerRequeteSimple($requete_migration_mc_obs);
$migration_mc_obs = Cel::db()->executerRequeteSimple($requete_migration_mc_obs);
// Migration des liaisons de mots clés
$requete_migration_mc_liaisons_obs = 'UPDATE cel_obs_mots_cles SET '.
'id_utilisateur = '.$this->proteger($infos_utilisateur['id_utilisateur']).' '.
'WHERE id_utilisateur = '.$this->proteger($mail_utilisateur).' ';
'id_utilisateur = '.Cel::db()->proteger($infos_utilisateur['id_utilisateur']).' '.
'WHERE id_utilisateur = '.Cel::db()->proteger($mail_utilisateur).' ';
$migration_mc_liaisons_obs = $this->executerRequeteSimple($requete_migration_mc_liaisons_obs);
$migration_mc_liaisons_obs = Cel::db()->executerRequeteSimple($requete_migration_mc_liaisons_obs);
$requete_migration_mc_liaisons_images = 'UPDATE cel_images_mots_cles SET '.
'id_utilisateur = '.$this->proteger($infos_utilisateur['id_utilisateur']).' '.
'WHERE id_utilisateur = '.$this->proteger($mail_utilisateur).' ';
'id_utilisateur = '.Cel::db()->proteger($infos_utilisateur['id_utilisateur']).' '.
'WHERE id_utilisateur = '.Cel::db()->proteger($mail_utilisateur).' ';
$migration_mc_liaisons_images = $this->executerRequeteSimple($requete_migration_mc_liaisons_images);
$migration_mc_liaisons_images = Cel::db()->executerRequeteSimple($requete_migration_mc_liaisons_images);
return $migration_mc_images !== false &&
$migration_mc_obs !== false &&
/trunk/jrest/lib/Bdd2.php
New file
0,0 → 1,135
<?php
/**
* La classe de gestion de la base de données.
*
* @category php 5.2
* @package cel
* @author Raphaël Droz <raphael@tela-botanica.org>
* @copyright Copyright (c) 2013, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
*/
class Bdd2 extends PDO {
 
const SQL_MODE_ASSOC = PDO::FETCH_ASSOC;
const SQL_MODE_OBJET = PDO::FETCH_OBJ;
const SQL_RETOUR_COMPLET = 'All';
const SQL_RETOUR_LIGNE = 'Row';
const SQL_RETOUR_COLONNE = 'Column';
const SQL_RETOUR_BRUT = 'Raw';
 
function __construct($config, $base = 'database_cel') {
$cfg = $config[$base];
// ATTENTION : la connexin à la bdd peut échouer si l'host vaut localhost. Utiliser 127.0.0.1 à la place.
$dsn = $cfg['phptype'].':dbname='.$cfg['database'].';host='.$cfg['hostspec'];
try {
// Création de la connexion en UTF-8 à la BDD
parent::__construct($dsn, $cfg['username'], $cfg['password'], array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"));
// Affiche les erreurs détectées par PDO (sinon mode silencieux => aucune erreur affiché)
parent::setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'La connexion à la base de donnée via PDO a échouée : ' .$dsn . "\n". $e->getMessage();
}
}
 
/**
* Protège automatiquement toutes les chaines comprises entre deux caractères '|'.
* Puis execute la requete.
* @see protegerRequete()
* @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
*/
public function executer($requete) {
$requete = $this->protegerRequete($requete);
return $this->executerRequeteSimple($requete);
}
 
/**
* 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
*/
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);
}
}
} 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 executerRequeteSimple($requete) {
$resultat = false;
try {
$resultat = $this->exec($requete);
if ($resultat === false) {
$this->debug[] = "La requête a échoué : $requete";
}
} catch (PDOException $e) {
$this->debug[] = sprintf($this->getTxt('sql_erreur_requete'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
}
return $resultat;
}
 
public function executerRequete($requete, $retour = self::SQL_RETOUR_COMPLET, $mode = PDO::FETCH_ASSOC) {
$resultat = false;
try {
switch ($retour) {
case self::SQL_RETOUR_COMPLET :
$resultat = $this->query($requete)->fetchAll($mode);// Retourne toutes les lignes
break;
case self::SQL_RETOUR_LIGNE :
$resultat = $this->query($requete)->fetch($mode);// Retourne la première ligne
break;
case self::SQL_RETOUR_COLONNE :
$resultat = $this->query($requete)->fetchColumn();// Retourne la première colonne de la première ligne
break;
case self::SQL_RETOUR_BRUT :
$resultat = $this->query($requete);// Retourne l'objet brut pour être utilisé dans une boucle de type foreach
break;
default:
$this->debug[] = "Le type de retour '$retour' est inconnu.";
}
if ($resultat === false) {
$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);
}
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;
}
return $sortie;
}
 
}
/trunk/jrest/lib/GestionObservation.php
43,7 → 43,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 = $this->executerRequeteSimple($requete_insertion_observation);
$resultat_ajout_observation = Cel::db()->executerRequeteSimple($requete_insertion_observation);
 
if ($resultat_ajout_observation === false) {
$retour = false;
65,9 → 65,9
public function renvoyerDernierOrdreUtilisePlusUn($utilisateur) {
$requete_selection_dernier_ordre = "SELECT max(ordre) AS ordre FROM cel_obs ".
"WHERE ce_utilisateur = ".$this->proteger($utilisateur);
"WHERE ce_utilisateur = ".Cel::db()->proteger($utilisateur);
 
$dernier_ordre = $this->executerRequete($requete_selection_dernier_ordre);
$dernier_ordre = Cel::db()->executerRequete($requete_selection_dernier_ordre);
$nouvel_ordre = 0;
if (is_array($dernier_ordre) && count($dernier_ordre) > 0 && trim($dernier_ordre[0]['ordre']) != '') {
85,10 → 85,10
public function renvoyerIdPourOrdre($utilisateur, $ordre) {
$requete_selection_dernier_id = "SELECT id_observation FROM cel_obs ".
"WHERE ce_utilisateur = ".$this->proteger($utilisateur)." ".
"AND ordre = ".$this->proteger($ordre)." ";
"WHERE ce_utilisateur = ".Cel::db()->proteger($utilisateur)." ".
"AND ordre = ".Cel::db()->proteger($ordre)." ";
$dernier_id = $this->executerRequete($requete_selection_dernier_id);
$dernier_id = Cel::db()->executerRequete($requete_selection_dernier_id);
if(!$dernier_id) return NULL;
return $dernier_id[0]['id_observation'];
}
120,12 → 120,12
$sous_requete_modification = $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres);
$requete_modification .= $sous_requete_modification;
 
$requete_modification .= " WHERE ordre IN (".$ordre.") AND ce_utilisateur = ".$this->proteger($utilisateur);
$requete_modification .= " WHERE ordre IN (".$ordre.") AND ce_utilisateur = ".Cel::db()->proteger($utilisateur);
 
// 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 = $this->executerRequeteSimple($requete_modification);
$resultat_modification = Cel::db()->executerRequeteSimple($requete_modification);
if ($resultat_modification === false) {
$retour = false;
157,13 → 157,13
$sous_requete_modification = $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres);
$requete_modification .= $sous_requete_modification;
$requete_modification .= " WHERE id_observation = ".$this->proteger($id).
" AND ce_utilisateur = ".$this->proteger($utilisateur)." ".
$requete_modification .= " WHERE id_observation = ".Cel::db()->proteger($id).
" AND ce_utilisateur = ".Cel::db()->proteger($utilisateur)." ".
" AND transmission = 1";
// 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 = $this->executerRequeteSimple($requete_modification);
$resultat_modification = Cel::db()->executerRequeteSimple($requete_modification);
if ($resultat_modification === false) {
$retour = false;
185,26 → 185,26
// TODO changer le systeme pour n'utiliser plus que les id
$retour = false;
$tableau_ordre = explode(',', $ordre);
$tableau_ordre = array_map(array($this, 'proteger'), $tableau_ordre);
$tableau_ordre = array_map(array(Cel::db(),'proteger'), $tableau_ordre);
$ordre = implode(',', $tableau_ordre);
 
$requete_ids_observations = 'SELECT id_observation as id_obs FROM cel_obs '.
'WHERE ce_utilisateur = '.$this->proteger($utilisateur).' '.
'WHERE ce_utilisateur = '.Cel::db()->proteger($utilisateur).' '.
'AND ordre IN ('.$ordre.')';
$resultat_ids_observations = $this->requeter($requete_ids_observations);
$resultat_ids_observations = Cel::db()->requeter($requete_ids_observations);
 
$ids_obs = array();
if(is_array($resultat_ids_observations) && count($resultat_ids_observations) > 0) {
foreach($resultat_ids_observations as $id_observation) {
$ids_obs[] = $this->proteger($id_observation['id_obs']);
$ids_obs[] = Cel::db()->proteger($id_observation['id_obs']);
}
$chaine_ids_obs = implode(',', $ids_obs);
$requete_supression_observations = 'DELETE FROM cel_obs WHERE '.
'ce_utilisateur = '.$this->proteger($utilisateur).' '.
'ce_utilisateur = '.Cel::db()->proteger($utilisateur).' '.
'AND id_observation IN ('.$chaine_ids_obs.')';
 
$resultat_suppression_observations = $this->executerRequeteSimple($requete_supression_observations);
$resultat_suppression_observations = Cel::db()->executerRequeteSimple($requete_supression_observations);
// TODO: Faire la suppression des mots clés
// et des liaisons obs images dans une ou des fonctions à part
214,10 → 214,10
else
{
$requete_supression_lien_obs_images = 'DELETE FROM cel_obs_images WHERE '.
'id_utilisateur = '.$this->proteger($utilisateur).' '.
'id_utilisateur = '.Cel::db()->proteger($utilisateur).' '.
'AND id_observation IN ('.$chaine_ids_obs.')';
$resultat_suppression_liens = $this->executerRequeteSimple($requete_supression_lien_obs_images);
$resultat_suppression_liens = Cel::db()->executerRequeteSimple($requete_supression_lien_obs_images);
if ($resultat_suppression_liens === false) {
$this->logger("CEL_bugs","Erreur de suppression d'une liste de liaison entre observations et images : ".$requete_supression_lien_obs_images);
230,7 → 230,7
$requete_supression_lien_mots_cles = 'DELETE FROM cel_obs_mots_cles WHERE '.
'id_observation in ('.$chaine_ids_obs.')';
$resultat_suppression_mots_cles = $this->executerRequeteSimple($requete_supression_lien_mots_cles);
$resultat_suppression_mots_cles = Cel::db()->executerRequeteSimple($requete_supression_lien_mots_cles);
if ($resultat_suppression_mots_cles === false) {
$this->logger("CEL_bugs","Erreur de suppression d'une liste de mots clés d'observation(s) : ".$resultat_suppression_mots_cles);
}
259,8 → 259,8
$nouvel_ordre = $this->renvoyerDernierOrdreUtilisePlusUn($id_utilisateur);
// Recuperation relevés associés a la session
$requete_selection_releves_temporaires = 'SELECT ordre FROM cel_obs WHERE ce_utilisateur = '.$this->proteger($ancien_id).' ORDER BY ordre';
$resultat_releves_temporaires = $this->executerRequete($requete_selection_releves_temporaires);
$requete_selection_releves_temporaires = 'SELECT ordre FROM cel_obs WHERE ce_utilisateur = '.Cel::db()->proteger($ancien_id).' ORDER BY ordre';
$resultat_releves_temporaires = Cel::db()->executerRequete($requete_selection_releves_temporaires);
$reussite = true;
if(is_array($resultat_releves_temporaires)) {
267,11 → 267,11
foreach($resultat_releves_temporaires as $releve_temporaire) {
$requete_migration_releve = 'UPDATE cel_obs SET '.
'ce_utilisateur = '.$this->proteger($id_utilisateur).', '.
'ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).', '.
'ordre = '.$nouvel_ordre.' '.
'WHERE ce_utilisateur = '.$ancien_id.' '.
'AND ordre = '.$releve_temporaire['ordre'];
$migration_releve = $this->executerRequeteSimple($requete_migration_releve);
$migration_releve = Cel::db()->executerRequeteSimple($requete_migration_releve);
//TODO: meilleure vérification
if($migration_releve === false) {
294,13 → 294,13
// ATTENTION : cette fonction suppose que l'utilisateur n'ai pas déjà d'observations dans le CEL
// avec l'identifiant $id_utilisateur ce qui est normalement le cas
$requete_migration_releve = 'UPDATE cel_obs SET '.
'ce_utilisateur = '.$this->proteger($infos_utilisateur['id_utilisateur']).', '.
'prenom_utilisateur = '.$this->proteger($infos_utilisateur['prenom']).', '.
'nom_utilisateur = '.$this->proteger($infos_utilisateur['nom']).', '.
'courriel_utilisateur = '.$this->proteger($infos_utilisateur['courriel']).' '.
'WHERE ce_utilisateur = '.$this->proteger($mail_utilisateur).' ';
'ce_utilisateur = '.Cel::db()->proteger($infos_utilisateur['id_utilisateur']).', '.
'prenom_utilisateur = '.Cel::db()->proteger($infos_utilisateur['prenom']).', '.
'nom_utilisateur = '.Cel::db()->proteger($infos_utilisateur['nom']).', '.
'courriel_utilisateur = '.Cel::db()->proteger($infos_utilisateur['courriel']).' '.
'WHERE ce_utilisateur = '.Cel::db()->proteger($mail_utilisateur).' ';
 
$migration_releve = $this->executerRequeteSimple($requete_migration_releve);
$migration_releve = Cel::db()->executerRequeteSimple($requete_migration_releve);
return $migration_releve;
}
432,7 → 432,7
if (trim($valeur) == "" || trim($valeur) == "null") {
$valeur = "NULL";
} else {
$valeur = $this->proteger($valeur);
$valeur = Cel::db()->proteger($valeur);
}
$champs .= $cle.', ';
470,7 → 470,7
if (trim($valeur) == "" || trim($valeur) == "null") {
$valeur = "NULL";
} else {
$valeur = $this->proteger($valeur);
$valeur = Cel::db()->proteger($valeur);
}
$sous_requete .= $cle." = ".$valeur.", ";
/trunk/jrest/lib/GestionChampsEtendus.php
49,14 → 49,14
* @return bool
*/
public function existe($id_element_lie, $cle) {
$id = $this->proteger($id_element_lie);
$cle = $this->proteger($cle);
$id = Cel::db()->proteger($id_element_lie);
$cle = Cel::db()->proteger($cle);
$requete = 'SELECT COUNT(*) >= 1 AS existe '.
"FROM {$this->table_champs_etendus} ".
"WHERE {$this->champ_id} = $id ".
" AND cle = $cle ";
 
$resultat = $this->executerRequete($requete);
$resultat = Cel::db()->executerRequete($requete);
return ($resultat[0]['existe'] == '1');
}
 
67,9 → 67,9
* @return array tableau associatif des champs de la table etendu
*/
public function consulter($id_element_lie) {
$id = $this->proteger($id_element_lie);
$id = Cel::db()->proteger($id_element_lie);
$requete = "SELECT * FROM {$this->table_champs_etendus} WHERE {$this->champ_id} = $id ";
$resultat = $this->executerRequete($requete);
$resultat = Cel::db()->executerRequete($requete);
return $resultat;
}
 
84,11 → 84,11
public function consulterParLots(Array $ids_element_lies) {
$champs_etendus_par_element = array();
if (!empty($ids_element_lies)) {
$ids_element_lies = array_map(array($this, 'proteger'),$ids_element_lies);
$ids_element_lies = array_map(array(Cel::db(), 'proteger'),$ids_element_lies);
$ids = implode(',', $ids_element_lies);
 
$requete = "SELECT * FROM {$this->table_champs_etendus} WHERE {$this->champ_id} IN ($ids) ";
$resultats = $this->executerRequete($requete);
$resultats = Cel::db()->executerRequete($requete);
 
foreach ($resultats as &$ligne) {
$id_element = $ligne[$this->champ_id];
115,10 → 115,10
* @return bool true si l'ajout a eu lieu
*/
public function ajouter(ChampEtendu $champ_etendu) {
$id = $this->proteger($champ_etendu->id);
$cle = $this->proteger($champ_etendu->cle);
$label = $this->proteger($champ_etendu->label);
$valeur = $this->proteger($champ_etendu->valeur);
$id = Cel::db()->proteger($champ_etendu->id);
$cle = Cel::db()->proteger($champ_etendu->cle);
$label = Cel::db()->proteger($champ_etendu->label);
$valeur = Cel::db()->proteger($champ_etendu->valeur);
 
$requete = "INSERT INTO {$this->table_champs_etendus} ".
"( {$this->champ_id}, cle, label, valeur) ".
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 = $this->executerRequeteSimple($requete);
$ajout = Cel::db()->executerRequeteSimple($requete);
return ($ajout !== false);
}
 
141,10 → 141,10
public function ajouterParLots(Array $champs_etendus) {
$lignes = array();
foreach ($champs_etendus as $champ_etendu) {
$id = $this->proteger($champ_etendu->id);
$cle = $this->proteger($champ_etendu->cle);
$label = $this->proteger($champ_etendu->label);
$valeur = $this->proteger($champ_etendu->valeur);
$id = Cel::db()->proteger($champ_etendu->id);
$cle = Cel::db()->proteger($champ_etendu->cle);
$label = Cel::db()->proteger($champ_etendu->label);
$valeur = Cel::db()->proteger($champ_etendu->valeur);
 
$lignes[] = "($id, $cle, $label, $valeur)";
}
157,7 → 157,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 = $this->executerRequeteSimple($requete);
$ajout = Cel::db()->executerRequeteSimple($requete);
return ($ajout !== false);
}
 
168,10 → 168,10
* @return bool true si la modification a eu lieu
*/
public function modifier(ChampEtendu $champ_etendu) {
$id = $this->proteger($champ_etendu->id);
$cle = $this->proteger($champ_etendu->cle);
$label = $this->proteger($champ_etendu->label);
$valeur = $this->proteger($champ_etendu->valeur);
$id = Cel::db()->proteger($champ_etendu->id);
$cle = Cel::db()->proteger($champ_etendu->cle);
$label = Cel::db()->proteger($champ_etendu->label);
$valeur = Cel::db()->proteger($champ_etendu->valeur);
 
$requete = "UPDATE {$this->table_champs_etendus} ".
"SET label = $label, valeur = $valeur ".
178,7 → 178,7
"WHERE cle = $cle".
" AND {$this->champ_id} = $id ";
 
$modif = $this->executerRequeteSimple($requete);
$modif = Cel::db()->executerRequeteSimple($requete);
return ($modif !== false);
}
 
190,10 → 190,10
* @return bool
*/
public function supprimer($id_element_lie, $cle) {
$id = $this->proteger($id_element_lie);
$cle = $this->proteger($cle);
$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 = $this->executerRequeteSimple($requete);
$suppr = Cel::db()->executerRequeteSimple($requete);
return ($suppr !== false);
}
 
204,9 → 204,9
* @return bool
*/
public function vider($id_element_lie) {
$id = $this->proteger($id_element_lie);
$id = Cel::db()->proteger($id_element_lie);
$requete = "DELETE FROM {$this->table_champs_etendus} WHERE {$this->champ_id} = $id ";
$suppr = $this->executerRequeteSimple($requete);
$suppr = Cel::db()->executerRequeteSimple($requete);
return ($suppr !== false);
}
 
219,7 → 219,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 = $this->executerRequeteSimple($requete);
$suppr = Cel::db()->executerRequeteSimple($requete);
return ($suppr !== false);
}
234,7 → 234,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 = $this->executerRequete($requete);
$cles = Cel::db()->executerRequete($requete);
$i = 0;
foreach($cles as &$cle) {
$cles_fmt[$cle['cle']] = $i++;
/trunk/jrest/lib/RechercheObservation.php
20,16 → 20,16
$requete_selection_id = 'SELECT id_observation FROM cel_obs WHERE ordre ';
 
if (is_array($ordre)) {
$ordre = array_map(array($this,'proteger'), $ordre);
$ordre = array_map(array(Cel::db(),'proteger'), $ordre);
$requete_selection_id .= ' IN ('.implode(',',$ordre).') ';
} else {
$requete_selection_id .= ' = '.$this->proteger($ordre).' ';
$requete_selection_id .= ' = '.Cel::db()->proteger($ordre).' ';
}
 
$requete_selection_id .= ' AND ce_utilisateur = '.$this->proteger($id_utilisateur).
$requete_selection_id .= ' AND ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).
' ORDER BY id_observation';
 
$resultat_ids = $this->executerRequete($requete_selection_id);
$resultat_ids = Cel::db()->executerRequete($requete_selection_id);
 
$ids = array();
if (is_array($resultat_ids)) {
45,7 → 45,7
$requete_selection_observations = 'SELECT * FROM cel_obs ';
 
if ($id_utilisateur != null) {
$requete_selection_observations .= 'WHERE ce_utilisateur = '.$this->proteger($id_utilisateur).' AND ';
$requete_selection_observations .= 'WHERE ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).' AND ';
} else if(count($criteres) > 0) {
$requete_selection_observations .= 'WHERE ';
}
67,7 → 67,7
 
public function get() {
if(!$this->requete_selection_observations) return FALSE;
return $this->executerRequete($this->requete_selection_observations);
return Cel::db()->executerRequete($this->requete_selection_observations);
}
 
public function compterObservations($id_utilisateur = null, $criteres = array()) {
74,7 → 74,7
$requete_selection_observations = 'SELECT COUNT(*) as nb_obs FROM cel_obs ';
 
if ($id_utilisateur != null) {
$requete_selection_observations .= 'WHERE ce_utilisateur = '.$this->proteger($id_utilisateur).' AND ';
$requete_selection_observations .= 'WHERE ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).' AND ';
} else if(count($criteres) > 0) {
$requete_selection_observations .= 'WHERE ';
}
85,7 → 85,7
$requete_selection_observations = rtrim($requete_selection_observations, 'AND ');
 
$nb_obs = '0';
$resultat_requete_nombre_observations = $this->executerRequete($requete_selection_observations);
$resultat_requete_nombre_observations = Cel::db()->executerRequete($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'];
128,10 → 128,10
}
 
public function obtenirCourrielUtilisateurPourIdObs($id_obs) {
$id_obs = $this->proteger($id_obs);
$id_obs = Cel::db()->proteger($id_obs);
$requete = "SELECT courriel_utilisateur FROM cel_obs WHERE id_observation = $id_obs";
 
$utilisateur_courriel = $this->executerRequete($requete . ' -- ' . __FILE__ . ':' . __LINE__);
$utilisateur_courriel = Cel::db()->executerRequete($requete . ' -- ' . __FILE__ . ':' . __LINE__);
 
$retour = false;
if (!empty($utilisateur_courriel) && isset($utilisateur_courriel[0]['courriel_utilisateur'])) {
144,7 → 144,7
$requete_selection_mots_cles = 'SELECT DISTINCT id_mot_cle_obs '.
'FROM cel_obs_mots_cles '.
"WHERE id_observation = $id_observation ";
return $this->executerRequete($requete_selection_mots_cles);
return Cel::db()->executerRequete($requete_selection_mots_cles);
}
 
// TODO: fonction temporaire
176,7 → 176,7
if ($valeur == "NULL") {
$sous_requete .= "(date_observation IS NULL OR year(date_observation) = 0000)" ;
} else {
$sous_requete .= "(year(date_observation) = ".$this->proteger($valeur).")" ;
$sous_requete .= "(year(date_observation) = ".Cel::db()->proteger($valeur).")" ;
}
$sous_requete .= ' AND ' ;
break;
184,7 → 184,7
if ($valeur == "NULL") {
$sous_requete .= "date_observation IS NULL OR month(date_observation) = 00" ;
} else {
$sous_requete .= "month(date_observation) = ".$this->proteger($valeur) ;
$sous_requete .= "month(date_observation) = ".Cel::db()->proteger($valeur) ;
}
$sous_requete .= ' AND ' ;
break;
192,7 → 192,7
if ($valeur == "NULL") {
$sous_requete .= "date_observation IS NULL OR day(date_observation) = 00" ;
} else {
$sous_requete .= "day(date_observation) = ".$this->proteger($valeur) ;
$sous_requete .= "day(date_observation) = ".Cel::db()->proteger($valeur) ;
}
$sous_requete .= ' AND ' ;
break;
204,11 → 204,11
$dpts = explode(',',$valeur);
$sous_requete .= '(';
foreach($dpts as $dpt) {
$sous_requete .= "ce_zone_geo LIKE ".$this->proteger('INSEE-C:'.$dpt.'___').' OR ';
$sous_requete .= "ce_zone_geo LIKE ".Cel::db()->proteger('INSEE-C:'.$dpt.'___').' OR ';
}
$sous_requete = rtrim($sous_requete,' OR ').') ';
} else {
$sous_requete .= "(ce_zone_geo LIKE ".$this->proteger('INSEE-C:'.$valeur.'___').')';
$sous_requete .= "(ce_zone_geo LIKE ".Cel::db()->proteger('INSEE-C:'.$valeur.'___').')';
}
}
$sous_requete .= ' AND ' ;
217,7 → 217,7
if ($valeur == "NULL") {
$sous_requete .= "(zone_geo IS NULL OR zone_geo = '')";
} else {
$sous_requete .= "(zone_geo = ".$this->proteger($valeur).')';
$sous_requete .= "(zone_geo = ".Cel::db()->proteger($valeur).')';
}
$sous_requete .= ' AND ' ;
break;
232,15 → 232,15
$sous_requete .= ' AND ';
break;
case 'date_debut':
$sous_requete .= 'date_observation >= '.$this->proteger($this->formaterEnDateMysql($valeur));
$sous_requete .= 'date_observation >= '.Cel::db()->proteger($this->formaterEnDateMysql($valeur));
$sous_requete .= ' AND ';
break;
case 'date_fin':
$sous_requete .= 'date_observation <= '.$this->proteger($this->formaterEnDateMysql($valeur));
$sous_requete .= 'date_observation <= '.Cel::db()->proteger($this->formaterEnDateMysql($valeur));
$sous_requete .= ' AND ';
break;
case 'taxon':
$valeur_protegee = $this->proteger($valeur."%");
$valeur_protegee = Cel::db()->proteger($valeur."%");
$sous_requete .= "( nom_sel LIKE ".$valeur_protegee." OR".
" nom_ret LIKE ".$valeur_protegee." OR".
" famille LIKE ".$valeur_protegee.
252,7 → 252,7
break;
default:
if (trim($nom) != '') {
$sous_requete .= $nom." = ".$this->proteger($valeur) ;
$sous_requete .= $nom." = ".Cel::db()->proteger($valeur) ;
$sous_requete .= ' AND ';
}
if (trim($nom) == 'NULL') {
276,7 → 276,7
 
private function fabriquerSousRequeteRechercheGenerale($id_utilisateur, $valeur) {
$valeur = str_replace("*","%",$valeur);
$valeur = $this->proteger('%'.$valeur.'%');
$valeur = Cel::db()->proteger('%'.$valeur.'%');
$sous_requete = "(nom_sel LIKE ".$valeur.
" OR courriel_utilisateur LIKE ".$valeur.
" OR prenom_utilisateur LIKE ".$valeur.
307,17 → 307,17
if (preg_match('/.*OU.*/', $mot_cle)) {
$mots_cles_tab = explode('OU',$mot_cle);
foreach($mots_cles_tab as $mot_cle_item) {
$requete .= '(mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') OR ';
$requete .= '(mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') OR ';
}
$requete = '('.rtrim($requete,'OR ').')';
} else if (preg_match('/.*ET.*/', $mot_cle)) {
$mots_cles_tab = explode('ET',$mot_cle);
foreach($mots_cles_tab as $mot_cle_item) {
$requete .= '(mots_cles_texte LIKE '.$this->proteger('%'.$mot_cle_item.'%').') AND ';
$requete .= '(mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') AND ';
}
$requete = '('.rtrim($requete, 'AND ').') ';
} else {
$requete = "(mots_cles_texte LIKE ".$this->proteger('%'.$mot_cle.'%').') ';
$requete = "(mots_cles_texte LIKE ".Cel::db()->proteger('%'.$mot_cle.'%').') ';
}
return $requete;
}
332,7 → 332,7
'jour' => 'date_observation',
'departement' => 'ce_zone_geo',
'commune' => 'zone_geo');
return $sous_requete .= $champs[$valeur]." = ".$this->proteger("");
return $sous_requete .= $champs[$valeur]." = ".Cel::db()->proteger("");
}
}
?>
/trunk/jrest/lib/GestionImage.php
69,7 → 69,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 = $this->executerRequeteSimple($requete_insertion_infos_image);
$resultat_insertion_infos_image = Cel::db()->executerRequeteSimple($requete_insertion_infos_image);
 
if (!$resultat_insertion_infos_image) {
$message = "Echec de l'insertion dans la base de donnees : " ;
99,8 → 99,8
 
$nouvel_ordre = 0 ;
$requete_selection_ordre_max ='SELECT MAX(ordre) as max_ordre FROM cel_images WHERE ce_utilisateur = '.$this->proteger($id_utilisateur) ;
$resultat_requete_ordre_max = $this->executerRequete($requete_selection_ordre_max);
$requete_selection_ordre_max ='SELECT MAX(ordre) as max_ordre FROM cel_images WHERE ce_utilisateur = '.Cel::db()->proteger($id_utilisateur) ;
$resultat_requete_ordre_max = Cel::db()->executerRequete($requete_selection_ordre_max);
if($resultat_requete_ordre_max !== false) {
$nouvel_ordre = $resultat_requete_ordre_max[0]['max_ordre'];
114,8 → 114,8
$id_image = false;
$requete_id_image ='SELECT id_image FROM cel_images WHERE ce_utilisateur = '.$this->proteger($id_utilisateur).' AND ordre = '.$ordre ;
$resultat_id_image = $this->executerRequete($requete_id_image);
$requete_id_image ='SELECT id_image FROM cel_images WHERE ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).' AND ordre = '.$ordre ;
$resultat_id_image = Cel::db()->executerRequete($requete_id_image);
 
if (count($resultat_id_image) > 0)
{
142,7 → 142,7
}
else
{
$valeurs_a_inserer .= $this->proteger($valeur).',' ;
$valeurs_a_inserer .= Cel::db()->proteger($valeur).',' ;
}
}
 
173,10 → 173,10
$champs_a_mettre_a_jour = $this->construireRequeteMajMetaDonnees($parametres);
$requete_mise_a_jour_image .= $champs_a_mettre_a_jour;
 
$requete_mise_a_jour_image .= ' WHERE id_image = '.$this->proteger($id_image).
' AND ce_utilisateur = '.$this->proteger($utilisateur);
$requete_mise_a_jour_image .= ' WHERE id_image = '.Cel::db()->proteger($id_image).
' AND ce_utilisateur = '.Cel::db()->proteger($utilisateur);
 
$resultat_mise_a_jour = $this->executerRequeteSimple($requete_mise_a_jour_image);
$resultat_mise_a_jour = Cel::db()->executerRequeteSimple($requete_mise_a_jour_image);
return ($resultat_mise_a_jour !== false);
}
203,11 → 203,11
$date_tab = explode('/',$valeur) ;
$date = $date_tab[2].'-'.$date_tab[1].'-'.$date_tab[0] ;
$requete_maj_champs .= $champ.' = '.$this->proteger($date).' , ' ;
$requete_maj_champs .= $champ.' = '.Cel::db()->proteger($date).' , ' ;
}
else {
$requete_maj_champs .= $champ.' = '.$this->proteger($valeur).' , ' ;
$requete_maj_champs .= $champ.' = '.Cel::db()->proteger($valeur).' , ' ;
}
}
}
220,17 → 220,17
public function supprimerImageParOrdre($id_utilisateur, $ordre_image_ou_tableau) {
if(is_array($ordre_image_ou_tableau)) {
$id_image_ou_tableau = array_map(array($this,'proteger'),$ordre_image_ou_tableau);
$id_image_ou_tableau = array_map(array(Cel::db(),'proteger'),$ordre_image_ou_tableau);
$ids_images = implode(',',$ordre_image_ou_tableau);
} else {
$ids_images = $this->proteger($ordre_image_ou_tableau);
$ids_images = Cel::db()->proteger($ordre_image_ou_tableau);
}
$requete_selection_ids_images = 'SELECT id_image FROM cel_images WHERE '.
'ce_utilisateur = '.$this->proteger($id_utilisateur).' '.
'ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).' '.
'AND ordre IN ('.$ids_images.') ';
$tableau_ids_images = $this->executerRequete($requete_selection_ids_images);
$tableau_ids_images = Cel::db()->executerRequete($requete_selection_ids_images);
$chaine_ids_images = '';
foreach($tableau_ids_images as $id_image) {
$chaine_ids_images .= $id_image['id_image'];
244,10 → 244,10
public function supprimerImage($id_utilisateur, $id_image_ou_tableau) {
if(is_array($id_image_ou_tableau)) {
$id_image_ou_tableau = array_map(array($this,'proteger'),$id_image_ou_tableau);
$id_image_ou_tableau = array_map(array(Cel::db(),'proteger'),$id_image_ou_tableau);
$chaine_ids_images = implode(',',$id_image_ou_tableau);
} else {
$chaine_ids_images = $this->proteger($id_image_ou_tableau);
$chaine_ids_images = Cel::db()->proteger($id_image_ou_tableau);
}
$requete_suppression_images = "DELETE FROM cel_images WHERE id_image in (".$chaine_ids_images.")";
255,9 → 255,9
$requete_suppression_lien_images_obs = "DELETE FROM cel_obs_images WHERE id_image in (".$chaine_ids_images.")";
$requete_suppression_lien_images_mots_cles = "DELETE FROM cel_images_mots_cles WHERE id_image in (".$chaine_ids_images.")";
$resultat_suppression_image = $this->executerRequeteSimple($requete_suppression_images);
$resultat_suppression_lien_images_obs = $this->executerRequeteSimple($requete_suppression_lien_images_obs);
$resultat_suppression_lien_images_mots_cles = $this->executerRequeteSimple($requete_suppression_lien_images_mots_cles);
$resultat_suppression_image = Cel::db()->executerRequeteSimple($requete_suppression_images);
$resultat_suppression_lien_images_obs = Cel::db()->executerRequeteSimple($requete_suppression_lien_images_obs);
$resultat_suppression_lien_images_mots_cles = Cel::db()->executerRequeteSimple($requete_suppression_lien_images_mots_cles);
if ($resultat_suppression_image === false) {
$message = 'Erreur lors de la suppression de l\'image' ;
295,13 → 295,13
// ATTENTION : cette fonction suppose que l'utilisateur n'ai pas déjà d'images dans le CEL
// avec l'identifiant $id_utilisateur ce qui est normalement le cas
$requete_migration_releve = 'UPDATE cel_images SET '.
'ce_utilisateur = '.$this->proteger($infos_utilisateur['id_utilisateur']).', '.
'prenom_utilisateur = '.$this->proteger($infos_utilisateur['prenom']).', '.
'nom_utilisateur = '.$this->proteger($infos_utilisateur['nom']).', '.
'courriel_utilisateur = '.$this->proteger($infos_utilisateur['courriel']).' '.
'WHERE ce_utilisateur = '.$this->proteger($mail_utilisateur).' ';
'ce_utilisateur = '.Cel::db()->proteger($infos_utilisateur['id_utilisateur']).', '.
'prenom_utilisateur = '.Cel::db()->proteger($infos_utilisateur['prenom']).', '.
'nom_utilisateur = '.Cel::db()->proteger($infos_utilisateur['nom']).', '.
'courriel_utilisateur = '.Cel::db()->proteger($infos_utilisateur['courriel']).' '.
'WHERE ce_utilisateur = '.Cel::db()->proteger($mail_utilisateur).' ';
$migration_releve = $this->executerRequeteSimple($requete_migration_releve);
$migration_releve = Cel::db()->executerRequeteSimple($requete_migration_releve);
return $migration_releve;
}
/trunk/scripts/modules/maj-code-DB-access-201307.sh
New file
0,0 → 1,49
#!/bin/bash
# @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>
# @copyright © 2013, Tela Botanica
 
# Met à jour les appels à la database via l'instance $this de Cel
# pour y substituer le singleton Cel::db()
# À lancer dans le répertoire racine.
 
# fichiers à traiter (dans jrest/)
fichiers=$(grep -rl 'extends Cel' jrest)
 
# liste des fonctions à substituer, obtenue à partir de:
# grep -A1 'delete wrappers' jrest/lib/Cel.php |grep 'function.*()'|awk -F '[ (]' '{print $3}'
wrappers=( requeter executer protegerRequete proteger executerRequeteSimple executerRequete getTxt )
chaine=$(export IFS='|'; echo "${wrappers[*]}");
 
 
# Les fichiers qui définissent ou redéfinissent l'une de ces fonctions doivent être modifiés à la main
# car il est légitime pour eux d'utiliser $this
a_exclure=$(grep -rEl "function ($chaine)\(" jrest)
# (ils représentent 10 occurences du pattern)
# en réalité les fichiers dans scripts/ n'ont pas besoin d'être modifiés
 
# la liste refiltrée des fichiers
fichiers=$(echo "$fichiers"|fgrep -v -f <(echo "$a_exclure"))
echo -e "a modifier manuellement:\n$a_exclure" >&2
 
 
# 3 backslashes:
# 1 pour ne pas interpréter $this par bash entre les ""
# 1 autre en tant que simple bashslash (donc doublé) pour éviter que sed ne considère '$' comme fin de ligne
 
# Première regexp:
# 0 substitutions, car seuls les fichiers dans scripts/ l'utilisent
# or ils n'étendent pas la classe Cel
# sed -E "s;\\\$this->bdd->($chaine)\(;Cel::db()->\1(;g" $fichiers
 
# Seconde regexp
# 489 substitutions:
# sed -nE "s;\\\$this->($chaine)\(;Cel::db()->\1(;gp" $fichiers
sed -i -E "s;\\\$this->($chaine)\(;Cel::db()->\1(;g" $fichiers
 
 
# Troisième passe: substitution de $this->bdd->quote()
# 25 substitutions
fichiers_quote=$(grep -rl '$this->bdd->quote(' jrest/services)
sed -i -E 's;\$this->bdd->quote\(;Cel::db()->quote(;g' $fichiers_quote
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:eol-style
+native
\ No newline at end of property
/trunk/src/org/tela_botanica/client/vues/image/GalerieImageVue.java
Property changes:
Deleted: svn:mergeinfo
/trunk/widget/modules/saisie
Property changes:
Modified: svn:mergeinfo
Merged /branches/topic-dbsingleton/widget/modules/saisie:r1720-1764
/trunk
Property changes:
Added: svn:mergeinfo
Merged /branches/topic-dbsingleton:r1720-1764