From 1f04b83be337cc91a3fabcf4e574e2306f3d2eaa Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Sat, 30 Mar 2024 12:14:42 -0400 Subject: refactor --- web/_controller/_index.php | 23 +++++++++++ web/_controller/apps/error.php | 20 ++++++++++ web/_controller/apps/home.php | 89 ++++++++++++++++++++++++++++++++++++++++++ web/_controller/modal.php | 26 ++++++++++++ web/_controller/template.php | 22 +++++++++++ 5 files changed, 180 insertions(+) create mode 100644 web/_controller/_index.php create mode 100644 web/_controller/apps/error.php create mode 100644 web/_controller/apps/home.php create mode 100644 web/_controller/modal.php create mode 100644 web/_controller/template.php (limited to 'web/_controller') diff --git a/web/_controller/_index.php b/web/_controller/_index.php new file mode 100644 index 0000000..fdf9440 --- /dev/null +++ b/web/_controller/_index.php @@ -0,0 +1,23 @@ +main->session) { + $this->redirect('/home'); + } else { + $this->redirect('/login'); + } + } + +} + +?> diff --git a/web/_controller/apps/error.php b/web/_controller/apps/error.php new file mode 100644 index 0000000..5ce9ec4 --- /dev/null +++ b/web/_controller/apps/error.php @@ -0,0 +1,20 @@ +error_model = $this->load->model('apps/error'); + } + + public function index() { + parent::index(); + $data = $this->error_model->get_data(); + $this->view('header', $data); + $this->view('apps/error/main', $data); + } + +} + +?> diff --git a/web/_controller/apps/home.php b/web/_controller/apps/home.php new file mode 100644 index 0000000..25c8c4e --- /dev/null +++ b/web/_controller/apps/home.php @@ -0,0 +1,89 @@ +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); + } + } + +} + +?> diff --git a/web/_controller/modal.php b/web/_controller/modal.php new file mode 100644 index 0000000..9ae4ca8 --- /dev/null +++ b/web/_controller/modal.php @@ -0,0 +1,26 @@ +view('template/modal', $data); + } + + public function new_post(): void { + $this->modal('new_post'); + } +} + +?> + diff --git a/web/_controller/template.php b/web/_controller/template.php new file mode 100644 index 0000000..7a8cdf8 --- /dev/null +++ b/web/_controller/template.php @@ -0,0 +1,22 @@ +request_model = $this->load->model('request'); + } + + public function toast(): void { + $data = array( + 'msg' => $this->request_model->get_str('msg', FALSE), + 'detail' => $this->request_model->get_str('detail', FALSE), + 'hint' => $this->request_model->get_str('hint', FALSE) + ); + $this->view('template/toast', $data); + } + +} + -- cgit v1.2.3-freya