start removing template tags
This commit is contained in:
parent
8e3108f1f9
commit
4db64182ea
141
functions.inc
141
functions.inc
@ -5,10 +5,6 @@ foreach (array(
|
||||
'Protect' => 0,
|
||||
'Restore' => 0,
|
||||
'Unprotect' => 0,
|
||||
'R' => 3,
|
||||
'RT' => 3,
|
||||
'RL' => 2,
|
||||
'In_R' => 2,
|
||||
'M' => 1,
|
||||
'EM' => 3,
|
||||
'SL' => 1,
|
||||
@ -70,143 +66,6 @@ function Unprotect() {
|
||||
$__post = $__wp_query = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the restrictions for R functions.
|
||||
* This does some pre-processing before the R functions send the restrictions off to get_${which}_post.
|
||||
* @param array $restrictions The restrictions to use to find categories.
|
||||
* @param object $override_post The post to use for restrictions that reference a post automatically.
|
||||
* @return array The list of restrictions to use.
|
||||
*/
|
||||
function __prep_R($restrictions, $post_to_use) {
|
||||
if (is_string($restrictions)) {
|
||||
switch ($restrictions) {
|
||||
case 'from_post':
|
||||
$restrictions = array('from_post' => $post_to_use);
|
||||
break;
|
||||
default:
|
||||
foreach (get_all_category_ids() as $id) {
|
||||
$category = get_category($id);
|
||||
if (strtolower($category->slug) == strtolower($restrictions)) {
|
||||
$restrictions = array('child_of' => $category->slug);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (is_array($restrictions)) {
|
||||
$new_restrictions = array();
|
||||
foreach ($restrictions as $type => $list) {
|
||||
if (is_string($list)) {
|
||||
$value = $list;
|
||||
switch ($list) {
|
||||
case '__post': $value = $post_to_use; break;
|
||||
}
|
||||
$new_restrictions[$type] = $value;
|
||||
} else {
|
||||
$new_restrictions[$type] = $list;
|
||||
}
|
||||
}
|
||||
$restrictions = $new_restrictions;
|
||||
}
|
||||
|
||||
return $restrictions;
|
||||
}
|
||||
|
||||
// @codeCoverageIgnoreStart
|
||||
|
||||
/**
|
||||
* Find a post relative to the provided post.
|
||||
* @param string $which The relative direction to search. Choices: first, last, next, previous
|
||||
* @param array $restrictions The restrictions to use to find categories.
|
||||
* @param object $override_post The post to check. If not provided, use the Loop post saved by Protect().
|
||||
* @return object|false The found post, or false if not found.
|
||||
*/
|
||||
function R($which, $restrictions = null, $override_post = null) {
|
||||
global $post;
|
||||
$post_to_use = !is_null($override_post) ? $override_post : $post;
|
||||
|
||||
$categories = RL($restrictions, $post_to_use);
|
||||
|
||||
$dbi = ComicPressDBInterface::get_instance();
|
||||
|
||||
$new_post = false;
|
||||
|
||||
switch ($which) {
|
||||
case 'first': $new_post = $dbi->get_first_post($categories); break;
|
||||
case 'last': $new_post = $dbi->get_last_post($categories); break;
|
||||
case 'next': $new_post = $dbi->get_next_post($categories, $post_to_use); break;
|
||||
case 'previous': $new_post = $dbi->get_previous_post($categories, $post_to_use); break;
|
||||
}
|
||||
|
||||
return $new_post;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find a post relative to the provided post and, if found, force the Loop to use this post for template tags.
|
||||
* @param string $which The relative direction to search. Choices: first, last, next, previous
|
||||
* @param array $restrictions The restrictions to use to find categories.
|
||||
* @param object $override_post The post to check. If not provided, use the Loop post saved by Protect().
|
||||
* @return object|false The found post that is now being used for template tags, or false if not found.
|
||||
*/
|
||||
function RT($which, $restrictions = null, $override_post = null) {
|
||||
global $post, $__post;
|
||||
if (!empty($override_post)) {
|
||||
$post_to_use = $override_post;
|
||||
} else {
|
||||
$post_to_use = (!empty($__post)) ? $__post : $post;
|
||||
}
|
||||
|
||||
$post = false;
|
||||
if (($new_post = R($which, $restrictions, $post_to_use)) !== false) {
|
||||
$post = $new_post;
|
||||
setup_postdata($post);
|
||||
}
|
||||
return $post;
|
||||
}
|
||||
|
||||
// @codeCoverageIgnoreEnd
|
||||
|
||||
/**
|
||||
* Get the list of categories that match the provided restrictions.
|
||||
* @param array $restrictions The restrictions to use to find categories.
|
||||
* @param object $override_post The post to check. If not provided, use the current Loop post.
|
||||
* @return array The list of categories that match the provided restrictions.
|
||||
*/
|
||||
function RL($restrictions = null, $override_post = null) {
|
||||
global $post;
|
||||
$post_to_use = !is_null($override_post) ? $override_post : $post;
|
||||
|
||||
$storyline = new ComicPressStoryline();
|
||||
|
||||
$restrictions = __prep_R($restrictions, $post_to_use);
|
||||
|
||||
return $storyline->build_from_restrictions($restrictions);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the provided post is in any of the categories matched by the restrictions.
|
||||
* @param array $restrictions The restrictions to use to find categories.
|
||||
* @param object $override_post The post to check. If not provided, use the current Loop post.
|
||||
* @return boolean True if the post is in the list of categories matched by the restrictions.
|
||||
*/
|
||||
function In_R($restrictions = null, $override_post = null) {
|
||||
global $post;
|
||||
$post_to_use = !is_null($override_post) ? $override_post : $post;
|
||||
|
||||
$post_categories = wp_get_post_categories($post_to_use->ID);
|
||||
if (is_array($post_categories)) {
|
||||
if (count($post_categories) == 1) {
|
||||
$category_id = reset($post_categories);
|
||||
if (is_numeric($category_id)) {
|
||||
return in_array($category_id, RL($restrictions, $post_to_use));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve post attachment info to be used with EM().
|
||||
* @param object $override_post The post to retrieve attachment info for. If not provided, use the current Loop post.
|
||||
|
@ -100,40 +100,6 @@ class FunctionsTest extends PHPUnit_Framework_TestCase {
|
||||
$this->assertTrue(is_null($__wp_query));
|
||||
}
|
||||
|
||||
function providerTestPrepR() {
|
||||
$post = (object)array('ID' => 1);
|
||||
|
||||
return array(
|
||||
array(
|
||||
array(), array()
|
||||
),
|
||||
array(
|
||||
'from_post', array('from_post' => $post)
|
||||
),
|
||||
array(
|
||||
array('test' => 'test'), array('test' => 'test')
|
||||
),
|
||||
array(
|
||||
array('test' => '__post'), array('test' => $post)
|
||||
),
|
||||
array(
|
||||
array('test' => array('test')), array('test' => array('test'))
|
||||
),
|
||||
array(
|
||||
'my-category', array('child_of' => 'my-category')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerTestPrepR
|
||||
*/
|
||||
function testPrepR($restrictions, $expected_result) {
|
||||
add_category(1, (object)array('slug' => 'my-category'));
|
||||
|
||||
$this->assertEquals($expected_result, __prep_R($restrictions, (object)array('ID' => 1)));
|
||||
}
|
||||
|
||||
function providerTestEM() {
|
||||
return array(
|
||||
array(array(), 'embed', 'default', false, false),
|
||||
@ -235,30 +201,6 @@ class FunctionsTest extends PHPUnit_Framework_TestCase {
|
||||
}
|
||||
}
|
||||
|
||||
function providerTestIn_R() {
|
||||
return array(
|
||||
array(array(1), true),
|
||||
array(array(5), false),
|
||||
array(array(1,5), false),
|
||||
array(array('test'), false)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerTestIn_R
|
||||
*/
|
||||
function testIn_R($categories, $expected_result) {
|
||||
global $post;
|
||||
|
||||
$post = (object)array('ID' => 1);
|
||||
wp_set_post_categories(1, $categories);
|
||||
|
||||
$s = new ComicPressStoryline();
|
||||
$s->set_flattened_storyline('0/1,0/2,0/2/3,0/2/4');
|
||||
|
||||
$this->assertEquals($expected_result, In_R());
|
||||
}
|
||||
|
||||
function providerTestF() {
|
||||
return array(
|
||||
array(null, array(1 => 'one')),
|
||||
|
Loading…
Reference in New Issue
Block a user