* -------------------------------------------------------------------- *
* Kurzbeschreibung : Funktionen fuer die Installationsroutine *
* -------------------------------------------------------------------- *
- * $Revision:: $ *
- * $Date:: $ *
- * $Tag:: 0.2.1-FINAL $ *
- * $Author:: $ *
- * -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2013 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2016 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
setConfigEntry('verbose_sql' , 'N');
}
+// Installer bootstrap
+function doInstallerBootstrap () {
+ // Default output is 'direct' for HTML output
+ setConfigEntry('OUTPUT_MODE', 'direct');
+
+ // This hack prevents a backtrace in CSS output
+ if (isCssOutputMode()) {
+ // Problem with config so set output mode
+ setConfigEntry('OUTPUT_MODE', 'render');
+ } // END - if
+
+ // Debug message
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'isAjaxOutputMode()=' . intval(isAjaxOutputMode()) . ',isSessionVariableSet(database_extension)=' . intval(isSessionVariableSet('database_extension')));
+
+ // Is it AJAX call and database_extension is set?
+ if ((isAjaxOutputMode()) && (isSessionVariableSet('database_extension'))) {
+ // Then take it from session
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Setting _DB_TYPE from session;database_extension=' . getSession('database_extension'));
+ setConfigEntry('_DB_TYPE', getSession('database_extension'));
+ } elseif (isPhpExtensionLoaded('mysqli')) {
+ // Debug message
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Setting _DB_TYPE to MySQLi ...');
+
+ // Set (old) default
+ setConfigEntry('_DB_TYPE', 'mysqli');
+ } elseif (isPhpExtensionLoaded('mysql')) {
+ // Debug message
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Setting _DB_TYPE to default (mysql) ...');
+
+ // Set (old) default
+ setConfigEntry('_DB_TYPE', 'mysql');
+ } else {
+ // Opps, cannot detect it?
+ reportBug(__FUNCTION__, __LINE__, 'Cannot detect mysql/mysqli. Please fix your setup.');
+ }
+
+ // Set link as down
+ unsetSqlLinkUp(__FUNCTION__, __LINE__);
+
+ // Load database layer here
+ loadIncludeOnce('inc/db/lib.php');
+
+ // Init message system
+ initMessages();
+
+ // Init session
+ initSession();
+
+ // Include more
+ foreach (array('databases', 'install-functions', 'load_config', 'load_cache') as $inc) {
+ // Load include file
+ loadIncludeOnce('inc/' . $inc . '.php');
+ } // END - foreach
+
+ // Init installer
+ initInstaller();
+
+ // Check whether we are in installation routine
+ if ((!isInstalling()) && (!isCssOutputMode()) && (!isRawOutputMode())) {
+ // Redirect to the URL
+ redirectToUrl('install.php');
+ } // END - if
+}
+
// Write the local config-local.php file from "template"
-function doInstallWriteLocalConfigurationFile ($path, $url, $title, $slogan, $email, $noPassword, $writeFooter, $backLink, $databaseHost, $databaseName, $databaseLogin, $databasePassword, $databasePrefix, $databaseType, $smtpHost, $smtpUser, $smtpPassword) {
+function doInstallWriteLocalConfigurationFile ($path, $url, $title, $slogan, $email, $noPassword, $writeFooter, $backLink, $databaseHost, $databaseName, $databaseLogin, $databasePassword, $databasePrefix, $tableType, $databaseExtension, $smtpHost, $smtpUser, $smtpPassword) {
// Copy the config template and verify it
copyFileVerified($path . 'inc/config-local.php.dist', $path . getCachePath() . 'config-local.php', 0644);
changeDataInLocalConfigurationFile('MYSQL-LOGIN', " 'login' => '", "',", $databaseLogin, 0);
changeDataInLocalConfigurationFile('MYSQL-PASSWORD', " 'password' => '", "',", $databasePassword, 0);
changeDataInLocalConfigurationFile('MYSQL-PREFIX', "setConfigEntry('_MYSQL_PREFIX', '", "');", $databasePrefix, 0);
- changeDataInLocalConfigurationFile('TABLE-TYPE', "setConfigEntry('_TABLE_TYPE', '", "');", $databaseType, 0);
+ changeDataInLocalConfigurationFile('TABLE-TYPE', "setConfigEntry('_TABLE_TYPE', '", "');", $tableType, 0);
+ changeDataInLocalConfigurationFile('DATABASE-TYPE', "setConfigEntry('_DB_TYPE', '", "');", $databaseExtension, 0);
changeDataInLocalConfigurationFile('SMTP-HOSTNAME', "setConfigEntry('SMTP_HOSTNAME', '", "');", $smtpHost, 0);
changeDataInLocalConfigurationFile('SMTP-USER', "setConfigEntry('SMTP_USER', '", "');", $smtpUser, 0);
changeDataInLocalConfigurationFile('SMTP-PASSWORD', "setConfigEntry('SMTP_PASSWORD', '", "');", $smtpPassword, 0);
function generateInstallerDatabaseTypeOptions () {
return generateOptions(
'/ARRAY/',
- array('MyISAM', 'InnoDB'),
- array('{--INSTALLER_TABLE_TYPE_MYISAM--}', '{--INSTALLER_TABLE_TYPE_INNODB--}'),
+ array(
+ 'MyISAM',
+ 'InnoDB'
+ ),
+ array(
+ '{--INSTALLER_TABLE_TYPE_MYISAM--}',
+ '{--INSTALLER_TABLE_TYPE_INNODB--}'
+ ),
getSession('mysql_engine')
);
}
+// Generate an option list for database extensions for given default value
+function generateInstallerDatabaseExtensionOptions () {
+ // Init all arrays
+ $keys = array();
+ $values = array();
+ $foundExtensions = array();
+
+ // Scan directory
+ $drivers = getArrayFromDirectory('inc/db/', 'lib-', FALSE, FALSE);
+
+ // Remove prefix + extension
+ foreach ($drivers as $key => $driver) {
+ // Remove driver
+ $drivers[$key] = substr($driver, 4, -4);
+
+ // Is the corresponding extension loaded?
+ if (isPhpExtensionLoaded($drivers[$key])) {
+ // Then add it
+ array_push($foundExtensions, $drivers[$key]);
+ } // END - if
+ } // END - foreach
+
+ // Generate list for keys/values ("translations")
+ foreach ($foundExtensions as $extension) {
+ // Use it as direct key
+ array_push($keys, $extension);
+
+ // Add "translation" function around it as value
+ array_push($values, '{%pipe,translatePhpExtension=' . $extension . '%}');
+ } // END - if
+
+ // Get a directory list
+ return generateOptions(
+ '/ARRAY/',
+ $keys,
+ $values,
+ getSession('database_extension')
+ );
+}
+
// Generate an option list for output mode types for given default value
function generateInstallerOutputModeOptions ($defaultValue) {
return generateOptions(
($value == getUrl())
|| (
// Starts with http:// or https:// ?
- ((substr($value, 0, 7) == 'http://') || (substr($value, 0, 8) == 'https://'))
+ (isFullQualifiedUrl($value))
&&
// Has no trailing slash?
(substr($value, -1, 1) != '/')
return $isValid;
}
+// Call-back function to check validity of 'database_extension'
+function isInstallerDatabaseExtensionValid ($value) {
+ // This value must be 'mysql' or 'mysqli'
+ $isValid = in_array($value, array('mysql', 'mysqli'));
+
+ // Return it
+ return $isValid;
+}
+
// Call-back function to check validity of 'mysql_dbase'
function isInstallerMysqlDbaseValid ($value) {
// This value must not be empty