summaryrefslogtreecommitdiff
path: root/src/web/_model/main.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/web/_model/main.php')
-rw-r--r--src/web/_model/main.php96
1 files changed, 96 insertions, 0 deletions
diff --git a/src/web/_model/main.php b/src/web/_model/main.php
new file mode 100644
index 0000000..6d8b708
--- /dev/null
+++ b/src/web/_model/main.php
@@ -0,0 +1,96 @@
+<?php /* Copyright (c) 2024 Freya Murphy */
+class Main_model {
+
+ // the website database
+ public $db;
+
+ // the current user session (can be NULL)
+ public $session;
+
+ // current loaded users
+ private $users;
+
+ // stores the current request info
+ public $info;
+
+ /**
+ * Loads the main model
+ * @param Loader $load - the main loader object
+ */
+ function __construct($load) {
+ /// load the database helper
+ $this->db = new DatabaseHelper();
+ /// load the current session
+ if (array_key_exists('jwt', $_SESSION)) {
+ $this->get_session($_SESSION['jwt']);
+ } else {
+ $this->session = NULL;
+ };
+ /// init other vars
+ $this->users = array();
+ }
+
+ /**
+ * Loads current session
+ * @param string $jwt - the user provided JWT
+ */
+ private function get_session($jwt) {
+ $query = $this->db
+ ->select("_api.verify_jwt('" . $jwt . "') AS user_id;");
+ $result = $query->row();
+ $user_id = $result['user_id'];
+ if ($user_id) {
+ $this->session = array(
+ 'id' => $user_id,
+ 'jwt' => $jwt
+ );
+ }
+ }
+
+ /**
+ * Gets the stamp for a asset path
+ * @param string $path
+ */
+ private function asset_stamp($path): int {
+ $root = $GLOBALS['webroot'];
+ $path = $root . '/../public/' . $path;
+ return filemtime($path);
+ }
+
+ /**
+ * Loads a css html link
+ * @param string $path - the path to the css file
+ */
+ public function link_css($path) {
+ $stamp = $this->asset_stamp($path);
+ return '<link rel="stylesheet" href="/public/' . $path . '?stamp=' . $stamp . '">';
+ }
+
+ /**
+ * Loads a js html link
+ * @param string $path - the path to the js file
+ */
+ public function link_js($path) {
+ $stamp = $this->asset_stamp($path);
+ return '<script src="/public/'. $path . '?stamp=' . $stamp . '"></script>';
+ }
+
+ /**
+ * Gets the current user
+ */
+ public function user() {
+ if ($this->session) {
+ return $this->db
+ ->select('*')
+ ->from('api.user')
+ ->where('id')
+ ->eq($this->session['id'])
+ ->row();
+ } else {
+ return NULL;
+ }
+ }
+
+}
+
+?>