work on db interface
This commit is contained in:
parent
975f8c9b4b
commit
2517034936
|
@ -8,16 +8,15 @@ class ComicPressDBInterface {
|
||||||
function get_instance() {
|
function get_instance() {
|
||||||
static $instance;
|
static $instance;
|
||||||
|
|
||||||
if (!isset($instance)) {
|
if (!isset($instance)) { $instance = new ComicPressDBInterface(); }
|
||||||
$instance = new ComicPressDBInterface();
|
|
||||||
}
|
|
||||||
return $instance;
|
return $instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
function _get_categories() {
|
function _get_categories() { return get_categories("hide_empty=0"); }
|
||||||
return get_categories("hide_empty=0");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the comic categories for the current run of ComicPress.
|
||||||
|
*/
|
||||||
function set_comic_categories($categories) {
|
function set_comic_categories($categories) {
|
||||||
$this->_non_comic_categories = array();
|
$this->_non_comic_categories = array();
|
||||||
$this->_all_categories = array();
|
$this->_all_categories = array();
|
||||||
|
@ -27,6 +26,10 @@ class ComicPressDBInterface {
|
||||||
|
|
||||||
$this->_non_comic_categories = array_values(array_diff($this->_all_categories, $categories));
|
$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.
|
* Find the terminal post in a specific category.
|
||||||
|
@ -68,11 +71,6 @@ class ComicPressDBInterface {
|
||||||
$post = $override_post;
|
$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);
|
$result = get_adjacent_post(false, implode(" and ", $categories_to_exclude), !$next);
|
||||||
|
|
||||||
$wp_query->is_single = $temp;
|
$wp_query->is_single = $temp;
|
||||||
|
@ -93,8 +91,6 @@ class ComicPressDBInterface {
|
||||||
* Get the next comic from the current one.
|
* 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); }
|
function get_next_comic($category = null, $override_post = null) { return $this->get_adjacent_comic($category, true, $override_post); }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
|
@ -30,6 +30,24 @@ class ComicPressDBInterfaceTest extends PHPUnit_Framework_TestCase {
|
||||||
$this->assertEquals(array(1,2,3,4), $dbi->_all_categories);
|
$this->assertEquals(array(1,2,3,4), $dbi->_all_categories);
|
||||||
$this->assertEquals(array(1,4), $dbi->_non_comic_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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
Loading…
Reference in New Issue