/** * @param $api * @param $driver * @param $host * @param $user * @param $pass * @param $dbname * @param $client_charset * @param $dbTiki * @return bool|int */ function initTikiDB(&$api, &$driver, $host, $user, $pass, $dbname, $client_charset, &$dbTiki) { $initializer = new TikiDb_Initializer(); $initializer->setPreferredConnector($api_tiki); $initializer->setInitializeCallback(function ($db) { $db->setServerType($db_tiki); $db->setErrorHandler(new InstallerDatabaseErrorHandler()); }); global $tikifeedback; $dbcon = false; try { $dbTiki = $initializer->getConnection(array('host' => $host, 'user' => $user, 'pass' => $pass, 'dbs' => $dbname, 'charset' => $client_charset)); $dbcon = !empty($dbTiki); } catch (Exception $e) { $tikifeedback[] = array('num' => 1, 'mes' => $e->getMessage()); } // Attempt to create database. This might work if the $user has create database permissions. // First check that suggested database name will not cause issues $dbname_clean = preg_replace('/[^a-z0-9$_-]/', "", $dbname); if ($dbname_clean != $dbname) { $tikifeedback[] = array('num' => 1, 'mes' => tra("Some invalid characters were detected in database name. Please use alphanumeric characters or _ or -.", '', false, array($dbname_clean))); $attempt_creation = false; } else { $attempt_creation = true; } if (!$dbcon && $attempt_creation == true) { $sql = "CREATE DATABASE IF NOT EXISTS `{$dbname_clean}` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;"; $dbTiki->query($sql, $error); if (empty($error)) { $tikifeedback[] = array('num' => 1, 'mes' => tra("Database `%0` was created.", '', false, array($dbname_clean))); } else { $tikifeedback[] = array('num' => 1, 'mes' => tra("Database `%0` creation failed. You need to create the database.", '', false, array($dbname_clean))); } try { $dbTiki = $initializer->getConnection(array('host' => $host, 'user' => $user, 'pass' => $pass, 'dbs' => $dbname, 'charset' => $client_charset)); $dbcon = !empty($dbTiki); } catch (Exception $e) { $tikifeedback[] = array('num' => 1, 'mes' => $e->getMessage()); } } TikiDb::set($dbTiki); return $dbcon; }
ini_set('include_path', implode(PATH_SEPARATOR, $paths)); require_once __DIR__ . '/../../vendor/autoload.php'; if (!is_file(dirname(__FILE__) . '/local.php')) { die("\nYou need to setup a new database and create a local.php file for the test suite inside " . dirname(__FILE__) . "\n\n"); } global $local_php, $api_tiki, $style_base; $api_tiki = 'adodb'; $local_php = __DIR__ . '/local.php'; require_once $local_php; $style_base = 'skeleton'; // Force autoloading if (!class_exists('ADOConnection')) { die('AdoDb not found.'); } $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC; $initializer = new TikiDb_Initializer(); $initializer->setPreferredConnector($api_tiki); $db = $initializer->getConnection(array('host' => $host_tiki, 'user' => $user_tiki, 'pass' => $pass_tiki, 'dbs' => $dbs_tiki, 'charset' => $client_charset)); if (!$db) { die("\nUnable to connect to the database\n\n"); } TikiDb::set($db); global $tikilib; require_once 'lib/tikilib.php'; $tikilib = new TikiLib(); // update db if needed require_once 'lib/init/initlib.php'; include_once 'installer/installlib.php'; $installer = new Installer(); if (!$installer->tableExists('tiki_preferences')) { echo "Installing Tiki database...\n";
$smarty->display('database-connection-error.tpl'); $this->log($msg . ' - ' . $q); die; } // }}} /** * @param $msg */ function log($msg) { global $user, $tikilib; $query = 'insert into `tiki_actionlog` (`objectType`,`action`,`object`,`user`,`ip`,`lastModif`, `comment`, `client`) values (?,?,?,?,?,?,?,?)'; $result = $tikilib->query($query, array('system', 'db error', 'system', $user, $tikilib->get_ip_address(), $tikilib->now, $msg, substr($_SERVER['HTTP_USER_AGENT'], 0, 200))); } } $initializer = new TikiDb_Initializer(); $initializer->setPreferredConnector($api_tiki); $initializer->setInitializeCallback(function ($db) { global $db_table_prefix, $common_users_table_prefix, $db_tiki; $db->setServerType($db_tiki); $db->setErrorHandler(new TikiDb_LegacyErrorHandler()); if (isset($db_table_prefix)) { $db->setTablePrefix($db_table_prefix); } if (isset($common_users_table_prefix)) { $db->setUsersTablePrefix($common_users_table_prefix); } }); try { $db = $initializer->getConnection($credentials['primary']); } catch (Exception $e) {