diff options
| author | spiderr <spiderr@bitweaver.org> | 2025-08-23 13:54:00 -0400 |
|---|---|---|
| committer | spiderr <spiderr@bitweaver.org> | 2025-08-23 13:54:00 -0400 |
| commit | c2eded66f67777e62cfb1ef27edcf8cb422dfd10 (patch) | |
| tree | 7d9805c32a9b48bdc03cd5ec3a7fbb79dc784fcd /includes | |
| parent | 256ce00dde43987798e1ad234b6a8e8d50791d16 (diff) | |
| download | themes-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.php | 9 | ||||
| -rw-r--r-- | includes/classes/BitFeedback.php | 69 |
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; + } +} + |
