/**
 * Helper function for db_query().
 *
 * @access private
 * @static
 */
function xanth_mysql_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 xDBMysql::escapeString(array_shift($args));
        case '%%':
            return '%';
        case '%f':
            return (double) array_shift($args);
        case '%b':
            // binary data
            return xDBMysql::encodeBlob(array_shift($args));
    }
}
 /**
  *
  */
 function install()
 {
     ob_start();
     //select DB
     if (xConf::get('db_type', 'mysql') == 'mysql') {
         $db = new xDBMysql();
         $db->connect(xConf::get('db_host', ''), xConf::get('db_user', ''), xConf::get('db_pass', ''), xConf::get('db_port', ''));
         xDB::setDB($db);
         $name = xConf::get('db_name', '');
         $db->query("DROP DATABASE {$name}");
         $db->query("CREATE DATABASE {$name}");
         $db->selectDB($name);
     } else {
         exit('Unknown database type');
     }
     //error handler
     set_error_handler('xanth_php_error_handler');
     $comp = new xModuleManager();
     $comp->initModules('engine', 'comp', false, false, array(new xFrameworkComponent()));
     $comp->invokeAll('xm_install', array($name = xConf::get('db_name', '')));
     $comp = new xModuleManager();
     $comp->initModules('extensions', 'ext', true, true);
     $comp->invokeAll('xm_install', array($name = xConf::get('db_name', '')));
     //print log
     echo xLogEntry::renderFromScreen();
     echo "Xanthin Successfully installed";
     ob_end_flush();
 }