summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2013-02-09 14:53:34 -0500
committerBharat Mediratta <bharat@menalto.com>2013-02-09 14:53:34 -0500
commit9dbe2e15ad9db3b2be53e46bc5f67d382fb4089d (patch)
tree1b1fe0198ac31ca33ddca3f8da302d26c977d70b
parent8c5d5525d0b5602e125b5c9784a7c88b9f63a303 (diff)
Extend siblings callbacks to take a $limit and an $offset for navigating
large sibling sets. Useful for the thumbnav module since we don't want to iterate a thousand siblings to find the one we care about. Fixes #1999.
-rw-r--r--modules/gallery/controllers/albums.php4
-rw-r--r--modules/gallery/libraries/Theme_View.php6
-rw-r--r--modules/search/controllers/search.php4
3 files changed, 8 insertions, 6 deletions
diff --git a/modules/gallery/controllers/albums.php b/modules/gallery/controllers/albums.php
index d545b415..0fb033a8 100644
--- a/modules/gallery/controllers/albums.php
+++ b/modules/gallery/controllers/albums.php
@@ -98,9 +98,9 @@ class Albums_Controller extends Items_Controller {
"breadcrumbs" => Breadcrumb::array_from_item_parents($item));
}
- static function get_siblings($item) {
+ static function get_siblings($item, $limit=null, $offset=null) {
// @todo consider creating Item_Model::siblings() if we use this more broadly.
- return $item->parent()->viewable()->children();
+ return $item->parent()->viewable()->children($limit, $offset);
}
public function create($parent_id) {
diff --git a/modules/gallery/libraries/Theme_View.php b/modules/gallery/libraries/Theme_View.php
index cf384109..986fc8a2 100644
--- a/modules/gallery/libraries/Theme_View.php
+++ b/modules/gallery/libraries/Theme_View.php
@@ -86,8 +86,10 @@ class Theme_View_Core extends Gallery_View {
return $this->item;
}
- public function siblings() {
- return call_user_func_array($this->siblings_callback[0], $this->siblings_callback[1]);
+ public function siblings($limit=null, $offset=null) {
+ return call_user_func_array(
+ $this->siblings_callback[0],
+ array_merge($this->siblings_callback[1], array($offset, $limit)));
}
public function tag() {
diff --git a/modules/search/controllers/search.php b/modules/search/controllers/search.php
index b54d7699..25ccd81c 100644
--- a/modules/search/controllers/search.php
+++ b/modules/search/controllers/search.php
@@ -110,8 +110,8 @@ class Search_Controller extends Controller {
Breadcrumb::instance($item->title, $item->url())->set_last()));
}
- static function get_siblings($q, $album) {
- $result = search::search_within_album(search::add_query_terms($q), $album, 1000, 1);
+ static function get_siblings($q, $album, $limit=1000, $offset=1) {
+ $result = search::search_within_album(search::add_query_terms($q), $album, $limit, $offset);
return $result[1];
}
}