From 7e2553646c27cae8baaca1cc5c13d980661b5d90 Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Tue, 2 Apr 2024 18:13:02 -0400 Subject: finish profile directory (mostly) --- src/web/_controller/apps/people.php | 41 ++++++++++++++++ src/web/_model/apps/people.php | 88 +++++++++++++++++++++++++++++++++++ src/web/_model/format.php | 3 +- src/web/_views/apps/people/card.php | 35 ++++++++++++++ src/web/_views/apps/people/main.php | 67 ++++++++++++++++++++++++++ src/web/_views/apps/people/people.php | 7 +++ src/web/_views/template/pfp.php | 9 ++++ src/web/_views/template/post.php | 2 +- src/web/config/aesthetic.php | 5 ++ src/web/config/routes.php | 1 + src/web/core/database.php | 14 ++---- src/web/lang/en_US/apps/people.php | 17 +++++++ 12 files changed, 277 insertions(+), 12 deletions(-) create mode 100644 src/web/_controller/apps/people.php create mode 100644 src/web/_model/apps/people.php create mode 100644 src/web/_views/apps/people/card.php create mode 100644 src/web/_views/apps/people/main.php create mode 100644 src/web/_views/apps/people/people.php create mode 100644 src/web/lang/en_US/apps/people.php (limited to 'src/web') diff --git a/src/web/_controller/apps/people.php b/src/web/_controller/apps/people.php new file mode 100644 index 0000000..19910ac --- /dev/null +++ b/src/web/_controller/apps/people.php @@ -0,0 +1,41 @@ +people_model = $this->load->model('apps/people'); + $this->format_model = $this->load->model('format'); + } + + public function index(): void { + parent::index(); + $data = $this->people_model->get_data(); + $this->view('header', $data); + $this->view('apps/people/main', $data); + $this->view('footer', $data); + } + + /** + * @return array + */ + public function people(): array { + $data = $this->people_model->get_users(); + + $this->view('apps/people/people', $data); + + $max = 0; + foreach ($data['users'] as $user) { + $max = max($max, $user['id']); + } + + return $data; + } +} + +?> diff --git a/src/web/_model/apps/people.php b/src/web/_model/apps/people.php new file mode 100644 index 0000000..4b6bab4 --- /dev/null +++ b/src/web/_model/apps/people.php @@ -0,0 +1,88 @@ +request_model = $this->load->model('request'); + } + + private function get_filted_query($select) { + $filter_username = $this->request_model->get_str('filter_username', FALSE); + $filter_fisrt_name = $this->request_model->get_str('filter_first_name', FALSE); + $filter_last_name = $this->request_model->get_str('filter_last_name', FALSE); + $filter_email = $this->request_model->get_str('filter_email', FALSE); + $max = $this->request_model->get_int('max', FALSE); + + $query = $this->db + ->select($select) + ->from('api.user u'); + + if ($filter_username) { + $query = $query + ->where('u.username') + ->like('%' . $filter_username . '%'); + } + + if ($filter_fisrt_name) { + $query = $query + ->where('u.first_name') + ->like('%'. $filter_fisrt_name . '%'); + } + + if ($filter_last_name) { + $query = $query + ->where('u.last_name') + ->like('%' . $filter_last_name . '%'); + } + + if ($filter_email) { + $query = $query + ->where('u.email') + ->like('%' . $filter_email . '%'); + } + + if ($max) { + $query = $query + ->where('u.id') + ->le($max); + } + + return $query; + } + + public function get_users(): array { + $page = $this->request_model->get_int('page', 0); + $page_size = 24; + $offset = $page_size * $page; + + $users = $this->get_filted_query('*') + ->order_by('u.id', 'DESC') + ->offset($offset) + ->limit($page_size) + ->rows(); + + $count = $this->get_filted_query('COUNT(u.id) AS count') + ->row()['count']; + + $max = 0; + + foreach ($users as $user) { + $max = max($max, $user['id']); + } + + return array( + 'users' => $users, + 'count' => $count, + 'page_size' => $page_size, + 'max_id' => $max + ); + } + + public function get_data(): array { + $data = parent::get_data(); + $data['title'] = lang('title'); + return $data; + } +} diff --git a/src/web/_model/format.php b/src/web/_model/format.php index 52b51be..d2a3700 100644 --- a/src/web/_model/format.php +++ b/src/web/_model/format.php @@ -39,7 +39,8 @@ class Format_model extends Model { * @returns the formatted date */ public function date($date) { - return $date; + $date=date_create($date); + return date_format($date, "Y-m-d H:i"); } } diff --git a/src/web/_views/apps/people/card.php b/src/web/_views/apps/people/card.php new file mode 100644 index 0000000..a44b0d4 --- /dev/null +++ b/src/web/_views/apps/people/card.php @@ -0,0 +1,35 @@ + + + +
+ view('template/pfp', array('user' => $user, 'link' => FALSE)); ?> +
+ format_model->name($user)?> + format_model->date($user['created'])?> + format_model->date($user['seen'])?> +
+
+
+ + + + + + + + + + + + + + + + + +
+
+ + +
+

