Selaa lähdekoodia

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
Mafoo 8 vuotta sitten
vanhempi
commit
220a5a2368
2 muutettua tiedostoa jossa 37 lisäystä ja 24 poistoa
  1. 4 15
      login.php
  2. 33 9
      resources/classes/messages.php

+ 4 - 15
login.php

@@ -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")){

+ 33 - 9
resources/classes/messages.php

@@ -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);
+		}
+
 	}
 }