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.php97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/web/_model/main.php b/src/web/_model/main.php
new file mode 100644
index 0000000..6767010
--- /dev/null
+++ b/src/web/_model/main.php
@@ -0,0 +1,97 @@
+<?php /* Copyright (c) 2024 Freya Murphy */
+class Main_model extends Model {
+
+ // stores the current request info
+ public $info;
+
+ // the main loader
+ public $load;
+
+ /**
+ * Loads the main model
+ * @param Loader $load - the main loader object
+ */
+ function __construct($load) {
+ parent::__construct($load, TRUE);
+ $GLOBALS['main_model'] = $this;
+ }
+
+ /**
+ * 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);
+ }
+
+ /**
+ * Get the current IE version
+ * @returns the IE version if valid IE user agent, INT_MAX if not
+ */
+ public function get_ie_version(): int {
+ if (preg_match('/MSIE\s(?P<v>\d+)/i', @$_SERVER['HTTP_USER_AGENT'], $B)) {
+ return $B['v'];
+ } else {
+ return PHP_INT_MAX;
+ }
+ }
+
+ /**
+ * Gets the full url including the http scheme and host part
+ * Needed for IE 6 & 7 need.
+ */
+ public function get_url_full($path): string {
+ $host = $_SERVER['HTTP_HOST'];
+ $base = lang('base_path');
+ $url = "http://{$host}{$base}{$path}";
+ return $url;
+ }
+
+ /**
+ * Gets a full path url from a relative path
+ */
+ public function get_url($path): string {
+ if ($this->get_ie_version() <= 7) {
+ return $this->get_url_full($path);
+ }
+ $base = lang('base_path');
+ $url = "{$base}{$path}";
+ return $url;
+ }
+
+ /**
+ * Loads a css html link
+ * @param string $path - the path to the css file
+ */
+ public function link_css($path): string {
+ $stamp = $this->asset_stamp($path);
+ $href = $this->get_url("public/{$path}?stamp={$stamp}");
+ return '<link rel="stylesheet" href="'. $href .'">';
+ }
+
+ /**
+ * Loads a css html link
+ * @param string $path - the path to the css file
+ */
+ public function embed_css($path): string {
+ $file = $GLOBALS['publicroot'] . '/' . $path;
+ if (file_exists($file)) {
+ $text = file_get_contents($file);
+ return "<style>{$text}</style>";
+ } else {
+ return "";
+ }
+ }
+
+ /**
+ * Formats a ISO date
+ * @param $iso_date the ISO date
+ */
+ public function format_date($iso_date): string {
+ return date("Y-m-d D H:m", strtotime($iso_date));
+ }
+}
+
+?>