fix array printing in exception handlers
authorDenis Ovsienko <denis@ovsienko.info>
Thu, 1 Nov 2018 23:45:50 +0000 (23:45 +0000)
committerDenis Ovsienko <denis@ovsienko.info>
Thu, 1 Nov 2018 23:45:50 +0000 (23:45 +0000)
PHP provides means to encode arrays in HTTP request parameters. However,
the existing dumpArray() function used not to print such parameters
properly, also resulting in two PHP warnings. Add another function,
dumpArrayElement(), and rearrange the code to distinguish integers,
arrays and other types (i.e. strings). Drop a reference to an undefined
CSS class while at it.

[skip ci]

wwwroot/inc/exceptions.php

index f878d33..adf545a 100644 (file)
@@ -335,11 +335,34 @@ class RTImageError extends RackTablesError
        }
 }
 
+function dumpArrayElement ($x)
+{
+       switch (gettype ($x))
+       {
+       case 'integer':
+               echo $x;
+               break;
+       case 'array':
+               dumpArray ($x);
+               break;
+       default:
+               echo stringForTD ($x, 100);
+       }
+}
+
 function dumpArray ($arr)
 {
-       echo '<table class="exceptionParametersDump">';
+       $self = __FUNCTION__;
+       echo '<table><caption>(array)</caption>';
        foreach ($arr as $key => $value)
-               echo '<tr><th class=tdright>' . stringForTD ($key) . '</th><td>' . stringForTD ($value, 100) . '</td></tr>';
+       {
+               echo '<tr valign=top><th class=tdright>';
+               // stringForTD() does not handle key 0 properly.
+               dumpArrayElement ($key);
+               echo '</th><td>';
+               dumpArrayElement ($value);
+               echo '</td></tr>';
+       }
        echo '</table>';
 }