home_model = $this->load->model('apps/home'); $this->request_model = $this->load->model('request'); $this->cache_model = $this->load->model('cache'); } public function index(): void { parent::index(); $data = $this->home_model->get_data(); $this->view('header', $data); $this->view('apps/home/main', $data); } public function posts(): void { $page = $this->request_model->get_int('page', 0); $page_size = 20; $offset = $page * $page_size; $user = $this->main->user(); $query = $this->db; if ($user) { $query = $query->select('p.*, l.post_id IS NOT NULL as liked'); } else { $query = $query->select('p.*, FALSE as liked'); } $query = $query->from('api.post p'); if ($user) { $query = $query->join('admin.like l', 'p.id = l.post_id') ->where('l.user_id')->eq($user['id']) ->or()->where('l.user_id IS NULL'); } $posts = $query->limit($page_size) ->offset($offset) ->rows(); $users = $this->cache_model->get_users($posts); foreach ($posts as $post) { $data = array(); $data['user'] = $users[$post['user_id']]; $data['post'] = $post; $this->view('template/post', $data); } } public function comments(): void { $page = $this->request_model->get_int('page', 0); $id = $this->request_model->get_int('id'); $page_size = 20; $offset = $page * $page_size; $comments = $this->db ->select('*') ->from('admin.comment') ->limit($page_size) ->offset($offset) ->rows(); $users = $this->cache_model->get_users($comments); foreach ($comments as $comment) { $data = array(); $data['user'] = $users[$comment['user_id']]; $data['comment'] = $comment; $this->view('template/comment', $data); } } } ?>