summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorspiderr <spiderr@bitweaver.org>2025-08-23 13:54:00 -0400
committerspiderr <spiderr@bitweaver.org>2025-08-23 13:54:00 -0400
commitc2eded66f67777e62cfb1ef27edcf8cb422dfd10 (patch)
tree7d9805c32a9b48bdc03cd5ec3a7fbb79dc784fcd /includes
parent256ce00dde43987798e1ad234b6a8e8d50791d16 (diff)
downloadthemes-c2eded66f67777e62cfb1ef27edcf8cb422dfd10.tar.gz
themes-c2eded66f67777e62cfb1ef27edcf8cb422dfd10.tar.bz2
themes-c2eded66f67777e62cfb1ef27edcf8cb422dfd10.zip
Add session based BitFeedback mechanism for passing messages between pageload
Diffstat (limited to 'includes')
-rw-r--r--includes/bit_setup_inc.php9
-rw-r--r--includes/classes/BitFeedback.php69
2 files changed, 74 insertions, 4 deletions
diff --git a/includes/bit_setup_inc.php b/includes/bit_setup_inc.php
index c0c1d54..ec4eafa 100644
--- a/includes/bit_setup_inc.php
+++ b/includes/bit_setup_inc.php
@@ -19,14 +19,11 @@ $gLibertySystem->registerService(
array( 'description' => 'Applied when user themes are enabled; See theme pkg administration to enable.' )
);
+// Set up themes engine
require_once( THEMES_PKG_CLASS_PATH.'BitThemes.php' );
-
BitThemes::loadSingleton();
global $gBitThemes, $gBitSmarty;
-
$gBitSmarty->verifyCompileDir();
-
-
// setStyle first, in case package decides it wants to reset the style in it's own <package>/bit_setup_inc.php
if( !$gBitThemes->getStyle() ) {
$gBitThemes->setStyle( DEFAULT_THEME );
@@ -78,3 +75,7 @@ if( !defined( 'CONFIG_IMAGE_PATH' ) ) {
if( !defined( 'CONFIG_IMAGE_URL' ) ) {
define( 'CONFIG_IMAGE_URL', THEMES_URL.$styleString.'/images/' );
}
+
+// Global feedback mechanism
+require_once( THEMES_PKG_CLASS_PATH.'BitFeedback.php' );
+
diff --git a/includes/classes/BitFeedback.php b/includes/classes/BitFeedback.php
new file mode 100644
index 0000000..874877f
--- /dev/null
+++ b/includes/classes/BitFeedback.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * bitweaver feedback system
+ *
+ * Copyright (c) 2004 bitweaver.org
+ * All Rights Reserved. See below for details and a complete list of authors.
+ * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See http://www.gnu.org/copyleft/lesser.html for details
+ *
+ * created 2025/8/23
+ *
+ * @author spider <spider@steelsun.com>
+ * @package themes
+ */
+
+class BitFeedback {
+ /**
+ * Adds a feedback message with a specified level for a given page key.
+ * Levels are based on Bootstrap alerts: success, info, warning, danger.
+ *
+ * @param string $level The alert level (success, info, warning, danger).
+ * @param string $message The feedback message.
+ * @param string $pagekey The key identifying the page or section.
+ */
+ public static function add( string $message, string $level, string $pagekey): void {
+ if (!session_id()) {
+ session_start();
+ }
+
+ if (!isset($_SESSION['bit_feedback'])) {
+ $_SESSION['bit_feedback'] = [];
+ }
+
+ if (!isset($_SESSION['bit_feedback'][$pagekey])) {
+ $_SESSION['bit_feedback'][$pagekey][$level] = [];
+ }
+
+ // Validate level
+ $validLevels = ['success', 'info', 'warning', 'danger'];
+ if (!in_array($level, $validLevels)) {
+ throw new InvalidArgumentException("Invalid level: $level. Must be one of: " . implode(', ', $validLevels));
+ }
+
+ $_SESSION['bit_feedback'][$pagekey][$level][] = $message;
+ }
+
+ /**
+ * Retrieves and clears all feedback messages for a given page key.
+ *
+ * @param string $pagekey The key identifying the page or section.
+ * @return array An array of feedback messages, each with 'level' and 'message'.
+ */
+ public static function get(string $pagekey): array {
+ if (!session_id()) {
+ session_start();
+ }
+ session_start();
+
+ $messages = [];
+
+ if (isset($_SESSION['bit_feedback'][$pagekey])) {
+ $messages = $_SESSION['bit_feedback'][$pagekey];
+ $_SESSION['bit_feedback'][$pagekey] = array();
+ unset($_SESSION['bit_feedback'][$pagekey]);
+ }
+
+ return $messages;
+ }
+}
+