+

+
+
+ people(); + ?> +
+ + = $page_size && $page_size < $total): ?> + $loaded, + 'pageSize' => $page_size, + 'userCount' => $total, + 'userMax' => $max + ) + )?> + + +
diff --git a/src/web/_views/apps/people/people.php b/src/web/_views/apps/people/people.php new file mode 100644 index 0000000..5fc0d17 --- /dev/null +++ b/src/web/_views/apps/people/people.php @@ -0,0 +1,7 @@ + + +view('apps/people/card', array('user' => $user)); + } +?> diff --git a/src/web/_views/template/pfp.php b/src/web/_views/template/pfp.php index 9a5a336..ebb4b5f 100644 --- a/src/web/_views/template/pfp.php +++ b/src/web/_views/template/pfp.php @@ -2,7 +2,16 @@ + + + + diff --git a/src/web/_views/template/post.php b/src/web/_views/template/post.php index 83a72bf..0633985 100644 --- a/src/web/_views/template/post.php +++ b/src/web/_views/template/post.php @@ -61,7 +61,7 @@
- view('template/pfp', array('user' => $user))?> + view('template/pfp', array('user' => $self))?>
array( + 'css' => [ + 'css/people.css' + ], + ), ); } /** diff --git a/src/web/config/routes.php b/src/web/config/routes.php index 33c871b..5bb9a1b 100644 --- a/src/web/config/routes.php +++ b/src/web/config/routes.php @@ -4,5 +4,6 @@ $routes = array(); $routes['home'] = 'apps/home'; $routes['error'] = 'apps/error'; $routes['auth'] = 'apps/auth'; +$routes['people'] = 'apps/people'; $routes[''] = '_index'; diff --git a/src/web/core/database.php b/src/web/core/database.php index 81352a9..e9b8109 100644 --- a/src/web/core/database.php +++ b/src/web/core/database.php @@ -46,6 +46,8 @@ class DatabaseQuery { if (!$this->where) { $this->where = TRUE; $this->query .= "WHERE "; + } else { + $this->query .= "AND "; } $this->query .= "$cond "; return $this; @@ -85,6 +87,8 @@ class DatabaseQuery { if (!$this->where) { $this->where = TRUE; $this->query .= "WHERE "; + } else { + $this->query .= "AND "; } if (empty($array)) { $this->query .= "FALSE\n"; @@ -95,16 +99,6 @@ class DatabaseQuery { return $this; } - public function and() { - $this->query .= "AND "; - return $this; - } - - public function or() { - $this->query .= "OR "; - return $this; - } - public function join($table, $on, $type = 'LEFT') { $this->query .= "$type JOIN $table ON $on\n"; return $this; diff --git a/src/web/lang/en_US/apps/people.php b/src/web/lang/en_US/apps/people.php new file mode 100644 index 0000000..2bfc240 --- /dev/null +++ b/src/web/lang/en_US/apps/people.php @@ -0,0 +1,17 @@ + -- cgit v1.2.3-freya