]> git.mxchange.org Git - mailer.git/blobdiff - inc/install-functions.php
Support all extensions in link, too
[mailer.git] / inc / install-functions.php
index ef8ae8debbb85321c92c052fea8a83a3ca0f6156..4e3605f2b665afc866cb926d7c32833022a7b191 100644 (file)
@@ -16,7 +16,7 @@
  * $Author::                                                          $ *
  * -------------------------------------------------------------------- *
  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
- * Copyright (c) 2009 - 2012 by Mailer Developer Team                   *
+ * Copyright (c) 2009 - 2013 by Mailer Developer Team                   *
  * For more information visit: http://mxchange.org                      *
  *                                                                      *
  * This program is free software; you can redistribute it and/or modify *
@@ -109,7 +109,7 @@ function doInstallWriteLocalConfigurationFile ($path, $url, $title, $slogan, $em
        changeDataInLocalConfigurationFile('SITE-KEY', "setConfigEntry('SITE_KEY', '", "');", generatePassword(50), 0);
 
        // Script is now installed
-       changeDataInLocalConfigurationFile('INSTALLED', "setConfigEntry('MAILER_INSTALLED', '", "');", 'Y', 0);
+       return changeDataInLocalConfigurationFile('INSTALLED', "setConfigEntry('MAILER_INSTALLED', '", "');", 'Y', 0);
 }
 
 // Adds a given template with content to install output stream
@@ -253,7 +253,7 @@ function isInstallerDataValid (&$saveStatus, $key, $value) {
        } // END - if
 
        // Then call it back
-       $isValid = (bool) call_user_func($callbackName, trim($value));
+       $isValid = (bool) call_user_func($callbackName, $value);
 
        // Is it not valid?
        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',value=' . $value . ',isValid=' . intval($isValid));
@@ -335,6 +335,50 @@ function addKeyValueToInstallerOverviewGroup ($key, $value) {
        $GLOBALS['installer_overview'][$group][$key] = $value;
 }
 
+//-----------------------------------------------------------------------------
+//                        Template call-back functions
+//-----------------------------------------------------------------------------
+
+// ----------------- Extensions -----------------
+
+// Generates (and returns) a table from all extensions
+function generateInstallerExtensionTable () {
+       // Generate extension list
+       $extensions = loadAllExtensionsByTemplate();
+
+       // "Walk" through all
+       $OUT = '';
+       foreach ($extensions as $extension) {
+               // Remove prefix + suffix
+               $ext_name = substr(basename($extension), 4, -4);
+
+               // Is the extension not in development and not admintheme* ?
+               if ((loadExtension($ext_name, 'test', '0.0.0', TRUE)) && (isExtensionProductive($ext_name)) && (substr($ext_name, 0, 10) != 'admintheme')) {
+                       // Default is not disabled
+                       $disabled = '';
+                       if ($ext_name == 'sql_patches') {
+                               // Always keep this enabled
+                               $disabled = ' disabled="disabled"';
+                       } // END - if
+
+                       // Initialize content array
+                       $content = array(
+                               'ext_name'    => $ext_name,
+                               'ext_version' => getExtensionVersion($ext_name),
+                               'checked'     => getExtensionSelectedFromSession($ext_name, 'extensions'),
+                               'disabled'    => $disabled,
+                               'description' => loadTemplate('ext_' . $ext_name, TRUE),
+                       );
+
+                       // Load row template
+                       $OUT .= loadTemplate('install_list_extensions_row', TRUE, $content);
+               } // END - if
+       } // END - foreach
+
+       // Load main template
+       return loadTemplate('install_list_extensions', TRUE, $OUT);
+}
+
 //-----------------------------------------------------------------------------
 //                   Call-back functions to check validity
 //-----------------------------------------------------------------------------
