summaryrefslogtreecommitdiff
path: root/modules/gallery/libraries
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2011-08-08 20:28:31 -0700
committerTim Almdal <tnalmdal@shaw.ca>2011-08-11 22:04:03 -0700
commit67719c6f610a71c1bc12d5126e0adac84d7b85c6 (patch)
tree09b027a42a13f464d0c88a29c548654dd60bd908 /modules/gallery/libraries
parent23b1ed4108e439bec6ea9594d7918d846630061d (diff)
Simplification of 59b04b897b8a664cd7334b017fac8158a6281434 for #1764:
- Breadcrumb::build_from_item becomes Breadcrumb::array_from_item_parents - Eliminate Breadcrumb::$id -- it's no longer necessary - Fold Breadcrumb::generate_show_query_strings into Breadcrumb::array_from_item_parents - Create Breadcrumb::set_first() and Breadcrumb::set_last() - Breadcrumb::build_from_list goes away, we just use arrays for this - Change Search_Controller and Tag_Controller to just create an array of Breadcrumb instances with the first/last marked appropriately - Breadcrumb_Test loses a bunch of complexity.
Diffstat (limited to 'modules/gallery/libraries')
-rw-r--r--modules/gallery/libraries/Breadcrumb.php70
1 files changed, 33 insertions, 37 deletions
diff --git a/modules/gallery/libraries/Breadcrumb.php b/modules/gallery/libraries/Breadcrumb.php
index 3a2499ba..e151890d 100644
--- a/modules/gallery/libraries/Breadcrumb.php
+++ b/modules/gallery/libraries/Breadcrumb.php
@@ -20,55 +20,51 @@
class Breadcrumb_Core {
public $title;
public $url;
- public $id;
public $first;
public $last;
- static function build_from_item($item) {
- $breadcrumbs = array();
- foreach ($item->parents() as $element) {
- $breadcrumbs[] = new Breadcrumb($element->title, $element->url(), $element->id);
- }
-
- if (!empty($breadcrumbs)) {
- $breadcrumbs[] = new Breadcrumb($item->title, $item->url(), $item->id);
- }
+ static function instance($title, $url) {
+ return new Breadcrumb($title, $url);
+ }
- return self::generate_show_query_strings($breadcrumbs);
+ public function __construct($title, $url) {
+ $this->title = $title;
+ $this->url = $url;
+ $this->first = false;
+ $this->last = false;
}
/**
- * This static function takes a list (variable arguments) of Breadcrumbs and builds a dynamic
- * breadcrumb list. Used to create a breadcrumb for dynamic albums. Will really be useful
- * for the display context change.
+ * Return an array of Breadcrumb instances build from the parents of a given item.
+ * The first and last Breadcrumb instances will be marked first/last as appropriate.
+ * Each breadcrumb will have a ?show= query parameter that refers to the id of the next
+ * item in line.
+ *
+ * @return array Breadcrumb instances
*/
- static function build_from_list() {
- return self::generate_show_query_strings(func_get_args());
- }
-
- private static function generate_show_query_strings($breadcrumbs) {
- if (!empty($breadcrumbs)) {
+ static function array_from_item_parents($item) {
+ if ($item->id == item::root()->id) {
+ return array();
+ }
- end($breadcrumbs)->last = true;;
- while ($breadcrumb = current($breadcrumbs)) {
- if (isset($last_id) && $last_id > 0) {
- $query = parse_url($breadcrumb->url, PHP_URL_QUERY);
- $breadcrumb->url = $breadcrumb->url . ($query ? "&" : "?") . "show={$last_id}";
- }
- $last_id = $breadcrumb->id;
- $breadcrumb = prev($breadcrumbs);
- }
- $breadcrumbs[0]->first = true;
+ $bc = array_merge($item->parents()->as_array(), array($item));
+ for ($i = 0; $i < count($bc) - 1; $i++) {
+ $bc[$i] = new Breadcrumb($bc[$i]->title, $bc[$i]->url("show={$bc[$i+1]->id}"));
}
+ $bc[$i] = new Breadcrumb($item->title, $item->url());
- return $breadcrumbs;
+ $bc[0]->set_first();
+ end($bc)->set_last();
+ return $bc;
}
- public function __construct($title, $url, $id=0) {
- $this->title = $title;
- $this->url = $url;
- $this->id = $id;
- $this->first = false;
- $this->last = false;
+ public function set_first() {
+ $this->first = true;
+ return $this;
+ }
+
+ public function set_last() {
+ $this->last = true;
+ return $this;
}
}