public function viewActivity($mode = 'default') { $subs = Sub::getSubs(self::userFp()); $gsubs = Gsub::getSubs(self::userFp()); $users = User::whereIn('user_fp', $subs)->orderBy('id', 'desc')->get(); return View::make('board.activity', ['mode' => $mode, 'users' => $users, 'groups' => $gsubs, 'posts' => Post::activity($mode, self::userFp(), $subs, $gsubs, self::getBL())]); }
public static function activity($mode, $user_fp, $subs = false, $gsubs = false, $blacklist = false) { $subs = $subs ? $subs : Sub::getSubs($user_fp); $gsubs = $gsubs ? $gsubs : Gsub::getSubs($user_fp); switch ($mode) { case 'posts': $posts = DB::table('posts')->join('users', 'posts.user_fp', '=', 'users.user_fp')->where('posts.parent_id', 0)->whereIn('posts.user_fp', $subs)->orWhereIn('posts.group_name', $gsubs)->orderBy('posts.created_at', 'desc')->select('posts.*', 'users.public_hash', 'users.nickname'); break; case 'replies': $user_posts = DB::table('posts')->where('posts.user_fp', $user_fp)->where('posts.parent_id', '!=', 0)->orderBy('posts.created_at', 'desc')->limit(15)->lists('id'); if (count($user_posts) == 0) { return []; } $posts = DB::table('posts')->join('users', 'posts.user_fp', '=', 'users.user_fp')->orderBy('posts.created_at', 'desc')->select('posts.*', 'users.public_hash', 'users.nickname'); foreach ($user_posts as $id) { $posts = $posts->orWhere('posts.message', 'like', ">>{$id}%"); } break; case 'blog_comments': $user_posts = DB::table('posts')->where('posts.user_fp', $user_fp)->where('posts.parent_id', 0)->orderBy('posts.updated_at', 'desc')->limit(15)->lists('id'); if (count($user_posts) == 0) { return []; } $posts = DB::table('posts')->join('users', 'posts.user_fp', '=', 'users.user_fp')->where('posts.user_fp', '!=', $user_fp)->whereIn('posts.parent_id', $user_posts)->orderBy('posts.created_at', 'desc')->select('posts.*', 'users.public_hash', 'users.nickname'); break; default: $posts = DB::table('posts')->join('users', 'posts.user_fp', '=', 'users.user_fp')->whereIn('posts.user_fp', $subs)->orWhereIn('posts.group_name', $gsubs)->orderBy('posts.created_at', 'desc')->select('posts.*', 'users.public_hash', 'users.nickname'); break; } if ($blacklist) { $posts->whereNotIn("posts.user_fp", $blacklist); } return $posts->limit(30)->get(); }