From 4abebd3fa739ac9477aa7f2415b1d858a91212a7 Mon Sep 17 00:00:00 2001
From: Graham Cole <chckens@sucs.org>
Date: Sat, 27 Feb 2010 18:13:42 +0000
Subject: [PATCH] add a new function to save a message flash in the session
 data to be displayed on the next page load (e.g. when we're doing
 post/redirect/get)

---
 lib/error.php   |  7 +++++++
 lib/session.php | 12 ++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/lib/error.php b/lib/error.php
index dcafd3c..fb516bb 100644
--- a/lib/error.php
+++ b/lib/error.php
@@ -23,6 +23,13 @@ function message_flash($message) {
     $messages['info'][] = $message;
 }
 
+function message_flash_postponed($message) {
+	global $session;
+	$session->data['messages']['info'][] = $message;
+	$session->save(); 
+}
+
+
 set_error_handler("handle_messages", (E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE));
 
 // empty messages array was causing PHP to spew notices
diff --git a/lib/session.php b/lib/session.php
index a0f461c..da7c108 100644
--- a/lib/session.php
+++ b/lib/session.php
@@ -153,6 +153,18 @@ private $datahash='';		// hash of data field
 
 		// update time stamp
 		$DB->Execute( "update {$this->table} set lastseen=NOW() where hash=?", array($this->token));
+
+		// check to see if there any messages stored for this user
+		if (isset($this->data['messages'])) {
+			global $messages;
+			if (is_array($messages)) {
+				$messages += $this->data['messages']; 
+			} else {
+				$messages = $this->data['messages'];
+			}
+			unset($this->data['messages']);
+			$this->save();
+		}
 	}
 	
 	// generate a string suitable to be used as a session ID
-- 
GitLab