';
echo ': time taken: '. number_format($GLOBALS['__DB_INC_INTERNALS__']['last_time'], 4) .'';
echo ', affected rows: '. db_affected() .'';
echo ', total sql time: '. number_format($GLOBALS['__DB_INC_INTERNALS__']['total_sql_time'], 4) .'';
echo ''. preg_replace('!\s+!', ' ', htmlspecialchars($query)) .'
';
return $result;
}
}
function db_rowobj($result)
{
return $result->fetch_object();
}
function db_rowarr($result)
{
return $result->fetch_row();
}
function q_singleval($query)
{
$r = q($query);
if (($result = $r->fetch_row()) !== false && isset($result)) {
return isset($result) ? $result[0] : '';
}
}
function q_limit($query, $limit, $off=0)
{
return $query .' LIMIT '. $limit .' OFFSET '. $off;
}
function q_concat($arg)
{
// MySQL badly breaks the SQL standard by redefining || to mean OR.
$tmp = func_get_args();
return 'CONCAT('. implode(',', $tmp) .')';
}
function q_rownum() {
q('SET @seq=0'); // For simulating rownum.
return '(@seq:=@seq+1)';
}
function q_bitand($fieldLeft, $fieldRight) {
return $fieldLeft .' & '. $fieldRight;
}
function q_bitor($fieldLeft, $fieldRight) {
return '('. $fieldLeft .' | '. $fieldRight .')';
}
function q_bitnot($bitField) {
return '~'. $bitField;
}
function db_saq($q)
{
$r = q($q);
return $r->fetch_row() ;
}
function db_sab($q)
{
$r = q($q);
return $r->fetch_object();
}
function db_qid($q)
{
q($q);
return db::$db->insert_id;
}
function db_arr_assoc($q)
{
$r = q($q);
return $r->fetch_array(MYSQLI_ASSOC);
}
function db_fetch_array($r)
{
return is_object($r) ? $r->fetch_array(MYSQLI_ASSOC) : null;
}
function db_li($q, &$ef, $li=0)
{
$r = db::$db->query($q);
if ($r) {
return ($li ? db::$db->insert_id : $r);
}
/* Duplicate key. */
if (db::$db->errno == 1062) {
$ef = ltrim(strrchr(db::$db->error, ' '));
return null;
} else {
fud_sql_error_handler($q, db::$db->error, db::$db->errno, db_version());
}
}
function ins_m($tbl, $flds, $types, $vals)
{
q('INSERT IGNORE INTO '. $tbl .' ('. $flds .') VALUES ('. implode('),(', $vals) .')');
}
function db_all($q)
{
$f = array();
$c = uq($q);
while ($r = $c->fetch_row()) {
$f[] = $r[0];
}
return $f;
}
function _esc($s)
{
return '\''. db::$db->real_escape_string($s ?? '') .'\'';
}function read_msg_body($off, $len, $id)
{
if ($off == -1) { // Fetch from DB and return.
return q_singleval('SELECT data FROM fud30_msg_store WHERE id='. $id);
}
if (!$len) { // Empty message.
return;
}
// Open file if it's not already open.
if (!isset($GLOBALS['__MSG_FP__'][$id])) {
$GLOBALS['__MSG_FP__'][$id] = fopen($GLOBALS['MSG_STORE_DIR'] .'msg_'. $id, 'rb');
}
// Read from file.
fseek($GLOBALS['__MSG_FP__'][$id], $off);
return fread($GLOBALS['__MSG_FP__'][$id], $len);
}$GLOBALS['__revfs'] = array('"', '<', '>', '&');
$GLOBALS['__revfd'] = array('"', '<', '>', '&');
function reverse_fmt($data)
{
$s = $d = array();
if (empty($data)) return '';
foreach ($GLOBALS['__revfs'] as $k => $v) {
if (strpos($data, $v) !== false) {
$s[] = $v;
$d[] = $GLOBALS['__revfd'][$k];
}
}
return $s ? str_replace($s, $d, $data) : $data;
}
if (!($FUD_OPT_2 & 16777216) || (!($FUD_OPT_2 & 67108864) && $mode == 'u')) {
fud_use('cookies.inc');
fud_use('users.inc');
std_error('disabled');
}
if ($FUD_OPT_2 & 16384) {
ob_start('ob_gzhandler', (int)$PHP_COMPRESSION_LEVEL);
}
function sp($data)
{
return '';
}
function email_format($data)
{
return str_replace(array('.', '@'), array(' dot ', ' at '), $data);
}
function multi_id($data)
{
$out = array();
foreach (explode(',', (string)$data) as $v) {
$out[] = (int) $v;
}
return implode(',', $out);
}
$enc_src = array('