/**
 * Helper function for db_query().
 */
function _xanth_db_query_callback($match, $init = FALSE)
{
    static $args = NULL;
    if ($init) {
        $args = $match;
        return;
    }
    switch ($match[1]) {
        case '%d':
            return (int) array_shift($args);
        case '%s':
            return xanth_db_escape_string(array_shift($args));
        case '%%':
            return '%';
        case '%f':
            return (double) array_shift($args);
        case '%b':
            // binary data
            return xanth_db_encode_blob(array_shift($args));
    }
}
/**
*
*/
function xanth_db_log($level, $component, $message, $filename, $line)
{
    //manual check to prevent deadlocks
    if (!is_int($level) || !is_int($line)) {
        return;
    }
    $message = xanth_db_escape_string($message);
    $filename = xanth_db_escape_string($filename);
    $component = xanth_db_escape_string($component);
    $result = mysql_query("INSERT INTO xanth_log(level,component,message,filename,line,timestamp) VALUES({$level},'{$component}','{$message}','{$filename}',{$line},NOW())");
    if (!$result) {
        exit('Logging failed:' . mysql_error());
    }
}