X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Freq%2Fsqlite_generique.php;fp=www%2Fecrire%2Freq%2Fsqlite_generique.php;h=ea8a9f593df1195396cc5e89e4fc157465bc046c;hp=96116f9adf7b1e1c5cd4f252b50787fba1a410c8;hb=e99f0878011913365e49b30d90e496c24c301393;hpb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed diff --git a/www/ecrire/req/sqlite_generique.php b/www/ecrire/req/sqlite_generique.php index 96116f9..ea8a9f5 100644 --- a/www/ecrire/req/sqlite_generique.php +++ b/www/ecrire/req/sqlite_generique.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2011 * + * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -1309,16 +1309,16 @@ function _sqlite_charger_version($version=''){ function _sqlite_modifier_table($table, $colonne, $opt=array(), $serveur=''){ if (is_array($table)) { - $table_origine = array_shift(array_keys($table)); - $table_destination = array_shift($table); + reset($table); + list($table_origine,$table_destination) = each($table); } else { $table_origine = $table_destination = $table; } // ne prend actuellement qu'un changement // mais pourra etre adapte pour changer plus qu'une colonne a la fois if (is_array($colonne)) { - $colonne_origine = array_shift(array_keys($colonne)); - $colonne_destination = array_shift($colonne); + reset($colonne); + list($colonne_origine,$colonne_destination) = each($colonne); } else { $colonne_origine = $colonne_destination = $colonne; } @@ -1666,7 +1666,6 @@ class sqlite_traiter_requete{ // Pour les corrections a effectuer sur les requetes : var $textes = array(); // array(code=>'texte') trouvé - var $codeEchappements = "%@##@%"; // constructeur @@ -1749,16 +1748,13 @@ class sqlite_traiter_requete{ // enleve les textes, transforme la requete pour quelle soit // bien interpretee par sqlite, puis remet les textes // la fonction affecte $this->query -// http://doc.spip.org/@traduire_requete + // http://doc.spip.org/@traduire_requete function traduire_requete(){ // // 1) Protection des textes en les remplacant par des codes // - // enlever les echappements '' - $this->query = str_replace("''", $this->codeEchappements, $this->query); - // enlever les 'textes' - $this->textes = array(); // vider - $this->query = preg_replace_callback("/('[^']*')/", array(&$this, '_remplacerTexteParCode'), $this->query); + // enlever les 'textes' et initialiser avec + list($this->query, $textes) = query_echappe_textes($this->query); // // 2) Corrections de la requete @@ -1859,12 +1855,12 @@ class sqlite_traiter_requete{ // // 3) Remise en place des textes d'origine // - // remettre les 'textes' - foreach ($this->textes as $cle=>$val){ - $this->query = str_replace($cle, $val, $this->query); - } - // remettre les echappements '' - $this->query = str_replace($this->codeEchappements,"''",$this->query); + // Correction Antiquotes et echappements + // ` => rien + if (strpos($this->query,'`')!==false) + $this->query = str_replace('`','', $this->query); + + $this->query = query_reinjecte_textes($this->query, $textes); }