$v) { unset($process[$key][$k]); if (is_array($v)) { $process[$key][stripslashes($k)] = $v; $process[] = &$process[$key][stripslashes($k)]; } else { $process[$key][stripslashes($k)] = ($filter ? $v : stripslashes($v)); } } } } } /** Escape or unescape string to use inside form [] * @param string * @param bool * @return string */ function bracket_escape($idf, $back = false) { // escape brackets inside name="x[]" static $trans = array(':' => ':1', ']' => ':2', '[' => ':3', '"' => ':4'); return strtr($idf, ($back ? array_flip($trans) : $trans)); } /** Get connection charset * @param Min_DB * @return string */ function charset($connection) { return (version_compare($connection->server_info, "5.5.3") >= 0 ? "utf8mb4" : "utf8"); // SHOW CHARSET would require an extra query } /** Return $trailing"; } /** Return \n"; } /** Get a nonce="" attribute with CSP nonce * @return string */ function nonce() { return ' nonce="' . get_nonce() . '"'; } /** Escape for HTML * @param string * @return string */ function h($string) { return str_replace("\0", "�", htmlspecialchars($string, ENT_QUOTES, 'utf-8')); } /** Escape for TD * @param string * @return string */ function nbsp($string) { return (trim($string) != "" ? h($string) : " "); } /** Convert \n to
* @param string * @return string */ function nl_br($string) { return str_replace("\n", "
", $string); // nl2br() uses XHTML before PHP 5.3 } /** Generate HTML checkbox * @param string * @param string * @param bool * @param string * @param string * @param string * @param string * @return string */ function checkbox($name, $value, $checked, $label = "", $onclick = "", $class = "", $labelled_by = "") { $return = "" . ($onclick ? script("qsl('input').onclick = function () { $onclick };", "") : "") ; return ($label != "" || $class ? "$return" . h($label) . "" : $return); } /** Generate list of HTML options * @param array array of strings or arrays (creates optgroup) * @param mixed * @param bool always use array keys for value="", otherwise only string keys are used * @return string */ function optionlist($options, $selected = null, $use_keys = false) { $return = ""; foreach ($options as $k => $v) { $opts = array($k => $v); if (is_array($v)) { $return .= ''; $opts = $v; } foreach ($opts as $key => $val) { $return .= '' . h($val); } if (is_array($v)) { $return .= ''; } } return $return; } /** Generate HTML radio list * @param string * @param array * @param string * @param string true for no onchange, false for radio * @param string * @return string */ function html_select($name, $options, $value = "", $onchange = true, $labelled_by = "") { if ($onchange) { return "" . (is_string($onchange) ? script("qsl('select').onchange = function () { $onchange };", "") : "") ; } $return = ""; foreach ($options as $key => $val) { $return .= ""; } return $return; } /** Generate HTML if $options are empty * @param string * @param array * @param string * @param string * @param string * @return string */ function select_input($attrs, $options, $value = "", $onchange = "", $placeholder = "") { $tag = ($options ? "select" : "input"); return "<$tag$attrs" . ($options ? ">