From d8a338d3458282912719d441d973125771d1e54a Mon Sep 17 00:00:00 2001 From: Rogiel Sulzbach Date: Sun, 23 Nov 2014 15:48:37 -0200 Subject: [PATCH] Implements pagination --- examples/SimpleSearch.php | 4 +++- src/Adapter/Adapter.php | 17 +++++++++++------ src/Adapter/OrlyDB.php | 10 ++++------ src/PreDB.php | 29 +++++++++++++++++------------ 4 files changed, 35 insertions(+), 25 deletions(-) diff --git a/examples/SimpleSearch.php b/examples/SimpleSearch.php index f5d046d..c2ace14 100644 --- a/examples/SimpleSearch.php +++ b/examples/SimpleSearch.php @@ -37,6 +37,8 @@ use PreDB\PreDB; // This example does a simple search for an pre release $db = new PreDB(); -print_r($db->search("Microsoft Windows")); + +$result = $db->search("Microsoft Windows"); +var_dump($result); ?> \ No newline at end of file diff --git a/src/Adapter/Adapter.php b/src/Adapter/Adapter.php index 5435a7f..237369a 100644 --- a/src/Adapter/Adapter.php +++ b/src/Adapter/Adapter.php @@ -1,4 +1,5 @@ * All rights reserved. @@ -28,12 +29,11 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - namespace PreDB\Adapter; /** * The pre adapter interface - * + * * @author Rogiel * @since 1.0 */ @@ -41,13 +41,18 @@ interface Adapter { /** * Implements the underlying search method - * - * @param string $release + * + * @param string $release + * @param int $page + * the page to return */ - function search($release); + function search($release, $page = 1); /** * Implements the underlying latest method + * + * @param int $page + * the page to load */ - function latest(); + function latest($page = 1); } diff --git a/src/Adapter/OrlyDB.php b/src/Adapter/OrlyDB.php index 198e0a8..6a447dd 100644 --- a/src/Adapter/OrlyDB.php +++ b/src/Adapter/OrlyDB.php @@ -32,10 +32,8 @@ namespace PreDB\Adapter; use PreDB\Release; - use DOMDocument; use DOMXPath; - use DateTime; use DateTimeZone; @@ -48,13 +46,13 @@ use DateTimeZone; */ class OrlyDB implements Adapter { - public function latest() { - $html = file_get_contents("http://orlydb.com/1"); + public function latest($page = 1) { + $html = file_get_contents("http://orlydb.com/" . $page); return $this->parseList($html); } - public function search($release) { - $html = file_get_contents("http://orlydb.com/?q=" . urlencode($release)); + public function search($release, $page = 1) { + $html = file_get_contents("http://orlydb.com/{$page}?q=" . urlencode($release)); return $this->parseList($html); } diff --git a/src/PreDB.php b/src/PreDB.php index 26abc6d..e712464 100644 --- a/src/PreDB.php +++ b/src/PreDB.php @@ -1,4 +1,5 @@ * All rights reserved. @@ -28,7 +29,6 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - namespace PreDB; use PreDB\Adapter\Adapter; @@ -41,33 +41,35 @@ class PreDB { * @var Adapter */ private $adapter; - + /** * Creates a new instance * * @param Adapter $adapter * the adapter to use. If none is provided an default is used. */ - public function __construct($adapter = null) { + public function __construct(Adapter $adapter = null) { if ($adapter == null) { $adapter = new \PreDB\Adapter\OrlyDB(); } $this->adapter = $adapter; } - + /** * Searches the pre database for certain releases * - * @param - * string, SearchHelper $query the query + * @param string|SearchHelper $query + * the query + * @param int $page + * the page to return */ - public function search($query) { + public function search($query, $page = 1) { if ($query instanceof SearchHelper) { $query = $query->getSearchQuery(); } - return $this->adapter->search($query); + return $this->adapter->search($query, $page); } - + /** * Searches the pre database for an certain release * @@ -79,11 +81,14 @@ class PreDB { $releases = $this->adapter->search($release); return predb_find_suitable_release($release, $releases); } - + /** * Retrieve the latest pre entries from the database + * + * @param int $page + * the page to load */ - public function latest() { - return $this->adapter->latest(); + public function latest($page = 1) { + return $this->adapter->latest($page); } } \ No newline at end of file