/** Theme functions for posts */ function has_posts() { if (($posts = IoC::resolve('posts')) === false) { $params = array('status' => 'published', 'sortby' => 'id', 'sortmode' => 'desc', 'limit' => Config::get('metadata.posts_per_page', 10), 'offset' => Input::get('offset', 0)); $posts = Posts::list_all($params); IoC::instance('posts', $posts, true); $total_posts = Posts::count(array('status' => 'published')); IoC::instance('total_posts', $total_posts, true); } return $posts->length() > 0; }
/** * Lists all models. */ public function actionIndex() { $criteria = new CDbCriteria(); $criteria->order = 'cTime DESC'; //$criteria->select = 'id,title'; $model = new Posts(); $count = $model->count($criteria); $pager = new CPagination($count); $pager->pageSize = 100; $pager->applyLimit($criteria); $posts = $model->findAll($criteria); $this->render('index', array('pages' => $pager, 'posts' => $posts)); }
<?php $app->get('/(:page)', function ($page = 1) use($app, $settings) { $p = Posts::count(); $pages = ceil($p / $settings->post_per_page); if ($page > $pages) { $app->pass(); } $posts = Posts::orderBy('creation', 'desc')->skip($settings->post_per_page * ($page - 1))->take($settings->post_per_page)->get(); $arr = array(); //Posts foreach ($posts as $post) { if ($post['active'] == 'true') { $post['author'] = Users::get_author($post['user_id']); $post['date'] = date('d-m-Y H:i', $post['creation']); $post['url'] = $app->request->getUrl() . $app->request->getPath() . 'post/' . $post['id']; if ($settings->truncate == 'true') { $text = truncate_to_n_words($post['text'], 70, $post['url']); $post['text'] = $app->markdown->parse($text); } else { $post['text'] = $app->markdown->parse($post['text']); } $post['count'] = Posts::find($post['id'])->comments->count(); $arr[] = $post; } } $app->render('posts.html', array('posts' => $arr, 'pages' => $pages, 'page' => $page)); })->conditions(array('page' => '\\d+'));
public static function searchKeyword($keyword) { $keyword = Helper::toRegularString($keyword); //paging post $model_post = new Posts(); $criteria = new CDbCriteria(); $criteria->condition = 'title like "%' . $keyword . '%" or content like "%' . $keyword . '%"'; $total = $model_post->count($criteria); $pages = new CPagination($total); $pages->pageSize = 4; $pages->applyLimit($criteria); $list = $model_post->findAll($criteria); $posts_paging = array(); $posts_paging[] = $list; $posts_paging[] = $pages; return $posts_paging; }