changeset 793:ff6e6c6200a4

Add improved error message formatting to stChkRequestItem*() functions.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 21 Nov 2014 23:44:42 +0200
parents b42b23073209
children 18f88945d5f1
files msitegen.inc.php
diffstat 1 files changed, 37 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/msitegen.inc.php	Fri Nov 21 21:42:47 2014 +0200
+++ b/msitegen.inc.php	Fri Nov 21 23:44:42 2014 +0200
@@ -321,9 +321,39 @@
 }
 
 
-function stErrorStrF($msg, $data)
+function stErrorStrF($fmt)
 {
-  stError($msg);
+  $argc = func_num_args();
+  $argv = func_get_args();
+  
+  $len = strlen($fmt);
+  $str = "";
+  $argn = 1;
+  for ($pos = 0; $pos < $len; $pos++)
+  {
+    if ($fmt[$pos] == "%")
+    {
+      $pos++;
+      if ($fmt[$pos] == "%")
+        $str .= "%";
+      else
+      {
+        $n = intval($fmt[$pos]);
+        if ($n >= 1 && $n < $argc)
+          $str .= $argv[$n];
+        else
+        {
+          error_log("Invalid stErrorStrF() format string, arg #".$n.
+            " referenced, but only has ".$argc." arguments: '".$fmt."'\n");
+          return FALSE;
+        }
+      }
+    }
+    else
+      $str .= $fmt[$pos];
+  }
+  
+  stError($str);
   return FALSE;
 }
 
@@ -368,14 +398,14 @@
   if (stGetSetting("debug"))
   {
     if (!isset($_REQUEST[$name]))
-      return stErrorStrF("Required data item '".$name."' not set.", $name);
+      return stErrorStrF("Required data item '%1' not set.", $name);
 
     $data = trim($_REQUEST[$name]);
   }
   else
   {
     if (!isset($_POST[$name]))
-      return stErrorStrF("Required data item '".$name."' not set.", $name);
+      return stErrorStrF("Required data item '%1' not set.", $name);
 
     $data = trim($_POST[$name]);
   }
@@ -396,7 +426,7 @@
         {
           case VT_STR:
             if ($slen == 0)
-              return stErrorStrF($check[2], $data);
+              return stErrorStrF($check[2], $slen);
             break;
 
           case VT_INT:
@@ -416,14 +446,14 @@
           case VT_TEXT:
             // Strings get their length checked
             if (!stChkRequestDataItem($check[0], $slen, $check[2]))
-                return stErrorStrF($check[3], $data);
+                return stErrorStrF($check[3], $slen, $check[2]);
             break;
 
           case VT_INT:
           case VT_BOOL:
             // Integer values checked against .. value
             if (!stChkRequestDataItem($check[0], intval($data), $check[2]))
-                return stErrorStrF($check[3], $data);
+                return stErrorStrF($check[3], intval($data), $check[2]);
             break;
         }
         break;