Skip to content

Commit d1fffac

Browse files
authored
Merge pull request #246 from iMattPro/updates
Fixes for phpBB4
2 parents b2cfb87 + e2446ec commit d1fffac

File tree

4 files changed

+49
-4
lines changed

4 files changed

+49
-4
lines changed

includes/functions_install.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ class module
4747

4848
function get_db_tools($db)
4949
{
50+
if (defined('PHPBB_40'))
51+
{
52+
$factory = new \phpbb\db\tools\factory();
53+
return $factory->get(get_db_doctrine());
54+
}
55+
5056
if (defined('PHPBB_32'))
5157
{
5258
$factory = new \phpbb\db\tools\factory();
@@ -138,7 +144,7 @@ function load_schema_31($install_path = '', $install_dbms = false)
138144

139145
if (defined('PHPBB_40'))
140146
{
141-
$finder = new \phpbb\finder($phpbb_root_path, null, $phpEx);
147+
$finder = new \phpbb\finder\finder(null, true, $phpbb_root_path, $phpEx);
142148
}
143149
else
144150
{

includes/qi_functions.php

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -463,17 +463,19 @@ function db_connect($db_data = '')
463463

464464
if (empty($db_data))
465465
{
466-
list($dbms, $dbhost, $dbuser, $dbpasswd, $dbport) = $settings->get_db_data();
466+
list($dbms, $dbhost, $dbuser, $dbpasswd, $dbport, $db_prefix) = $settings->get_db_data();
467467
// When db_data is empty, it means the db does not exist yet, so for postgres
468468
// we need to set dbname to false so the driver can connect to the postgres db
469469
$dbname = ($dbms !== 'postgres') ? $settings->get_config('dbname') : false;
470470
}
471471
else
472472
{
473-
list($dbms, $dbhost, $dbuser, $dbpasswd, $dbport) = $db_data;
473+
list($dbms, $dbhost, $dbuser, $dbpasswd, $dbport, $db_prefix) = $db_data;
474474
$dbname = $settings->get_config('dbname');
475475
}
476476

477+
$dbname = $dbname ? $db_prefix . $dbname : $dbname;
478+
477479
// If we get here and the extension isn't loaded it should be safe to just go ahead and load it
478480
$available_dbms = qi_get_available_dbms($dbms);
479481

@@ -537,6 +539,37 @@ function db_close($db = false)
537539
$db->sql_close();
538540
}
539541

542+
function get_db_doctrine()
543+
{
544+
global $settings;
545+
546+
$dbms = $settings->get_config('dbms');
547+
$dbhost = $settings->get_config('dbhost');
548+
$dbuser = $settings->get_config('dbuser');
549+
$dbpasswd = $settings->get_config('dbpasswd');
550+
$dbname = $settings->get_config('dbname');
551+
$dbport = $settings->get_config('dbport');
552+
$db_prefix = $settings->get_config('db_prefix');
553+
554+
// We need the db prefix to be prepended to the database name
555+
$dbname = $db_prefix . $dbname;
556+
557+
// SQLite needs the dbname appended to the dbhost
558+
if (in_array($dbms, array('sqlite', 'sqlite3')))
559+
{
560+
$dbhost .= $dbname;
561+
}
562+
563+
return \phpbb\db\doctrine\connection_factory::get_connection_from_params(
564+
$dbms,
565+
$dbhost,
566+
$dbuser,
567+
$dbpasswd,
568+
$dbname,
569+
$dbport
570+
);
571+
}
572+
540573
function qi_get_available_dbms($dbms)
541574
{
542575
if (defined('PHPBB_32'))

includes/settings.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,7 @@ public function get_db_data()
477477
$this->get_config('dbuser'),
478478
$this->get_config('dbpasswd'),
479479
$this->get_config('dbport'),
480+
$this->get_config('db_prefix'),
480481
];
481482
}
482483

modules/qi_create.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,12 @@ public function run()
232232

233233
$db = db_connect();
234234

235-
if (defined('PHPBB_32'))
235+
if (defined('PHPBB_40'))
236+
{
237+
$factory = new \phpbb\db\tools\factory();
238+
$db_tools = $factory->get(get_db_doctrine());
239+
}
240+
else if (defined('PHPBB_32'))
236241
{
237242
$factory = new \phpbb\db\tools\factory();
238243
$db_tools = $factory->get($db);

0 commit comments

Comments
 (0)