function post_list() { // only run on the first call if (!Registry::has('rwar_post_archive')) { // capture original article if one is set if ($article = Registry::get('article')) { Registry::set('original_article', $article); } } if (!($posts = Registry::get('rwar_post_archive'))) { $posts = Post::where('status', '=', 'published')->sort('created', 'desc')->get(); Registry::set('rwar_post_archive', $posts = new Items($posts)); } if ($result = $posts->valid()) { // register single post Registry::set('article', $posts->current()); // move to next $posts->next(); } else { // back to the start $posts->rewind(); // reset original article Registry::set('article', Registry::get('original_article')); // remove items Registry::set('rwar_post_archive', false); } return $result; }
/** * Returns true while there are still tagged posts in the array. * This replaces the Anchor posts() method * * @return bool */ function tagged_posts() { $tag = extract_tag(); if ($tag != '') { if (!($posts = Registry::get('tagged_posts'))) { $tagged_posts = get_posts_with_tag($tag); $posts = Post::where_in('id', $tagged_posts)->where('status', '=', 'published')->sort('created', 'desc')->get(); Registry::set('tagged_posts', $posts = new Items($posts)); } if ($posts instanceof Items) { if ($result = $posts->valid()) { // register single post Registry::set('article', $posts->current()); // move to next $posts->next(); } else { $posts->rewind(); } return $result; } } else { return posts(); } return false; }