@@ -497,6 +541,44 @@ function isInstallerMysqlPrefixValid ($value) {
 
 // ----------------- Other configuration -----------------
 
+// ----------------- Extensions -----------------
+
+// Call-back function to check 'sel' (array!)
+function isInstallerSelValid ($value) {
+       // $value is not an array, is really bad.
+       if (!is_array($value)) {
+               // Is no array
+               reportBug(__FUNCTION__, __LINE__, 'sel,value[]=' . gettype($value) . '!=array');
+       } // END - if
+
+       // Add always missing ext-sql_patches
+       $value['sql_patches'] = '1';
+
+       // Default is fine
+       $isValid = TRUE;
+
+       // "Walk" through all extensions
+       foreach ($value as $ext_name => $sel) {
+               // Is this extension choosen?
+               if ($sel != '1') {
+                       // Skip this
+                       continue;
+               } // END - if
+
+               // Can it be loaded?
+               $isValid = (($isValid) && (loadExtension($ext_name, 'test', '0.0.0', TRUE)));
+       } // END - foreach
+
+       // Remove 'sel' from POST data as it cannot be saved
+       unsetPostRequestElement('sel');
+
+       // Save it in session (sorry to do that here :( )
+       setSession('extensions', implode(':', array_keys($value)));
+
+       // Return result
+       return $isValid;
+}
+
 //-----------------------------------------------------------------------------
 //                 Call-back functions to post-check validity
 //-----------------------------------------------------------------------------
@@ -569,11 +651,14 @@ function isInstallerPostDatabaseConfigValid ($currentTab) {
                return FALSE;
        } // END - if
 
+       // Remove any previous flag
+       unsetSqlLinkUp(__FUNCTION__, __LINE__);
+
        // Try to connect to the database
-       $linkResource = SQL_CONNECT(postRequestElement('mysql_host'), postRequestElement('mysql_login'), postRequestElement('mysql_password1'), __FUNCTION__, __LINE__);
+       sqlConnectToDatabase(postRequestElement('mysql_host'), postRequestElement('mysql_login'), postRequestElement('mysql_password1'), __FUNCTION__, __LINE__);
 
        // Is the link up
-       if (!is_resource($linkResource)) {
+       if (!isSqlLinkUp()) {
                // Cannot connect to database
                $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_DATABASE_CONNECT_ERROR--}';
                array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_login', 'mysql_password1', 'mysql_password2');
@@ -581,13 +666,13 @@ function isInstallerPostDatabaseConfigValid ($currentTab) {
        } // END - if
 
        // Then attempt to select the database
-       if (!SQL_SELECT_DB(postRequestElement('mysql_dbase'), __FUNCTION__, __LINE__)) {
+       if (!sqlSelectDatabase(postRequestElement('mysql_dbase'), __FUNCTION__, __LINE__)) {
                // Could not find database
                $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_DATABASE_SELECT_FAILED--}';
                array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_dbase');
 
                // Disconnect here, we don't need idle database connections laying around
-               SQL_CLOSE(__FUNCTION__, __LINE__);
+               sqlCloseLink(__FUNCTION__, __LINE__);
 
                // Abort here
                return FALSE;
@@ -607,7 +692,7 @@ function isInstallerPostDatabaseConfigValid ($currentTab) {
                array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_engine');
 
                // Disconnect here, we don't need idle database connections laying around
-               SQL_CLOSE(__FUNCTION__, __LINE__);
+               sqlCloseLink(__FUNCTION__, __LINE__);
 
                // Abort here
                return FALSE;
@@ -617,7 +702,7 @@ function isInstallerPostDatabaseConfigValid ($currentTab) {
                array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_engine');
 
                // Disconnect here, we don't need idle database connections laying around
-               SQL_CLOSE(__FUNCTION__, __LINE__);
+               sqlCloseLink(__FUNCTION__, __LINE__);
 
                // Abort here
                return FALSE;
@@ -643,7 +728,7 @@ function isInstallerPostDatabaseConfigValid ($currentTab) {
                array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_engine');
 
                // Disconnect here, we don't need idle database connections laying around
-               SQL_CLOSE(__FUNCTION__, __LINE__);
+               sqlCloseLink(__FUNCTION__, __LINE__);
 
                // Abort here
                return FALSE;
@@ -699,7 +784,7 @@ function isInstallerPostDatabaseConfigValid ($currentTab) {
        $isValid = (count($tables) == $missingTables);
 
        // Disconnect here, we don't need idle database connections laying around
-       SQL_CLOSE(__FUNCTION__, __LINE__);
+       sqlCloseLink(__FUNCTION__, __LINE__);
 
        // If the status is true, disconnect the database
        if ($isValid === FALSE) {