/** * @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; }
*/ 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) { echo $e; require_once 'lib/init/smarty.php'; $smarty->assign('msg', $e->getMessage()); $smarty->assign('where', 'connection'); echo $smarty->fetch('database-connection-error.tpl'); exit; }