diff --git a/core/_install.php b/core/_install.php index 99fa864d..a695c237 100644 --- a/core/_install.php +++ b/core/_install.php @@ -110,7 +110,7 @@ function do_install() { // {{{ if (file_exists("data/config/auto_install.conf.php")) { require_once "data/config/auto_install.conf.php"; - } elseif (@$_POST["database_type"] == Database::SQLITE_DRIVER) { + } elseif (@$_POST["database_type"] == DatabaseDriver::SQLITE) { $id = bin2hex(random_bytes(5)); define('DATABASE_DSN', "sqlite:data/shimmie.{$id}.sqlite"); } elseif (isset($_POST['database_type']) && isset($_POST['database_host']) && isset($_POST['database_user']) && isset($_POST['database_name'])) { @@ -153,9 +153,9 @@ function ask_questions() $drivers = PDO::getAvailableDrivers(); if ( - !in_array(Database::MYSQL_DRIVER, $drivers) && - !in_array(Database::PGSQL_DRIVER, $drivers) && - !in_array(Database::SQLITE_DRIVER, $drivers) + !in_array(DatabaseDriver::MYSQL, $drivers) && + !in_array(DatabaseDriver::PGSQL, $drivers) && + !in_array(DatabaseDriver::SQLITE, $drivers) ) { $errors[] = " No database connection library could be found; shimmie needs @@ -163,9 +163,9 @@ function ask_questions() "; } - $db_m = in_array(Database::MYSQL_DRIVER, $drivers) ? '' : ""; - $db_p = in_array(Database::PGSQL_DRIVER, $drivers) ? '' : ""; - $db_s = in_array(Database::SQLITE_DRIVER, $drivers) ? '' : ""; + $db_m = in_array(DatabaseDriver::MYSQL, $drivers) ? '' : ""; + $db_p = in_array(DatabaseDriver::PGSQL, $drivers) ? '' : ""; + $db_s = in_array(DatabaseDriver::SQLITE, $drivers) ? '' : ""; $warn_msg = $warnings ? "
", $warnings) : ""; $err_msg = $errors ? "
", $errors) : ""; diff --git a/core/database.php b/core/database.php index 29381209..65405211 100644 --- a/core/database.php +++ b/core/database.php @@ -1,12 +1,16 @@ get_driver_name() == self::SQLITE_DRIVER) { + if (version_compare(PHP_VERSION, "6.9.9") == 1 && $this->get_driver_name() == DatabaseDriver::SQLITE) { $ka = false; } @@ -100,11 +104,11 @@ class Database throw new SCoreException("Can't figure out database engine"); } - if ($db_proto === self::MYSQL_DRIVER) { + if ($db_proto === DatabaseDriver::MYSQL) { $this->engine = new MySQL(); - } elseif ($db_proto === self::PGSQL_DRIVER) { + } elseif ($db_proto === DatabaseDriver::PGSQL) { $this->engine = new PostgreSQL(); - } elseif ($db_proto === self::SQLITE_DRIVER) { + } elseif ($db_proto === DatabaseDriver::SQLITE) { $this->engine = new SQLite(); } else { die('Unknown PDO driver: '.$db_proto); @@ -228,7 +232,7 @@ class Database } return $stmt; } catch (PDOException $pdoe) { - throw new SCoreException($pdoe->getMessage()."
Query: ".$query, $pdoe->getCode(), $pdoe); + throw new SCoreException($pdoe->getMessage()."
Query: ".$query);
}
}
@@ -300,7 +304,7 @@ class Database
*/
public function get_last_insert_id(string $seq): int
{
- if ($this->engine->name == self::PGSQL_DRIVER) {
+ if ($this->engine->name == DatabaseDriver::PGSQL) {
return $this->db->lastInsertId($seq);
} else {
return $this->db->lastInsertId();
@@ -330,15 +334,15 @@ class Database
$this->connect_db();
}
- if ($this->engine->name === self::MYSQL_DRIVER) {
+ if ($this->engine->name === DatabaseDriver::MYSQL) {
return count(
$this->get_all("SHOW TABLES")
);
- } elseif ($this->engine->name === self::PGSQL_DRIVER) {
+ } elseif ($this->engine->name === DatabaseDriver::PGSQL) {
return count(
$this->get_all("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'")
);
- } elseif ($this->engine->name === self::SQLITE_DRIVER) {
+ } elseif ($this->engine->name === DatabaseDriver::SQLITE) {
return count(
$this->get_all("SELECT name FROM sqlite_master WHERE type = 'table'")
);
diff --git a/core/dbengine.php b/core/dbengine.php
index d76a1a43..404adad9 100644
--- a/core/dbengine.php
+++ b/core/dbengine.php
@@ -22,7 +22,7 @@ class DBEngine
class MySQL extends DBEngine
{
/** @var string */
- public $name = Database::MYSQL_DRIVER;
+ public $name = DatabaseDriver::MYSQL;
public function init(PDO $db)
{
@@ -54,7 +54,7 @@ class MySQL extends DBEngine
class PostgreSQL extends DBEngine
{
/** @var string */
- public $name = Database::PGSQL_DRIVER;
+ public $name = DatabaseDriver::PGSQL;
public function init(PDO $db)
{
@@ -136,7 +136,7 @@ function _ln($n)
class SQLite extends DBEngine
{
/** @var string */
- public $name = Database::SQLITE_DRIVER;
+ public $name = DatabaseDriver::SQLITE;
public function init(PDO $db)
{
diff --git a/core/imageboard/image.php b/core/imageboard/image.php
index 72364d3a..2f224c8b 100644
--- a/core/imageboard/image.php
+++ b/core/imageboard/image.php
@@ -644,7 +644,7 @@ class Image
public function delete_tags_from_image(): void
{
global $database;
- if ($database->get_driver_name() == Database::MYSQL_DRIVER) {
+ if ($database->get_driver_name() == DatabaseDriver::MYSQL) {
//mysql < 5.6 has terrible subquery optimization, using EXISTS / JOIN fixes this
$database->execute(
"
@@ -921,7 +921,7 @@ class Image
// more than one positive tag, or more than zero negative tags
else {
- if ($database->get_driver_name() === Database::MYSQL_DRIVER) {
+ if ($database->get_driver_name() === DatabaseDriver::MYSQL) {
$query = Image::build_ugly_search_querylet($tag_conditions);
} else {
$query = Image::build_accurate_search_querylet($tag_conditions);
diff --git a/core/user.php b/core/user.php
index a2a4d537..05f6e7f7 100644
--- a/core/user.php
+++ b/core/user.php
@@ -69,7 +69,7 @@ class User
global $config, $database;
$row = $database->cache->get("user-session:$name-$session");
if (!$row) {
- if ($database->get_driver_name() === Database::MYSQL_DRIVER) {
+ if ($database->get_driver_name() === DatabaseDriver::MYSQL) {
$query = "SELECT * FROM users WHERE name = :name AND md5(concat(pass, :ip)) = :sess";
} else {
$query = "SELECT * FROM users WHERE name = :name AND md5(pass || :ip) = :sess";
diff --git a/ext/admin/main.php b/ext/admin/main.php
index c9d2feff..c6c7f33f 100644
--- a/ext/admin/main.php
+++ b/ext/admin/main.php
@@ -201,14 +201,14 @@ class AdminPage extends Extension
$database = $matches['dbname'];
switch ($software) {
- case Database::MYSQL_DRIVER:
+ case DatabaseDriver::MYSQL:
$cmd = "mysqldump -h$hostname -u$username -p$password $database";
break;
- case Database::PGSQL_DRIVER:
+ case DatabaseDriver::PGSQL:
putenv("PGPASSWORD=$password");
$cmd = "pg_dump -h $hostname -U $username $database";
break;
- case Database::SQLITE_DRIVER:
+ case DatabaseDriver::SQLITE:
$cmd = "sqlite3 $database .dump";
break;
default:
@@ -257,7 +257,7 @@ class AdminPage extends Extension
//TODO: Update score_log (Having an optional ID column for score_log would be nice..)
preg_match("#^(?P
diff --git a/ext/tips/main.php b/ext/tips/main.php
index 5fd54e0d..7e5610a6 100644
--- a/ext/tips/main.php
+++ b/ext/tips/main.php
@@ -10,7 +10,7 @@
class Tips extends Extension
{
- protected $db_support = [Database::MYSQL_DRIVER, Database::SQLITE_DRIVER]; // rand() ?
+ protected $db_support = [DatabaseDriver::MYSQL, DatabaseDriver::SQLITE]; // rand() ?
public function onInitExt(InitExtEvent $event)
{
diff --git a/ext/upgrade/main.php b/ext/upgrade/main.php
index 42522ad9..160422b5 100644
--- a/ext/upgrade/main.php
+++ b/ext/upgrade/main.php
@@ -44,7 +44,7 @@ class Upgrade extends Extension
$config->set_bool("in_upgrade", true);
$config->set_int("db_version", 9);
- if ($database->get_driver_name() == Database::MYSQL_DRIVER) {
+ if ($database->get_driver_name() == DatabaseDriver::MYSQL) {
$tables = $database->get_col("SHOW TABLES");
foreach ($tables as $table) {
log_info("upgrade", "converting $table to innodb");
@@ -84,7 +84,7 @@ class Upgrade extends Extension
$config->set_bool("in_upgrade", true);
$config->set_int("db_version", 12);
- if ($database->get_driver_name() == Database::PGSQL_DRIVER) {
+ if ($database->get_driver_name() == DatabaseDriver::PGSQL) {
log_info("upgrade", "Changing ext column to VARCHAR");
$database->execute("ALTER TABLE images ALTER COLUMN ext SET DATA TYPE VARCHAR(4)");
}
@@ -101,9 +101,9 @@ class Upgrade extends Extension
$config->set_int("db_version", 13);
log_info("upgrade", "Changing password column to VARCHAR(250)");
- if ($database->get_driver_name() == Database::PGSQL_DRIVER) {
+ if ($database->get_driver_name() == DatabaseDriver::PGSQL) {
$database->execute("ALTER TABLE users ALTER COLUMN pass SET DATA TYPE VARCHAR(250)");
- } elseif ($database->get_driver_name() == Database::MYSQL_DRIVER) {
+ } elseif ($database->get_driver_name() == DatabaseDriver::MYSQL) {
$database->execute("ALTER TABLE users CHANGE pass pass VARCHAR(250)");
}
@@ -116,11 +116,11 @@ class Upgrade extends Extension
$config->set_int("db_version", 14);
log_info("upgrade", "Changing tag column to VARCHAR(255)");
- if ($database->get_driver_name() == Database::PGSQL_DRIVER) {
+ if ($database->get_driver_name() == DatabaseDriver::PGSQL) {
$database->execute('ALTER TABLE tags ALTER COLUMN tag SET DATA TYPE VARCHAR(255)');
$database->execute('ALTER TABLE aliases ALTER COLUMN oldtag SET DATA TYPE VARCHAR(255)');
$database->execute('ALTER TABLE aliases ALTER COLUMN newtag SET DATA TYPE VARCHAR(255)');
- } elseif ($database->get_driver_name() == Database::MYSQL_DRIVER) {
+ } elseif ($database->get_driver_name() == DatabaseDriver::MYSQL) {
$database->execute('ALTER TABLE tags MODIFY COLUMN tag VARCHAR(255) NOT NULL');
$database->execute('ALTER TABLE aliases MODIFY COLUMN oldtag VARCHAR(255) NOT NULL');
$database->execute('ALTER TABLE aliases MODIFY COLUMN newtag VARCHAR(255) NOT NULL');
@@ -135,7 +135,7 @@ class Upgrade extends Extension
$config->set_int("db_version", 15);
log_info("upgrade", "Adding lower indexes for postgresql use");
- if ($database->get_driver_name() == Database::PGSQL_DRIVER) {
+ if ($database->get_driver_name() == DatabaseDriver::PGSQL) {
$database->execute('CREATE INDEX tags_lower_tag_idx ON tags ((lower(tag)))');
$database->execute('CREATE INDEX users_lower_name_idx ON users ((lower(name)))');
}