comparison msitegen.inc.php @ 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 cd8a29647c09
children ddb30c989b47
comparison
equal deleted inserted replaced
792:b42b23073209 793:ff6e6c6200a4
319 319
320 return $str.stGetFormOptionListEnd($indent, $outer); 320 return $str.stGetFormOptionListEnd($indent, $outer);
321 } 321 }
322 322
323 323
324 function stErrorStrF($msg, $data) 324 function stErrorStrF($fmt)
325 { 325 {
326 stError($msg); 326 $argc = func_num_args();
327 $argv = func_get_args();
328
329 $len = strlen($fmt);
330 $str = "";
331 $argn = 1;
332 for ($pos = 0; $pos < $len; $pos++)
333 {
334 if ($fmt[$pos] == "%")
335 {
336 $pos++;
337 if ($fmt[$pos] == "%")
338 $str .= "%";
339 else
340 {
341 $n = intval($fmt[$pos]);
342 if ($n >= 1 && $n < $argc)
343 $str .= $argv[$n];
344 else
345 {
346 error_log("Invalid stErrorStrF() format string, arg #".$n.
347 " referenced, but only has ".$argc." arguments: '".$fmt."'\n");
348 return FALSE;
349 }
350 }
351 }
352 else
353 $str .= $fmt[$pos];
354 }
355
356 stError($str);
327 return FALSE; 357 return FALSE;
328 } 358 }
329 359
330 360
331 // 361 //
366 function stDoCheckRequestItem($name, &$sdata, $nindex, $argc, $argv) 396 function stDoCheckRequestItem($name, &$sdata, $nindex, $argc, $argv)
367 { 397 {
368 if (stGetSetting("debug")) 398 if (stGetSetting("debug"))
369 { 399 {
370 if (!isset($_REQUEST[$name])) 400 if (!isset($_REQUEST[$name]))
371 return stErrorStrF("Required data item '".$name."' not set.", $name); 401 return stErrorStrF("Required data item '%1' not set.", $name);
372 402
373 $data = trim($_REQUEST[$name]); 403 $data = trim($_REQUEST[$name]);
374 } 404 }
375 else 405 else
376 { 406 {
377 if (!isset($_POST[$name])) 407 if (!isset($_POST[$name]))
378 return stErrorStrF("Required data item '".$name."' not set.", $name); 408 return stErrorStrF("Required data item '%1' not set.", $name);
379 409
380 $data = trim($_POST[$name]); 410 $data = trim($_POST[$name]);
381 } 411 }
382 412
383 $slen = strlen($data); 413 $slen = strlen($data);
394 // Check type of the data 424 // Check type of the data
395 switch ($check[1]) 425 switch ($check[1])
396 { 426 {
397 case VT_STR: 427 case VT_STR:
398 if ($slen == 0) 428 if ($slen == 0)
399 return stErrorStrF($check[2], $data); 429 return stErrorStrF($check[2], $slen);
400 break; 430 break;
401 431
402 case VT_INT: 432 case VT_INT:
403 case VT_BOOL: 433 case VT_BOOL:
404 if ($slen == 0 || !is_numeric($data)) 434 if ($slen == 0 || !is_numeric($data))
414 { 444 {
415 case VT_STR: 445 case VT_STR:
416 case VT_TEXT: 446 case VT_TEXT:
417 // Strings get their length checked 447 // Strings get their length checked
418 if (!stChkRequestDataItem($check[0], $slen, $check[2])) 448 if (!stChkRequestDataItem($check[0], $slen, $check[2]))
419 return stErrorStrF($check[3], $data); 449 return stErrorStrF($check[3], $slen, $check[2]);
420 break; 450 break;
421 451
422 case VT_INT: 452 case VT_INT:
423 case VT_BOOL: 453 case VT_BOOL:
424 // Integer values checked against .. value 454 // Integer values checked against .. value
425 if (!stChkRequestDataItem($check[0], intval($data), $check[2])) 455 if (!stChkRequestDataItem($check[0], intval($data), $check[2]))
426 return stErrorStrF($check[3], $data); 456 return stErrorStrF($check[3], intval($data), $check[2]);
427 break; 457 break;
428 } 458 }
429 break; 459 break;
430 460
431 case CHK_CUSTOM: 461 case CHK_CUSTOM: