diff --git a/classes/ComicPressDBInterface.inc b/classes/ComicPressDBInterface.inc index 1c0070e..1e52c64 100644 --- a/classes/ComicPressDBInterface.inc +++ b/classes/ComicPressDBInterface.inc @@ -8,16 +8,15 @@ class ComicPressDBInterface { function get_instance() { static $instance; - if (!isset($instance)) { - $instance = new ComicPressDBInterface(); - } + if (!isset($instance)) { $instance = new ComicPressDBInterface(); } return $instance; } - function _get_categories() { - return get_categories("hide_empty=0"); - } + function _get_categories() { return get_categories("hide_empty=0"); } + /** + * Set the comic categories for the current run of ComicPress. + */ function set_comic_categories($categories) { $this->_non_comic_categories = array(); $this->_all_categories = array(); @@ -27,6 +26,10 @@ class ComicPressDBInterface { $this->_non_comic_categories = array_values(array_diff($this->_all_categories, $categories)); } + + function _get_categories_to_exclude($category = null) { + return (is_null($category)) ? $this->_non_comic_categories : array_values(array_diff($this->_all_categories, array($category))); + } /** * Find the terminal post in a specific category. @@ -68,11 +71,6 @@ class ComicPressDBInterface { $post = $override_post; } - $categories_to_exclude = $this->get_leaves_of_tree($this->non_comic_categories); - if (!is_null($category)) { - $categories_to_exclude = $this->exclude_all_but_provided_categories($category); - } - $result = get_adjacent_post(false, implode(" and ", $categories_to_exclude), !$next); $wp_query->is_single = $temp; @@ -93,8 +91,6 @@ class ComicPressDBInterface { * Get the next comic from the current one. */ function get_next_comic($category = null, $override_post = null) { return $this->get_adjacent_comic($category, true, $override_post); } - - } ?> \ No newline at end of file diff --git a/test/ComicPressDBInterfaceTest.php b/test/ComicPressDBInterfaceTest.php index 8bcbf04..d63f137 100644 --- a/test/ComicPressDBInterfaceTest.php +++ b/test/ComicPressDBInterfaceTest.php @@ -30,6 +30,24 @@ class ComicPressDBInterfaceTest extends PHPUnit_Framework_TestCase { $this->assertEquals(array(1,2,3,4), $dbi->_all_categories); $this->assertEquals(array(1,4), $dbi->_non_comic_categories); } + + function providerTestGetCategoriesToExclude() { + return array( + array(null, array(1 ,4)), + array(2, array(1, 3, 4)), + ); + } + + /** + * @dataProvider providerTestGetCategoriesToExclude + */ + function testGetCategoriesToExclude($category, $expected_results) { + $dbi = ComicPressDBInterface::get_instance(); + $dbi->_all_categories = array(1,2,3,4); + $dbi->_non_comic_categories = array(1,4); + + $this->assertEquals($expected_results, $dbi->_get_categories_to_exclude($category)); + } } ?> \ No newline at end of file