/**
 * @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;
}
Exemple #2
0
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";
Exemple #3
0
        $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) {