JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Fix db_get_value after mysql->mysqli upgrade
[wfpl.git] / messages.php
index 2d065e3..a762e5e 100644 (file)
@@ -1,71 +1,77 @@
 <?php
 
-#  Copyright (C) 2007 Jason Woofenden
-#
-#  This program is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#  
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#  
-#  You should have received a copy of the GNU General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# This program is in the public domain within the United States. Additionally,
+# we waive copyright and related rights in the work worldwide through the CC0
+# 1.0 Universal public domain dedication, which can be found at
+# http://creativecommons.org/publicdomain/zero/1.0/
 
 
-# This file is useful for putting message box(es) on the screen.
+# This file is useful for putting message box(es) on the screen. If you include
+# session_messages.php these messages can even persist accross http redirects
+# (such as you should do after receiving a POST.
 #
 # Just call message("message here") whenever you have something to report.
 #
-# Once a template is loaded, call display_messages(). Your template should have
-# a <!--~message?~--> section with a ~text:html~ tag in it.
 #
-# If you want a divider (any text between message boxes when there are
-# multiple boxes) provide a sub-template section named "separator"
-# INSIDE "message" at the begining of it.
+# Once a template is loaded, call display_messages(). run.php will call
+# display_messages() for you automaticallly after your main function returns
+# (so long as you require_once this file.) If you want these messages to
+# persist accross browser redirects, then you should
+# require_once(__DIR__.'/'.'lib/wfpl/session_messages.php')
+#
+# Just make sure your template has a <!--~$messages {~--> section with a
+# ~message html~ tag in it.
 #
-# If you'd like something around the group of all message boxes, you can put
-# the whole thing in a sub-template section called "messages"
-
 # Simple example:
 #
-#    <!--~message?~-->
-#        <p>~text:html~</p>
-#    <!--~.~-->
-
+#    <!--~$messages {~-->
+#       <p>~message html~</p>
+#    <!--~}~-->
+#
 # Full-featured example:
 #
-#    <!--~messages?~-->
-#         <div style="border: 2px solid red; background: #f88; padding: 5px">
-#         <!--~message?~-->
-#             <!--~separator?~-->
-#                 <hr />
-#             <!--~separator.~-->
-#             <p style="font-size: 120%">~text:html~</p>
-#         <!--~message.~-->
-#         </div>
-#    <!--~messages.~-->
+#    <!--~$messages once_if {~-->
+#       <div id="wfpl_messages">
+#          <!--~$messages {~-->
+#             <p>~message html~</p>
+#             <!--~ sep {~-->
+#                <hr>
+#             <!--~}~-->
+#          <!--~}~-->
+#       </div>
+#    <!--~}~-->
 
-require_once('code/wfpl/template.php');
+require_once(__DIR__.'/'.'template.php');
 
+# call this to display a message
 function message($msg) {
        if(!isset($GLOBALS['wfpl_messages'])) {
-               if(function_exists('session_restore_messages')) {
-                       $GLOBALS['wfpl_messages'] = session_restore_messages();
-               } else $GLOBALS['wfpl_messages'] = array();
+               $GLOBALS['wfpl_messages'] = array();
        }
 
        $GLOBALS['wfpl_messages'][] = $msg;
 }
 
-function display_messages(&$tem = NULL) {
-       if(!$GLOBALS['wfpl_messages']) return;
-       foreach($GLOBALS['wfpl_messages'] as $msg) {
-               $sub = array('text' => $msg);
-               $GLOBALS['wfpl_tem_data']['message'][] = $sub;
-               $GLOBALS['wfpl_tem_data']['messages'] = TRUE;
+# destructive
+function get_messages() {
+       if(!isset($GLOBALS['wfpl_messages'])) {
+               $messages = array();
+       } else {
+               $messages = $GLOBALS['wfpl_messages'];
+               unset($GLOBALS['wfpl_messages']);
+       }
+
+       if(function_exists('session_restore_messages')) {
+               $messages = array_merge(session_restore_messages(), $messages);
+       }
+
+       return $messages;
+}
+
+# called automatically by run.php
+function display_messages(&$tem = NULL, $key = '$messages') {
+       if(!$tem) {
+               $tem = &$GLOBALS['wfpl_template'];
        }
+       $tem->data[$key] = columnize(get_messages(), 'message');
 }