public static function executeQuery($query, $columns, $filter, $params, $n, $database = NULL, $numberPerPage = NULL) { $totalResult = -1; if (useNormAndUp()) { $query = preg_replace("/upper/", "normAndUp", $query); $columns = preg_replace("/upper/", "normAndUp", $columns); } if (is_null($numberPerPage)) { $numberPerPage = getCurrentOption("max_item_per_page"); } if ($numberPerPage != -1 && $n != -1) { // First check total number of results $result = self::getDb($database)->prepare(str_format($query, "count(*)", $filter)); $result->execute($params); $totalResult = $result->fetchColumn(); // Next modify the query and params $query .= " limit ?, ?"; array_push($params, ($n - 1) * $numberPerPage, $numberPerPage); } $result = self::getDb($database)->prepare(str_format($query, $columns, $filter)); $result->execute($params); return array($totalResult, $result); }
/** * @dataProvider providerNormalizedSearch */ public function testPageSearch_WithNormalizedSearch_Book($query, $count, $content) { global $config; $page = Base::PAGE_OPENSEARCH_QUERY; $qid = NULL; $n = "1"; $config['cops_normalized_search'] = "1"; Base::clearDb(); if (!useNormAndUp()) { $this->markTestIncomplete(); } $currentPage = Page::getPage($page, $qid, $query, $n); $currentPage->InitializeContent(); $this->assertEquals("Search result for *{$query}*", $currentPage->title); $this->assertCount($count, $currentPage->entryArray); if ($count > 0) { $this->assertEquals($content, $currentPage->entryArray[0]->content); } $this->assertFalse($currentPage->ContainsBook()); $config['cops_normalized_search'] = "0"; Base::clearDb(); }