Ejemplo n.º 1
0
 public function ng_index()
 {
     $page = I('get.index_page');
     //The request page number
     $page = $page ? $page : 1;
     /**
      * 1.我的动态
      * 2.我关注的人的动态
      * 3.公开的
      * 4.按时间排序
      * 关联的模型: hs_user,hs_piece,hs_piece_comment
      */
     /*$sql = "SELECT u.id,u.userName,u.avatar,p.piece_id,p.user_id,p.date,p.tag,p.content from hs_user as u,hs_piece as p 
       where p.visible=1 AND u.id=p.user_id AND p.user_id in (SELECT followed_id as id from hs_follow where follower_id=".$this->user_id." 
       union SElECT id from hs_user where id=".$this->user_id.") order by p.date desc limit ".$page*$this->piece_nums_per_page.
       ",".$this->piece_nums_per_page;*/
     $sql2 = "select count(c.comment_id) as comments_num,u.userName,u.avatar,p.piece_id,p.user_id,p.date,p.tag,p.content,p.visible,p.visible_tag \r\n        from hs_piece as p join hs_user as u on p.user_id=u.id left join hs_piece_comment as c on p.piece_id=c.piece_id where p.user_id=" . $this->user_id . " or p.user_id in (select f.followed_id from hs_follow as f where f.follower_id=" . $this->user_id . ") and p.visible=1 group by p.piece_id order by p.date desc ";
     $pieces = $this->piece_model->query($sql2);
     if ($pieces !== false) {
         if ($pieces == NULL) {
             $this->ajaxReturn(array('pieces' => $pieces, 'error' => 2, 'msg' => '暂无记录!'), 'json');
         }
         if (count($pieces)) {
             $pieces = A('Auth')->filter_invisible_piece($pieces);
             //过滤不可见的碎片
             $pieces = Util::pageOfArray($pieces, $page, $this->piece_nums_per_page);
             //分页
         }
         $this->ajaxReturn(array('pieces' => $pieces, 'error' => 0), 'json');
     } else {
         $this->ajaxReturn(array('pieces' => $pieces, 'error' => 1, 'msg' => '查询失败!'), 'json');
     }
 }
Ejemplo n.º 2
0
 public function get_pieces()
 {
     $user_id = I('post.user_id') ? I('post.user_id') : $this->user_id;
     $page = I('post.page');
     $page = $page ? $page : 0;
     //$page = $page?$page-1:0;
     $visible = $user_id == $this->user_id ? '' : ' AND p.visible=1';
     $piece_model = D('Piece');
     /*$sql = "select count(c.comment_id) as comments_num,u.userName,u.avatar,p.piece_id,p.user_id,p.date,p.tag,p.content from hs_piece as p 
       join hs_user as u on p.user_id=u.id left join hs_piece_comment as c on p.piece_id=c.piece_id where p.user_id=".$user_id.$visible." group by p.piece_id order by p.date desc limit ".
       $page*$this->piece_nums_per_page.",".$this->piece_nums_per_page;
       $pieces = $piece_model->query($sql);
       $pieces = $piece_model->alias('p')->where('p.user_id='.$user_id.$visible)
       ->field('u.id,u.userName,u.avatar,p.piece_id,p.date,p.tag,p.content')
       ->join('hs_user as u on u.id=p.user_id')
       ->order('p.date desc')->limit($page*$this->piece_nums_per_page,$this->piece_nums_per_page)->select();*/
     $cached_pieces = S('User_pieces_' . $page . '_' . $user_id);
     //是否已有缓存
     if (0) {
         $this->ajaxReturn(array('error' => 0, 'cached' => true, 'pieces' => $cached_pieces), 'json');
     } else {
         $pieces = $piece_model->where('user_id=' . $user_id)->field('piece_id,user_id,date,tag,content,visible,visible_tag')->order('date desc')->select();
         if ($pieces !== false) {
             //关联用户表
             $pieces = DBUtil::loadRelatedData($pieces, 'user_id', 'user', 'id', array('userName', 'avatar'));
             //关联评论表
             $pieces = DBUtil::loadRelatedData($pieces, 'piece_id', 'piece_comment', 'piece_id', array('count(comment_id) as comments_num'));
             $pieces = A('Auth')->filter_invisible_piece($pieces);
             //进行分页并缓存结果
             $pieces = Util::pageOfArray($pieces, $page, $this->piece_nums_per_page);
             S('User_pieces_' . $page . '_' . $user_id, $pieces, array('type' => 'file', 'expire' => 5 * 60));
             //缓存该用户第n页的碎片,5分钟
             $this->ajaxReturn(array('error' => 0, 'pieces' => $pieces), 'json');
         } else {
             $this->ajaxReturn(array('error' => 1, 'msg' => C('SITE_LANG.QUERY_FAILED')), 'json');
         }
     }
 }