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)); }
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'); }