From 4f40c2457c53ea090479595888a078813a8c8e3f Mon Sep 17 00:00:00 2001 From: John Bintz Date: Thu, 22 Oct 2009 06:56:53 -0400 Subject: [PATCH] add current storyline helper method --- classes/ComicPressDBInterface.inc | 2 ++ classes/ComicPressNavigation.inc | 8 ++++++++ classes/ComicPressStoryline.inc | 11 ++++++----- test/ComicPressStorylineTest.php | 10 +++++----- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/classes/ComicPressDBInterface.inc b/classes/ComicPressDBInterface.inc index 25e088e..2019493 100644 --- a/classes/ComicPressDBInterface.inc +++ b/classes/ComicPressDBInterface.inc @@ -30,6 +30,8 @@ class ComicPressDBInterface { * Find the terminal post in a specific category. */ function get_terminal_post_in_category($category_id, $first = true) { + global $wp_query; + $temp = $wp_query; $wp_query = null; $sort_order = $first ? "asc" : "desc"; $terminal_comic_query = new WP_Query(); diff --git a/classes/ComicPressNavigation.inc b/classes/ComicPressNavigation.inc index fa37995..7817458 100644 --- a/classes/ComicPressNavigation.inc +++ b/classes/ComicPressNavigation.inc @@ -34,9 +34,17 @@ class ComicPressNavigation { if (is_array($valid = $this->_storyline->valid($category))) { foreach ($valid as $field) { $nav["storyline-chapter-${field}"] = $this->_dbi->get_first_comic($this->_storyline->{$field}($category)); + + if ($field == "previous") { + if ($post->ID != $nav['storyline-chapter-current']) { + $nav['storyline-chapter-previous'] = $nav['storyline-chapter-current']; + } + } } } } + + return $nav; } } diff --git a/classes/ComicPressStoryline.inc b/classes/ComicPressStoryline.inc index 0b9273a..6b782b5 100644 --- a/classes/ComicPressStoryline.inc +++ b/classes/ComicPressStoryline.inc @@ -18,9 +18,9 @@ class ComicPressStoryline { $adjacents_by_parent = array(); - if (is_string($structure)) { - $structure = explode(',', $structure); - } + if (is_string($structure)) { + $structure = explode(',', $structure); + } if (is_array($structure)) { $is_valid = true; @@ -65,7 +65,7 @@ class ComicPressStoryline { } } } - + $this->_structure = $new_structure; } } @@ -83,12 +83,13 @@ class ComicPressStoryline { return false; } + function current($id) { return $id; } function parent($id) { return $this->_get_field('parent', $id); } function previous($id) { return $this->_get_field('previous', $id); } function next($id) { return $this->_get_field('next', $id); } function valid($id) { if (isset($this->_structure[$id])) { - return array_keys($this->_structure[$id]); + return array_merge(array_keys($this->_structure[$id]), array('current')); } return false; } diff --git a/test/ComicPressStorylineTest.php b/test/ComicPressStorylineTest.php index f28a464..d97b641 100644 --- a/test/ComicPressStorylineTest.php +++ b/test/ComicPressStorylineTest.php @@ -96,7 +96,7 @@ class ComicPressStorylineTest extends PHPUnit_Framework_TestCase { array('parent', 2, 1), array('next', 2, 3), array('next', 3, 4), - array('valid', 1, array('next')), + array('valid', 1, array('next', 'current')), array('valid', 6, false), ); } @@ -117,11 +117,11 @@ class ComicPressStorylineTest extends PHPUnit_Framework_TestCase { function providerTestGetValidNav() { return array( - array(array(1), array('next')), + array(array(1), array('next', 'current')), array(array(1,2), false), - array(array(1,4), array('next')), - array(array(2), array('previous', 'next')), - array(array(3), array('previous')), + array(array(1,4), array('next', 'current')), + array(array(2), array('previous', 'next', 'current')), + array(array(3), array('previous', 'current')), ); }