diff options
author | Mario <mario@mariovavti.com> | 2022-02-10 18:57:44 +0000 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2022-02-10 18:57:44 +0000 |
commit | 35877b13825b2c3db44ff89977344b84f8e21d9a (patch) | |
tree | 4354a09a1f603d46d62ea7b9c9c0e49adea3e319 | |
parent | c5312871704631b64afb3a146fc52b14949e7ee5 (diff) | |
download | volse-hubzilla-35877b13825b2c3db44ff89977344b84f8e21d9a.tar.gz volse-hubzilla-35877b13825b2c3db44ff89977344b84f8e21d9a.tar.bz2 volse-hubzilla-35877b13825b2c3db44ff89977344b84f8e21d9a.zip |
allow to override the DB charset via the $db_charset variable in .htconfig.php
-rw-r--r-- | Zotlabs/Module/Setup.php | 14 | ||||
-rw-r--r-- | boot.php | 9 | ||||
-rw-r--r-- | include/dba/dba_driver.php | 12 | ||||
-rw-r--r-- | include/dba/dba_pdo.php | 6 |
4 files changed, 28 insertions, 13 deletions
diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php index ca8c19600..04b31e27b 100644 --- a/Zotlabs/Module/Setup.php +++ b/Zotlabs/Module/Setup.php @@ -69,17 +69,22 @@ class Setup extends \Zotlabs\Web\Controller { $dbpass = ((isset($_POST['dbpass'])) ? trim($_POST['dbpass']) : ''); $dbdata = ((isset($_POST['dbdata'])) ? trim($_POST['dbdata']) : ''); $dbtype = ((isset($_POST['dbtype'])) ? intval(trim($_POST['dbtype'])) : 0); + $phpath = ((isset($_POST['phpath'])) ? trim($_POST['phpath']) : ''); $adminmail = ((isset($_POST['adminmail'])) ? trim($_POST['adminmail']) : ''); $siteurl = ((isset($_POST['siteurl'])) ? trim($_POST['siteurl']) : ''); + if (empty($db_charset)) { + $db_charset = ((intval($db_type) === 0) ? 'utf8mb4' : 'UTF8'); + } + // $siteurl should not have a trailing slash $siteurl = rtrim($siteurl,'/'); require_once('include/dba/dba_driver.php'); - $db = \DBA::dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, true); + $db = \DBA::dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, $db_charset, true); if(! \DBA::$dba->connected) { echo 'Database Connect failed: ' . \DBA::$dba->error; @@ -94,11 +99,16 @@ class Setup extends \Zotlabs\Web\Controller { $dbpass = ((isset($_POST['dbpass'])) ? trim($_POST['dbpass']) : ''); $dbdata = ((isset($_POST['dbdata'])) ? trim($_POST['dbdata']) : ''); $dbtype = ((isset($_POST['dbtype'])) ? intval(trim($_POST['dbtype'])) : 0); + $phpath = ((isset($_POST['phpath'])) ? trim($_POST['phpath']) : ''); $timezone = ((isset($_POST['timezone'])) ? trim($_POST['timezone']) : ''); $adminmail = ((isset($_POST['adminmail'])) ? trim($_POST['adminmail']) : ''); $siteurl = ((isset($_POST['siteurl'])) ? trim($_POST['siteurl']) : ''); + if (empty($db_charset)) { + $db_charset = ((intval($db_type) === 0) ? 'utf8mb4' : 'UTF8'); + } + if($siteurl != z_root()) { $test = z_fetch_url($siteurl."/setup/testrewrite"); if((! $test['success']) || ($test['body'] != 'ok')) { @@ -112,7 +122,7 @@ class Setup extends \Zotlabs\Web\Controller { if(! isset(\DBA::$dba->connected)) { // connect to db - $db = \DBA::dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, true); + $db = \DBA::dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, $db_charset, true); } if(! isset(\DBA::$dba->connected)) { @@ -664,12 +664,17 @@ function sys_boot() { require_once('include/dba/dba_driver.php'); if (!App::$install) { - DBA::dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type, App::$install); + + if (empty($db_charset)) { + $db_charset = ((intval($db_type) === 0) ? 'utf8mb4' : 'UTF8'); + } + + DBA::dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type, $db_charset, App::$install); if (!DBA::$dba->connected) { system_unavailable(); } - unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type); + unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type, $db_charset); /* * Load configs from db. Overwrite configs from .htconfig.php diff --git a/include/dba/dba_driver.php b/include/dba/dba_driver.php index b96601fec..152be7f88 100644 --- a/include/dba/dba_driver.php +++ b/include/dba/dba_driver.php @@ -38,7 +38,7 @@ class DBA { * @param bool $install Defaults to false * @return null|dba_driver A database driver object (dba_pdo) or null if no driver found. */ - static public function dba_factory($server,$port,$user,$pass,$db,$dbtype,$install = false) { + static public function dba_factory($server,$port,$user,$pass,$db,$dbtype,$db_charset,$install = false) { self::$dba = null; self::$dbtype = intval($dbtype); @@ -65,7 +65,7 @@ class DBA { } require_once('include/dba/dba_pdo.php'); - self::$dba = new dba_pdo($server,self::$scheme,$port,$user,$pass,$db,$install); + self::$dba = new dba_pdo($server,self::$scheme,$port,$user,$pass,$db,$db_charset,$install); define('NULL_DATE', self::$null_date); define('ACTIVE_DBTYPE', self::$dbtype); @@ -105,7 +105,7 @@ abstract class dba_driver { * @param string $db database name * @return bool */ - abstract function connect($server, $scheme, $port, $user, $pass, $db); + abstract function connect($server, $scheme, $port, $user, $pass, $db, $db_charset); /** * @brief Perform a DB query with the SQL statement $sql. @@ -139,11 +139,11 @@ abstract class dba_driver { */ abstract function getdriver(); - function __construct($server, $scheme, $port, $user,$pass,$db,$install = false) { - if(($install) && (! $this->install($server, $scheme, $port, $user, $pass, $db))) { + function __construct($server, $scheme, $port, $user,$pass,$db,$db_charset,$install = false) { + if(($install) && (! $this->install($server, $scheme, $port, $user, $pass, $db, $db_charset))) { return; } - $this->connect($server, $scheme, $port, $user, $pass, $db); + $this->connect($server, $scheme, $port, $user, $pass, $db, $db_charset); } function get_null_date() { diff --git a/include/dba/dba_pdo.php b/include/dba/dba_pdo.php index 2137ca0cc..c8a1b6c85 100644 --- a/include/dba/dba_pdo.php +++ b/include/dba/dba_pdo.php @@ -14,7 +14,7 @@ class dba_pdo extends dba_driver { * {@inheritDoc} * @see dba_driver::connect() */ - function connect($server, $scheme, $port, $user, $pass, $db) { + function connect($server, $scheme, $port, $user, $pass, $db, $db_charset) { $this->driver_dbtype = $scheme; @@ -28,10 +28,10 @@ class dba_pdo extends dba_driver { $dsn .= ';dbname=' . $db; if ($this->driver_dbtype === 'mysql') { - $dsn .= ';charset=utf8mb4'; + $dsn .= ';charset=' . $db_charset; } else { - $dsn .= ";options='--client_encoding=UTF8'"; + $dsn .= ";options='--client_encoding=" . $db_charset . "'"; } try { |