Example #1
0
 public function article($id)
 {
     if (!($id && ($article = Article::find('one', array('include' => array('sources'), 'conditions' => array('id = ? AND is_visibled = ? AND destroy_user_id IS NULL', $id, Article::IS_VISIBLED)))))) {
         return array();
     }
     if ($article->tags) {
         usort($article->tags, function ($a, $b) {
             return count($a->mappings) < count($b->mappings);
         });
     }
     if ($article->tags && ($article_ids = column_array(ArticleTagMapping::find('all', array('select' => 'article_id', 'order' => 'RAND()', 'limit' => 5, 'conditions' => array('article_id != ? AND article_tag_id = ?', $article->id, $article->tags[0]->id))), 'article_id'))) {
         Article::addConditions($conditions, 'id IN (?)', $article_ids);
     } else {
         Article::addConditions($conditions, 'id != ?', $article->id);
     }
     Article::addConditions($conditions, 'is_visibled = ? AND destroy_user_id IS NULL', Article::IS_VISIBLED);
     $others = Article::find('all', array('select' => 'id, title', 'limit' => 5, 'conditions' => $conditions));
     return array('article' => array_merge($article->to_array(array('only' => array('id', 'title', 'content', 'pv'), 'methods' => array('site_show_page_last_uri'))), array('mini_content' => array('150' => $article->mini_content(150), '300' => $article->mini_content(300)), 'cover_url' => array('1200x630c' => $article->cover->url('1200x630c')), 'updated_at' => array('c' => $article->updated_at->format('c'), 'Y-m-d H:i:s' => $article->updated_at->format('Y-m-d H:i:s')), 'created_at' => array('c' => $article->created_at->format('c'), 'Y-m-d H:i:s' => $article->created_at->format('Y-m-d H:i:s')))), 'tags' => array_map(function ($tag) {
         return $tag->to_array(array('only' => array('id', 'name')));
     }, $article->tags), 'others' => array_map(function ($article) {
         return $article->to_array(array('only' => array(), 'methods' => array('site_show_page_last_uri')));
     }, $others), 'sources' => array_map(function ($source) {
         return $source->to_array(array('only' => array('title', 'href'), 'methods' => array('mini_href')));
     }, $article->sources), 'user' => $article->user->to_array(array('only' => array('name'), 'methods' => array('facebook_link'))));
 }
Example #2
0
 public function index($offset = 0)
 {
     $columns = array();
     $configs = array($this->get_class(), '%s');
     $conditions = conditions($columns, $configs);
     Article::addConditions($conditions, 'is_visibled = ? AND destroy_user_id IS NULL', Article::IS_VISIBLED);
     $limit = 7;
     $total = Article::count(array('conditions' => $conditions));
     $offset = $offset < $total ? $offset : 0;
     $this->load->library('pagination');
     $pagination = $this->pagination->initialize(array_merge(array('total_rows' => $total, 'num_links' => 3, 'per_page' => $limit, 'uri_segment' => 0, 'base_url' => '', 'page_query_string' => false, 'first_link' => '第一頁', 'last_link' => '最後頁', 'prev_link' => '上一頁', 'next_link' => '下一頁', 'full_tag_open' => '<ul class="pagination">', 'full_tag_close' => '</ul>', 'first_tag_open' => '<li class="f">', 'first_tag_close' => '</li>', 'prev_tag_open' => '<li class="p">', 'prev_tag_close' => '</li>', 'num_tag_open' => '<li>', 'num_tag_close' => '</li>', 'cur_tag_open' => '<li class="active"><a href="#">', 'cur_tag_close' => '</a></li>', 'next_tag_open' => '<li class="n">', 'next_tag_close' => '</li>', 'last_tag_open' => '<li class="l">', 'last_tag_close' => '</li>'), $configs))->create_links();
     $articles = Article::find('all', array('offset' => $offset, 'limit' => $limit, 'order' => 'id DESC', 'conditions' => $conditions));
     if ($articles) {
         $this->add_meta(array('name' => 'keywords', 'content' => implode(',', column_array($articles, 'title')) . ',' . implode(',', Cfg::setting('site', 'site', 'keywords'))))->add_meta(array('name' => 'description', 'content' => $articles[0]->mini_content(150)))->add_meta(array('property' => 'og:title', 'content' => '知識文章' . ' - ' . Cfg::setting('site', 'site', 'title')))->add_meta(array('property' => 'og:description', 'content' => $articles[0]->mini_content(300)))->add_meta(array('property' => 'og:image', 'tag' => 'larger', 'content' => $img = $articles[0]->cover->url('1200x630c'), 'alt' => '知識文章' . ' - ' . Cfg::setting('site', 'site', 'title')))->add_meta(array('property' => 'og:image:type', 'tag' => 'larger', 'content' => 'image/' . pathinfo($img, PATHINFO_EXTENSION)))->add_meta(array('property' => 'og:image:width', 'tag' => 'larger', 'content' => '1200'))->add_meta(array('property' => 'og:image:height', 'tag' => 'larger', 'content' => '630'))->add_meta(array('property' => 'article:modified_time', 'content' => $articles[0]->updated_at->format('c')))->add_meta(array('property' => 'article:published_time', 'content' => $articles[0]->created_at->format('c')));
         if (($tags = column_array($articles[0]->tags, 'name')) || ($tags = Cfg::setting('site', 'site', 'keywords'))) {
             foreach ($tags as $i => $tag) {
                 if (!$i) {
                     $this->add_meta(array('property' => 'article:section', 'content' => $tag))->add_meta(array('property' => 'article:tag', 'content' => $tag));
                 } else {
                     $this->add_meta(array('property' => 'article:tag', 'content' => $tag));
                 }
             }
         }
     }
     return $this->set_title('知識文章' . ' - ' . Cfg::setting('site', 'site', 'title'))->load_view(array('articles' => $articles, 'pagination' => $pagination, 'columns' => $columns));
 }
