Beispiel #1
0
 public static function delete_tags_for_post(post_model $post)
 {
     $post_id = $post->id;
     $post_tags = post_tag_model::get(array('post_id' => $post_id));
     if ($post_tags === []) {
         return;
     }
     $tag_ids = [];
     foreach ($post_tags as $post_tag) {
         $tag_ids[] = (int) $post_tag->tag_id;
     }
     post_tag_model::del(array('post_id' => $post_id));
     tag_model::dec_by_ids(array('refer_count' => 1), $tag_ids);
     tag_model::del(array('refer_count' => 0));
 }
Beispiel #2
0
 public static function index_action()
 {
     // 呈现
     $page_size = 4;
     $order_limit = array(array('id' => 'DESC'), g_int('page', 1), $page_size);
     $tag_name = g_str('tag');
     $posts_binder = function (&$posts) {
         binder::bind($posts, 'belongs_to', 'member');
         binder::bind($posts, 'belongs_to', 'category');
         binder::bind($posts, 'many_many', 'tag', array('post_tag', 0));
     };
     if ($tag_name !== '') {
         $tag = tag_model::get_one(array('name' => $tag_name));
         if ($tag === null) {
             $pager = [];
             $posts = [];
         } else {
             $post_ids = [];
             foreach (post_tag_model::get(array('tag_id' => $tag->id)) as $post_tag) {
                 $post_ids[] = (int) $post_tag->post_id;
             }
             list($pager, $posts) = post_model::pager_by_ids($post_ids, $order_limit);
             $posts_binder($posts);
             $pager['target'] = array('post/index', array('tag' => $tag_name));
         }
     } else {
         $category_id = g_int('category_id', 0);
         if ($category_id === 0) {
             list($pager, $posts) = post_model::pager_all($order_limit);
             $posts_binder($posts);
             $pager['target'] = 'post/index';
         } else {
             list($pager, $posts) = post_model::pager(array('category_id' => $category_id), $order_limit);
             $posts_binder($posts);
             $pager['target'] = 'post/index?category_id=' . $category_id;
         }
     }
     self::set('pager', $pager);
     self::set('posts', $posts);
     self::set('logined', visitor::has_role('member'));
     self::show_page('', 'four');
 }