]> git.mxchange.org Git - mailer.git/blobdiff - inc/install-functions.php
Added news entry (finally) + expanded links for (empty) 2014 archive.
[mailer.git] / inc / install-functions.php
index 5f027b3f7e1bf44e9e349f585a808337f2c0778f..9b4b42403f9c76b20cc55ca340ddf57abe6c10ad 100644 (file)
  * -------------------------------------------------------------------- *
  * 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 *
@@ -81,8 +76,72 @@ function initInstaller () {
        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);
 
@@ -110,7 +169,8 @@ function doInstallWriteLocalConfigurationFile ($path, $url, $title, $slogan, $em
        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);
@@ -192,12 +252,58 @@ function generateInstallerFooterNavigation () {
 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(
@@ -432,7 +538,7 @@ function isInstallerBaseUrlValid ($value) {
                ($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) != '/')
@@ -521,6 +627,15 @@ function isInstallerMysqlEngineValid ($value) {
        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