add cms, add todo
[ssproject1617.git] / testcms-final-anon / system / functions / posts.php
diff --git a/testcms-final-anon/system/functions/posts.php b/testcms-final-anon/system/functions/posts.php
new file mode 100644 (file)
index 0000000..e4e5fb7
--- /dev/null
@@ -0,0 +1,71 @@
+<?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