[SPIP] ~2.1.12 -->2.1.25
[velocampus/web/www.git] / www / ecrire / req / sqlite_generique.php
index 96116f9..ea8a9f5 100644 (file)
@@ -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);
        }