1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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] = [];
unset($_SESSION['bit_feedback'][$pagekey]);
}
return $messages;
}
}
|