Ejemplo n.º 1
0
function fs_test_db_connection($host, $username, $password, $db_name, $table_prefix)
{
    if (!fs_is_admin()) {
        return fs_get_db_response("access_denied", "Access denied : fs_test_db_connection");
    }
    require_once FS_ABS_PATH . "/lib/ezsql/shared/ez_sql_core.php";
    require_once FS_ABS_PATH . "/lib/ezsql/mysql/ez_sql_mysql.php";
    $conn = new fs_ezSQL_mysql($username, $password, $db_name, $host);
    $conn->hide_errors();
    if (!$conn->connect($username, $password, $host, false)) {
        return fs_get_db_response('db_connect_error', $conn->last_error);
    }
    if (($mysql_version = $conn->get_var("select version()")) === false) {
        return fs_get_db_response('db_access_error', $conn->last_error);
    }
    if ($conn->query("use `{$db_name}`") === false) {
        return fs_get_db_response('db_missing', $db_name);
    }
    if ($conn->query("show tables") === false) {
        return fs_get_db_response('db_access_error', $conn->last_error);
    }
    $version_table = $table_prefix . 'firestats_version';
    $sql = "SHOW TABLES LIKE '{$version_table}'";
    $results = $conn->query($sql);
    if ($results === FALSE) {
        return fs_get_db_response('db_access_error', $conn->last_error);
    }
    if ($results == 0) {
        return fs_get_db_response('tables_missing');
    }
    fs_load_config();
    if (!fs_same_config($host, $username, $password, $db_name, $table_prefix)) {
        return fs_get_db_response('other_db_detected');
    }
    return fs_get_db_response('db_installed');
}