Enhance - add message stash/pop (#2660)

add new methods to messages class to let it take care of stash and pop of the messages
update login.php to use new methods
tweak html function to put the $_SESSION['message'] in the stack so there is only one code point to maintain for rendering
This commit is contained in:
Mafoo
2017-06-10 05:15:18 +01:00
committed by FusionPBX
parent 9ecba1d010
commit bf3faaa051
2 changed files with 37 additions and 24 deletions

View File

@@ -30,17 +30,9 @@
ini_set("session.cookie_httponly", True);
if (!isset($_SESSION)) { session_start(); }
//retain message
if (isset($_SESSION["message"])) {
$message_mood = $_SESSION["message_mood"];
$message = $_SESSION["message"];
}
else {
$message_mood = null;
$message = null;
$_SESSION["message"] = null;
$_SESSION["message_mood"] = null;
}
//retain messages
$messagse = new messages;
$messages->stash();
//destroy session
session_unset();
@@ -69,10 +61,7 @@
require_once "resources/require.php";
//restore message
if ($message != '') {
$_SESSION["message_mood"] = $message_mood;
$_SESSION["message"] = $message;
}
$messages->pop();
//use custom login, if present, otherwise use default login
if (file_exists($_SERVER["PROJECT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/login.php")){

View File

@@ -27,6 +27,8 @@
if (!class_exists('messages')) {
class messages {
private $messages;
static function add($message, $mood = NULL, $delay = NULL) {
$_SESSION["messages"][] = array(message => $message, mood => $mood, delay => $delay);
@@ -36,15 +38,8 @@ if (!class_exists('messages')) {
$html = "${spacer}//render the messages\n";
$spacer .="\t";
if (strlen($_SESSION['message']) > 0) {
$message_text = addslashes($_SESSION['message']);
$message_mood = $_SESSION['message_mood'] ?: 'default';
$message_delay = $_SESSION['message_delay'];
$html .= "${spacer}display_message('".str_replace(array("\r\n", "\n", "\r"),'\\n', $message_text)."', '".$message_mood."'";
if ($message_delay != '') {
$html .= ", '".$message_delay."'";
}
$html .= ");\n";
add($_SESSION['message'], $_SESSION['message_mood'], $_SESSION['message_delay']);
unset($_SESSION['message'], $_SESSION['message_mood'], $_SESSION['message_delay']);
}
if(count($_SESSION['messages']) > 0 ){
foreach ($_SESSION['messages'] as $message) {
@@ -65,6 +60,35 @@ if (!class_exists('messages')) {
}
return $html;
}
public function stash() {
if (strlen($_SESSION['message']) > 0) {
add($_SESSION['message'], $_SESSION['message_mood'], $_SESSION['message_delay']);
unset($_SESSION['message'], $_SESSION['message_mood'], $_SESSION['message_delay']);
}
if (is_array($this->messages)) {
if (is_array($_SESSION["messages"])) {
$this->messages = array_merge($this->messages, $_SESSION["messages"]);
}
}
else {
$this->messages = $_SESSION["messages"];
}
unset($_SESSION['messages']);
}
public function pop() {
if (is_array($_SESSION["messages"])) {
if (is_array($this->messages)) {
$_SESSION["messages"] = array_merge($_SESSION["messages"], $this->messages);
}
}
else {
$_SESSION["messages"] = $this->messages;
}
unset($this->messages);
}
}
}