Example #3
0
 public function index($offset = 0)
 {
     $columns = array(array('key' => 'user_id', 'title' => '作者', 'sql' => 'user_id = ?', 'select' => array_map(function ($user) {
         return array('value' => $user->id, 'text' => $user->name);
     }, User::all(array('select' => 'id, name')))), array('key' => 'is_visibled', 'title' => '是否公開', 'sql' => 'is_visibled = ?', 'select' => array_map(function ($key) {
         return array('value' => $key, 'text' => Article::$visibleNames[$key]);
     }, array_keys(Article::$visibleNames))), array('key' => 'title', 'title' => '標題', 'sql' => 'title LIKE ?'), array('key' => 'content', 'title' => '內容', 'sql' => 'content LIKE ?'));
     $configs = array('admin', $this->get_class(), '%s');
     $conditions = conditions($columns, $configs);
     Article::addConditions($conditions, 'destroy_user_id IS NULL');
     $limit = 25;
     $total = Article::count(array('conditions' => $conditions));
     $offset = $offset < $total ? $offset : 0;
     $this->load->library('pagination');
     $pagination = $this->pagination->initialize(array_merge(array('total_rows' => $total, 'num_links' => 5, 'per_page' => $limit, 'uri_segment' => 0, 'base_url' => '', 'page_query_string' => false, 'first_link' => '第一頁', 'last_link' => '最後頁', 'prev_link' => '上一頁', 'next_link' => '下一頁', 'full_tag_open' => '<ul class="pagination">', 'full_tag_close' => '</ul>', 'first_tag_open' => '<li>', 'first_tag_close' => '</li>', 'prev_tag_open' => '<li>', 'prev_tag_close' => '</li>', 'num_tag_open' => '<li>', 'num_tag_close' => '</li>', 'cur_tag_open' => '<li class="active"><a href="#">', 'cur_tag_close' => '</a></li>', 'next_tag_open' => '<li>', 'next_tag_close' => '</li>', 'last_tag_open' => '<li>', 'last_tag_close' => '</li>'), $configs))->create_links();
     $articles = Article::find('all', array('offset' => $offset, 'limit' => $limit, 'order' => 'id DESC', 'include' => array('user'), 'conditions' => $conditions));
     Session::setData('admin_articles_index_url', current_url());
     return $this->set_tab_index(1)->set_subtitle('文章列表')->add_hidden(array('id' => 'is_visibled_url', 'value' => base_url('admin', $this->get_class(), 'is_visibled')))->load_view(array('articles' => $articles, 'pagination' => $pagination, 'columns' => $columns));
 }