Пример #1
0
/**
 * @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;
}
Пример #2
0
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";
    $installer->cleanInstall();
} else {
Пример #3
0
}
$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;
}
if (!$db && !defined('TIKI_IN_INSTALLER')) {
    header('location: tiki-install.php');
    exit;
}
TikiDb::set($db);
if ($credentials['shadow']) {
    global $dbMaster, $dbSlave;