From de8894efc5cf127747810e09fd2b3316be4983bb Mon Sep 17 00:00:00 2001
From: Matthieu Marcillaud <marcimat@rezo.net>
Date: Sun, 10 May 2009 21:13:37 +0000
Subject: [PATCH] =?UTF-8?q?-=20donner=20=C3=A0=20sqlite2=20des=20sql=5Fsee?=
 =?UTF-8?q?k()=20fonctionnels=20-=20donner=20=C3=A0=20sqlite3=20des=20sql?=
 =?UTF-8?q?=5Fseek()=20fonctionnels=20aussi,=20mais=20lui,=20c'est=20tr?=
 =?UTF-8?q?=C3=A8s=20tordu,=20une=20nouvelle=20fois=20=C3=A0=20cause=20des?=
 =?UTF-8?q?=20limitations=20de=20la=20classe=20PDO...?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/req/sqlite_generique.php | 28 +++++++++++++++++++---------
 1 file changed, 19 insertions(+), 9 deletions(-)

diff --git a/ecrire/req/sqlite_generique.php b/ecrire/req/sqlite_generique.php
index f5ca191ed0..10f9222756 100644
--- a/ecrire/req/sqlite_generique.php
+++ b/ecrire/req/sqlite_generique.php
@@ -621,18 +621,25 @@ function spip_sqlite_seek($r, $row_number, $serveur='',$requeter=true) {
 	if ($r){
 		$link = _sqlite_link($serveur);
 		if (_sqlite_is_version(3, $link)){
-			if ($numrow==0) {
-				return $r->rewind();
-			} else {
-				return $r->seek($numrow);
+			// encore un truc de bien fichu : PDO ne PEUT PAS faire de seek ou de rewind...
+			// je me demande si pour sqlite 3 il ne faudrait pas mieux utiliser
+			// les nouvelles fonctions sqlite3_xx (mais encore moins presentes...)
+
+			// 1. on refait la requete = remise a zero
+			// 2. on boucle a n-1 d'ou on souhaite aller...
+			// (oui oui, c'est beau !)
+			$requete = new sqlite_traiter_requete($r->queryString, $serveur);
+			// pas besoin de traduire, ca a deja ete fait...
+			# $requete->traduire_requete(); // mysql -> sqlite
+			# if (!$requeter) return $requete->query;
+			$requete->executer_requete();
+			while ($row_number--) {
+				$x = $r->fetch();
 			}
+			return true;
 		}
 		else {
-			if ($numrow==0) {
-				return sql_rewind($result);
-			} else {
-				return sql_seek($result, $numrow);
-			}
+			return sqlite_seek($r, $row_number);
 		}
 	}
 }
@@ -1610,6 +1617,9 @@ class sqlite_traiter_requete{
 		if ($this->link){
 			if ($this->sqlite_version == 3) {
 				$r = $this->link->query($this->query);
+				// sauvegarde de la requete (elle y est deja dans $r->queryString)
+				# $r->spipQueryString = $this->query;
+
 				// comptage : oblige de compter le nombre d'entrees retournees 
 				// par une requete SELECT
 				// aucune autre solution ne donne le nombre attendu :( !
-- 
GitLab