diff --git a/lib/error.php b/lib/error.php index dcafd3c2d245abc1eda551a0abba275935b653e8..fb516bb8c9b4da52ae73c608b07a72e606dbda6a 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 a0f461c1e2422678914ad27b767df140ae80028e..da7c10845444ad7fc65e2eb63efd161942f8a248 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