+<?php defined('IN_CMS') or die('No direct access allowed.');\r
+\r
+/**\r
+ Theme functions for posts\r
+*/\r
+function has_posts() {\r
+ if(($posts = IoC::resolve('posts')) === false) {\r
+ $params = array(\r
+ 'status' => 'published', \r
+ 'sortby' => 'id', \r
+ 'sortmode' => 'desc', \r
+ 'limit' => Config::get('metadata.posts_per_page', 10), \r
+ 'offset' => Input::get('offset', 0)\r
+ );\r
+ $posts = Posts::list_all($params);\r
+ IoC::instance('posts', $posts, true);\r
+\r
+ $total_posts = Posts::count(array('status' => 'published'));\r
+ IoC::instance('total_posts', $total_posts, true);\r
+ }\r
+ \r
+ return $posts->length() > 0;\r
+}\r
+\r
+function posts() {\r
+ if(has_posts() === false) {\r
+ return false;\r
+ }\r
+ \r
+ $posts = IoC::resolve('posts');\r
+\r
+ if($result = $posts->valid()) { \r
+ // register single post\r
+ IoC::instance('article', $posts->current(), true);\r
+ \r
+ // move to next\r
+ $posts->next();\r
+ }\r
+\r
+ return $result;\r
+}\r
+\r
+function posts_next($text = 'Next', $default = '') {\r
+ $per_page = Config::get('metadata.posts_per_page');\r
+ $offset = Input::get('offset', 0);\r
+ $total = IoC::resolve('total_posts');\r
+\r
+ $pages = floor($total / $per_page);\r
+ $page = $offset / $per_page;\r
+\r
+ if($page < $pages) {\r
+ return '<a href="' . current_url() . '?offset=' . ($offset + $per_page) . '">' . $text . '</a>';\r
+ }\r
+\r
+ return $default;\r
+}\r
+\r
+function posts_prev($text = 'Previous', $default = '') {\r
+ $per_page = Config::get('metadata.posts_per_page');\r
+ $offset = Input::get('offset', 0);\r
+ $total = IoC::resolve('total_posts');\r
+\r
+ $pages = ceil($total / $per_page);\r
+ $page = $offset / $per_page;\r
+\r
+ if($offset > 0) {\r
+ return '<a href="' . current_url() . '?offset=' . ($offset - $per_page) . '">' . $text . '</a>';\r
+ }\r
+\r
+ return $default;\r
+}
\ No newline at end of file