diff --git a/functions.inc.php b/functions.inc.php index 1dab63ba..8a40d6a0 100644 --- a/functions.inc.php +++ b/functions.inc.php @@ -548,9 +548,11 @@ function create_page_browser($idxfield, $querypart, $sql_params = []) { } if (db_sqlite()) { + $bits = explode('.', $idxfield); + $end = $bits[1]; $query = " WITH idx AS (SELECT * $querypart) - SELECT $idxfield AS label, (SELECT (COUNT(*) - 1) FROM idx t1 WHERE t1.$idxfield <= t2.$idxfield) AS row + SELECT $end AS label, (SELECT (COUNT(*) - 1) FROM idx t1 WHERE t1.$end <= t2.$end ) AS row FROM idx t2 WHERE (row % $page_size) IN (0,$page_size_zerobase) OR row = $count_results"; } diff --git a/tests/CreatePageBrowserTest.php b/tests/CreatePageBrowserTest.php index 55292edb..53081d89 100644 --- a/tests/CreatePageBrowserTest.php +++ b/tests/CreatePageBrowserTest.php @@ -3,11 +3,11 @@ class CreatePageBrowserTest extends \PHPUnit\Framework\TestCase { public function testBasic() { global $CONF; - $CONF['page_size'] = 5; + $CONF['page_size'] = 10; - // insert some data. - foreach (range(1,10) as $i) { - $username = 'pbt' . $i; + // insert some data. + foreach (range(1,100) as $i) { + $username = md5(random_int(0, 999999)); $this->assertEquals(1, db_insert( @@ -25,8 +25,11 @@ class CreatePageBrowserTest extends \PHPUnit\Framework\TestCase { } // this breaks on sqlite atm. - $b = create_page_browser('mailbox.username FROM mailbox', 'WHERE 1 = 1' ); - + $b = create_page_browser('mailbox.username', 'FROM mailbox WHERE 1 = 1'); + $this->assertEquals(10, sizeof($b)); + foreach($b as $range) { + $this->assertRegExp('/[\w]{2}\-[\w]{2}/', $range); + } $this->assertNotEmpty($b); } }