default value. Depending on the type of the default value, * arguments will be typecast accordingly. For example, if * 'flag' => false is passed, all arguments for that will be cast to * boolean. Do *not* pass null, as it will not be recognized. * @param $aliases * */ function htmlpurifier_parse_args(&$AC, $aliases) { if (empty($_GET)) { array_shift($_SERVER['argv']); $o = false; $bool = false; $val_is_bool = false; foreach ($_SERVER['argv'] as $opt) { if ($o !== false) { $v = $opt; } else { if ($opt === '') continue; if (strlen($opt) > 2 && strncmp($opt, '--', 2) === 0) { $o = substr($opt, 2); } elseif ($opt[0] == '-') { $o = substr($opt, 1); } else { $lopt = strtolower($opt); if ($bool !== false && ($opt === '0' || $lopt === 'off' || $lopt === 'no')) { $o = $bool; $v = false; $val_is_bool = true; } elseif (isset($aliases[''])) { $o = $aliases['']; } } $bool = false; if (!isset($AC[$o]) || !is_bool($AC[$o])) { if (strpos($o, '=') === false) { continue; } list($o, $v) = explode('=', $o); } elseif (!$val_is_bool) { $v = true; $bool = $o; } $val_is_bool = false; } if ($o === false) continue; htmlpurifier_args($AC, $aliases, $o, $v); $o = false; } } else { foreach ($_GET as $o => $v) { if (get_magic_quotes_gpc()) $v = stripslashes($v); htmlpurifier_args($AC, $aliases, $o, $v); } } } /** * Actually performs assignment to $AC, see htmlpurifier_parse_args() * @param $AC Arguments array to write to * @param $aliases Aliases for options * @param $o Argument name * @param $v Argument value */ function htmlpurifier_args(&$AC, $aliases, $o, $v) { if (isset($aliases[$o])) $o = $aliases[$o]; if (!isset($AC[$o])) return; if (is_string($AC[$o])) $AC[$o] = $v; if (is_bool($AC[$o])) $AC[$o] = ($v === '') ? true :(bool) $v; if (is_int($AC[$o])) $AC[$o] = (int) $v; } /** * Adds a test-class; depending on the file's extension this may involve * a regular UnitTestCase or a special PHPT test */ function htmlpurifier_add_test($test, $test_file, $only_phpt = false) { switch (strrchr($test_file, ".")) { case '.phpt': return $test->addTestCase(new PHPT_Controller_SimpleTest($test_file)); case '.php': require_once $test_file; return $test->addTestClass(path2class($test_file)); case '.vtest': return $test->addTestCase(new HTMLPurifier_ConfigSchema_ValidatorTestCase($test_file)); default: trigger_error("$test_file is an invalid file for testing", E_USER_ERROR); } } /** * Debugging function that prints tokens in a user-friendly manner. */ function printTokens($tokens, $index = null) { $string = '
'; $generator = new HTMLPurifier_Generator(); foreach ($tokens as $i => $token) { if ($index === $i) $string .= '['; $string .= "$i"; $string .= $generator->escape($generator->generateFromToken($token)); if ($index === $i) $string .= ']'; } $string .= ''; echo $string; }