summaryrefslogtreecommitdiff
path: root/src/_controller.php
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2024-12-23 10:39:16 -0500
committerFreya Murphy <freya@freyacat.org>2024-12-23 10:39:16 -0500
commitde9cae795f93d03e68d965c59af4b21d96df4ec7 (patch)
treead4f903c04630b3b92e2b9b5d06d5b8647d299bb /src/_controller.php
parentlicense (diff)
downloadcrimson-de9cae795f93d03e68d965c59af4b21d96df4ec7.tar.gz
crimson-de9cae795f93d03e68d965c59af4b21d96df4ec7.tar.bz2
crimson-de9cae795f93d03e68d965c59af4b21d96df4ec7.zip
initial
Diffstat (limited to 'src/_controller.php')
-rw-r--r--src/_controller.php66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/_controller.php b/src/_controller.php
new file mode 100644
index 0000000..6c829a0
--- /dev/null
+++ b/src/_controller.php
@@ -0,0 +1,66 @@
+<?php
+/// CRIMSON --- A simple PHP framework.
+/// Copyright © 2024 Freya Murphy <contact@freyacat.org>
+///
+/// This file is part of CRIMSON.
+///
+/// CRIMSON is free software; you can redistribute it and/or modify it
+/// under the terms of the GNU General Public License as published by
+/// the Free Software Foundation; either version 3 of the License, or (at
+/// your option) any later version.
+///
+/// CRIMSON is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+/// GNU General Public License for more details.
+///
+/// You should have received a copy of the GNU General Public License
+/// along with CRIMSON. If not, see <http://www.gnu.org/licenses/>.
+
+abstract class Controller extends Base {
+
+ // used by lib meta
+ public array $CRIMSON_data = array();
+
+ /**
+ * Default index for a app, empty
+ */
+ public function index(): void {}
+
+ /**
+ * Lodas a view
+ */
+ protected function view(string $CRIMSON_name, array $data = array()): void
+ {
+ $CRIMSON_path = WEB_ROOT . '/_views/' . $CRIMSON_name . '.php';
+ $this->CRIMSON_data = $data;
+
+ if (!is_file($CRIMSON_path)) {
+ CRIMSON_ERROR("View '{$CRIMSON_name}' does not exist!");
+ return;
+ }
+
+ extract($this->CRIMSON_data);
+ require($CRIMSON_path);
+ }
+
+ /**
+ * Redirectes to a link
+ */
+ protected function redirect(string $link): never
+ {
+ header('Location: '. $link, true, 301);
+ CRIMSON_DIE();
+ }
+
+ /**
+ * Loads a erorr page with a given
+ * error code
+ */
+ protected function error(int $code): never
+ {
+ // does not return
+ ROUTER->handle_error($code);
+ }
+
+}