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

View File

@ -27,6 +27,8 @@
if (!class_exists('messages')) { if (!class_exists('messages')) {
class messages { class messages {
private $messages;
static function add($message, $mood = NULL, $delay = NULL) { static function add($message, $mood = NULL, $delay = NULL) {
$_SESSION["messages"][] = array(message => $message, mood => $mood, delay => $delay); $_SESSION["messages"][] = array(message => $message, mood => $mood, delay => $delay);
@ -36,15 +38,8 @@ if (!class_exists('messages')) {
$html = "${spacer}//render the messages\n"; $html = "${spacer}//render the messages\n";
$spacer .="\t"; $spacer .="\t";
if (strlen($_SESSION['message']) > 0) { if (strlen($_SESSION['message']) > 0) {
$message_text = addslashes($_SESSION['message']); add($_SESSION['message'], $_SESSION['message_mood'], $_SESSION['message_delay']);
$message_mood = $_SESSION['message_mood'] ?: 'default'; unset($_SESSION['message'], $_SESSION['message_mood'], $_SESSION['message_delay']);
$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";
} }
if(count($_SESSION['messages']) > 0 ){ if(count($_SESSION['messages']) > 0 ){
foreach ($_SESSION['messages'] as $message) { foreach ($_SESSION['messages'] as $message) {
@ -65,6 +60,35 @@ if (!class_exists('messages')) {
} }
return $html; 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);
}
} }
} }