function olc_db_test_create_db_permission($database)
{
    global $db_error;
    $db_created = false;
    $db_error = false;
    if ($database) {
        if (!$db_error) {
            if (!@olc_db_select_db($database)) {
                $db_created = true;
                if (!@olc_db_query_installer('create database ' . $database)) {
                    $db_error = true;
                }
            } else {
                $db_error = true;
            }
            if (!$db_error) {
                if (@olc_db_select_db($database)) {
                    if (@olc_db_query_installer('create table temp ( temp_id int(5) )')) {
                        if (@olc_db_query_installer('drop table temp')) {
                            if ($db_created) {
                                if (@olc_db_query_installer('drop database ' . $database)) {
                                } else {
                                    $db_error = true;
                                }
                            }
                        } else {
                            $db_error = true;
                        }
                    } else {
                        $db_error = true;
                    }
                } else {
                    $db_error = true;
                }
            }
        }
        if ($db_error) {
            if (USE_ADODB === true) {
                global ${$link};
                $db_error = ${$link}->ErrorMsg();
            } else {
                $db_error = mysql_error();
            }
            return false;
        } else {
            return true;
        }
    } else {
        $db_error = 'Keine Datenbank gewählt.';
        return false;
    }
}
예제 #2
0
function olc_db_test_connection($database)
{
    global $db_error;
    $db_error = false;
    if (olc_db_select_db($database)) {
        $db_error = !olc_db_query(SELECT_COUNT . SQL_FROM . TABLE_CONFIGURATION);
    } else {
        $db_error = true;
    }
    if ($db_error) {
        if (USE_ADODB === true) {
            global ${$link};
            $db_error = ${$link}->ErrorMsg();
        } else {
            $db_error = mysql_error();
        }
        return false;
    } else {
        return true;
    }
}
function olc_db_install($database, $sql_file, $table_prefix)
{
    global $db_error, $parse_time;
    $db_error = false;
    if (!@olc_db_select_db($database)) {
        if (@olc_db_query('create database ' . $database)) {
            olc_db_select_db($database);
        } else {
            if (USE_ADODB === true) {
                global ${$link};
                $db_error = ${$link}->ErrorMsg();
            } else {
                $db_error = mysql_error();
            }
        }
    }
    if ($db_error) {
        return false;
    } else {
        if (file_exists($sql_file)) {
            //$install_queries=file_get_contents($sql_file);
            $standard_prefix = 'prf_';
            $adjust_prefix = $table_prefix != $standard_prefix;
            define('PAGE_PARSE_START_TIME', microtime());
            $install_queries = file($sql_file);
            $n = sizeof($install_queries);
            if (USE_AJAX) {
                $chunks = $n / 100;
                $chunk = 0;
                $progress_file = 'progress.txt';
                @unlink($progress_file);
                $progress_file_content = 'p|100|';
            }
            for ($i = 0; $i < $n; $i++) {
                $query_line = trim($install_queries[$i]);
                if ($query_line) {
                    if ($query_line[0] != HASH) {
                        $query = EMPTY_STRING;
                        while (true) {
                            $query_line = trim($install_queries[$i]);
                            $query .= $query_line;
                            if (substr($query_line, -1, 1) == SEMI_COLON) {
                                if ($adjust_prefix) {
                                    $query = str_replace($standard_prefix, $table_prefix, $query);
                                }
                                if (@olc_db_query($query)) {
                                    $sql_statements++;
                                    break;
                                } else {
                                    $db_error = ERROR_WRONG_SQL_STATEMENT . HTML_BR . HTML_BR . nl2br($query) . HTML_BR . HTML_BR;
                                    return false;
                                }
                            } else {
                                $i++;
                            }
                        }
                        if (USE_AJAX) {
                            $store_status = $i % $chunks == 1;
                            if ($store_status) {
                                $chunk++;
                                $retries = 1;
                                $f = fopen($progress_file, 'w');
                                $content = $progress_file_content . $chunk;
                                while (fwrite($f, $content) === false) {
                                    if ($retries == 20) {
                                        break;
                                    } else {
                                        usleep(200000);
                                        $retries++;
                                    }
                                }
                                fclose($f);
                            }
                        }
                    }
                }
            }
            $show_parse_time_anyway = true;
            $is_installer = true;
            define('NOT_IS_ADMIN_FUNCTION', false);
            define('SESSION_CURRENCY', 'EUR');
            include DIR_FS_INC . 'olc_precision.inc.php';
            include DIR_FS_INC . 'olc_get_parse_time.inc.php';
            $sql_per_second = number_format($sql_statements / $parse_time_raw, 1, CURRENCY_DECIMAL_POINT, CURRENCY_THOUSANDS_POINT);
            $sql_statements = number_format($sql_statements, 0, CURRENCY_DECIMAL_POINT, CURRENCY_THOUSANDS_POINT);
            $parse_time = sprintf(TEXT_PARSE_TIME, $sql_statements, $parse_time, $sql_per_second);
        } else {
            $db_error = ERROR_NO_SQL_FILE . $sql_file;
        }
    }
}