# HG changeset patch # User Matti Hamalainen # Date 1416606282 -7200 # Node ID ff6e6c6200a44aa38da7226df4d66151a57ab3c1 # Parent b42b23073209da0a0be00650ac95d050853f0f84 Add improved error message formatting to stChkRequestItem*() functions. diff -r b42b23073209 -r ff6e6c6200a4 msitegen.inc.php --- 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;