Final fixes for password reset behavior on sql_patches removal :)
authorRoland Häder <roland@mxchange.org>
Sat, 30 Aug 2008 23:51:03 +0000 (23:51 +0000)
committerRoland Häder <roland@mxchange.org>
Sat, 30 Aug 2008 23:51:03 +0000 (23:51 +0000)
inc/extensions.php
inc/modules/admin.php
inc/modules/admin/what-extensions.php

index 145fb1b..6232456 100644 (file)
@@ -40,7 +40,7 @@ if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))
 //
 function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
 {
-       global $NOTES, $_CONFIG, $INC_POOL;
+       global $NOTES, $_CONFIG, $INC_POOL, $cacheInstance;
        // We want to register an extension and registration status is by default "failed" (= false)
        $EXT_LOAD_MODE = "register"; $ret = false; $SQLs = array();
        $INC_POOL = array();
@@ -124,6 +124,8 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
                                {
                                        // Ok, update this extension now
                                        EXTENSION_UPDATE(basename($file), $EXT_UPDATE_DEPENDS, $ext_ver, $dry_run);
+
+                                       // All okay!
                                        $test = true;
                                }
                                 else
@@ -149,35 +151,40 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
                        $test = true;
                }
 
+               // Switch back to register mode
+               $EXT_LOAD_MODE = "register";
+
                // Does everthing before wents ok?
-               if ($test)
-               {
+               if ($test) {
                        // "Dry-run-mode" activated?
-                       if (!$dry_run)
-                       {
-                               // Are there any SQL commands to run?
-                               if (count($SQLs) > 0)
-                               {
-                                       foreach ($SQLs as $sql)
-                                       {
-                                               $sql = trim($sql);
+                       if (!$dry_run) {
+                               // Run all SQLs
+                               foreach ($SQLs as $sql) {
+                                       // Trim spaces away which we don't need
+                                       $sql = trim($sql);
+
+                                       // Is there still an SQL query?
+                                       if (!empty($sql)) {
                                                // Run SQL command
-                                               if (!empty($sql))
-                                               {
-                                                       // Run SQLs without compiling them...
-                                                       $result = SQL_QUERY($sql, __FILE__, __LINE__, false);
-                                               }
-                                       }
-                               }
+                                               $result = SQL_QUERY($sql, __FILE__, __LINE__, false);
+                                       } // END - if
+                               } // END - foreach
+
+                               // Remove cache file(s) if extension is active
+                               if ((EXT_IS_ACTIVE("cache")) || (GET_EXT_VERSION("cache") != "")) {
+                                       //* DEBUG: */ echo __LINE__.": DESTROY!<br />\n";
+                                       // Remove cache files
+                                       if ($cacheInstance->cache_file("extensions", true)) $cacheInstance->cache_destroy();
+                                       if ($cacheInstance->cache_file("mod_reg", true))    $cacheInstance->cache_destroy();
+                                       if ($cacheInstance->cache_file("config", true))     $cacheInstance->cache_destroy();
+                               } // END - if
 
                                // Check for added include files
-                               if (count($INC_POOL > 0))
-                               {
+                               if (count($INC_POOL > 0)) {
                                        // Loads every include file
-                                       foreach ($INC_POOL as $inc)
-                                       {
+                                       foreach ($INC_POOL as $inc) {
                                                require_once($inc);
-                                       }
+                                       } // END - foreach
                                }
 
                                // Register extension
@@ -190,15 +197,12 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
 
                                // In normal mode return a true on success
                                $ret = true; unset($SQLs);
-                       }
-                        else
-                       {
+                       } else {
                                // Rewrite SQL command to keep { and } inside
-                               foreach ($SQLs as $key=>$sql)
-                               {
+                               foreach ($SQLs as $key => $sql) {
                                        $sql = str_replace('{', "&#123;", str_replace('}', "&#125;", $sql));
                                        $SQLs[$key] = $sql;
-                               }
+                               } // END - foreach
 
                                // In  "dry-run" mode return array with all SQL commands
                                $ret = $SQLs;
@@ -206,19 +210,24 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
                                // Remove all SQL commands
                                unset($SQLs);
                        }
-               }
-                else
-               {
+               } else {
                        // No, an error occurs while registering extension :-(
                        $ret = false;
                }
-       }
-        elseif (($id > 0) && (!empty($ext_name)))
-       {
+       } elseif (($id > 0) && (!empty($ext_name))) {
                // Remove task from system when id and extension's name is valid
                $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_task_system WHERE id=%d AND status='NEW' LIMIT 1",
                 array(bigintval($id)), __FILE__, __LINE__);
        }
+
+       // Is this the sql_patches?
+       //* DEBUG: */ echo __LINE__.":{$ext_name}/{$EXT_LOAD_MODE}<br />\n";
+       if (($ext_name == "sql_patches") && (($EXT_LOAD_MODE == "register") || ($EXT_LOAD_MODE == "remove")) && (!$dry_run) && ($test)) {
+               // Then redirect to logout
+               //* DEBUG: */ echo __LINE__.": LOAD!<br />\n";
+               LOAD_URL("modules.php?module=admin&logout=1&".$EXT_LOAD_MODE."=sql_patches");
+       } // END - if
+
        // Return status code
        return $ret;
 }
@@ -251,8 +260,16 @@ function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) {
                        } // END - if
                } // END - foreach
 
+               // Removal mode?
+               if ($EXT_LOAD_MODE == "remove") {
+                       // Delete this extension (remember to remove it from your server *before* you click on welcome!
+                       $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_extensions WHERE id=%d LIMIT 1",
+                        array($id), __FILE__, __LINE__);
+               } // END - if
+
                // Remove cache file(s) if extension is active
                if ((EXT_IS_ACTIVE("cache")) || (GET_EXT_VERSION("cache") != "")) {
+                       //* DEBUG: */ echo __LINE__.": DESTROY!<br />\n";
                        // Remove cache files
                        if ($cacheInstance->cache_file("extensions", true)) $cacheInstance->cache_destroy();
                        if ($cacheInstance->cache_file("mod_reg", true))    $cacheInstance->cache_destroy();
@@ -260,13 +277,15 @@ function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) {
                } // END - if
 
                // Is this the sql_patches?
-               if ($ext_name == "sql_patches") {
+               //* DEBUG: */ echo __LINE__.": {$id}/{$ext_name}/{$EXT_LOAD_MODE}<br />\n";
+               if (($ext_name == "sql_patches") && (($EXT_LOAD_MODE == "register") || ($EXT_LOAD_MODE == "remove"))) {
                        // Then redirect to logout
-                       LOAD_URL("modules.php?module=admin&logout=1&remove=sql_patches");
+                       //* DEBUG: */ echo __LINE__.": LOAD!<br />\n";
+                       LOAD_URL("modules.php?module=admin&logout=1&".$EXT_LOAD_MODE."=sql_patches");
                } // END - if
        } // END - if
 }
-//
+// Check if given extension is active
 function EXT_IS_ACTIVE ($ext_name, $ignore_admin = false, $ignore_cache = false) {
        global $cacheArray, $_CONFIG;
 
@@ -274,7 +293,7 @@ function EXT_IS_ACTIVE ($ext_name, $ignore_admin = false, $ignore_cache = false)
        if ((!isBooleanConstantAndTrue('mxchange_installed')) || (isBooleanConstantAndTrue('mxchange_installing')) || (empty($ext_name))) return false;
 
        // Extension's file name will also be checked
-       $file = PATH."inc/extensions/ext-".$ext_name.".php";
+       $file = sprintf("%sinc/extensions/ext-%s.php", PATH, $ext_name);
        if ((!file_exists($file)) && (!is_readable($file))) return false;
        //* DEBUG: */ echo "*".$ext_name."*<br />";
 
index 5219de2..458f1bc 100644 (file)
@@ -308,12 +308,12 @@ if (!isBooleanConstantAndTrue('admin_registered')) {
                @session_destroy();
 
                // Load logout template
-               if (isset($_GET['install'])) {
+               if (isset($_GET['register'])) {
                        // Secure input
-                       $install = secureString(SQL_ESCAPE($_GET['install']));
+                       $register = secureString(SQL_ESCAPE($_GET['register']));
 
                        // Special logout redirect for installation of given extension
-                       LOAD_TEMPLATE(sprintf("admin_logout_%s_install", $install));
+                       LOAD_TEMPLATE(sprintf("admin_logout_%s_install", $register));
                } elseif (isset($_GET['remove'])) {
                        // Secure input
                        $remove = secureString(SQL_ESCAPE($_GET['remove']));
index eb6079c..b6a7d36 100644 (file)
@@ -206,10 +206,6 @@ if (!empty($_GET['reg_ext'])) {
                if ($active == 1) {
                        // Run embeded SQL commands
                        EXTENSION_RUN_SQLS($id, "remove");
-
-                       // Delete this extension (remember to remove it from your server *before* you click on welcome!
-                       $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_extensions WHERE id=%d LIMIT 1",
-                        array($id), __FILE__, __LINE__);
                } // END - if
        } // END - foreach
 } elseif (!empty($_GET['do']) && (!IS_DEMO())) {
@@ -309,19 +305,15 @@ case "register": // Register new extension
                        // ... so we can finally register and load it in registration mode
                        $status = EXTENSION_REGISTER($ext_name, $id);
                        if ($status == true) {
-                               // Is this sql_patches? Then we need to auto-logout!
-                               if ($ext_name == "sql_patches") {
-                                       // Auto-logout here
-                                       LOAD_URL("modules.php?module=admin&logout=1&install=sql_patches");
-                               }
-
                                // Extension was found and successfully registered
                                LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_EXTENSION_REGISTERED);
 
                                // Do we need to update cache file?
                                if ((EXT_IS_ACTIVE("cache")) && ($cacheMode != "no")) {
                                        // Remove cache file (will be auto-created again!)
+                                       if ($cacheInstance->cache_file("config"    , true)) $cacheInstance->cache_destroy();
                                        if ($cacheInstance->cache_file("extensions", true)) $cacheInstance->cache_destroy();
+                                       if ($cacheInstance->cache_file("mod_reg"   , true)) $cacheInstance->cache_destroy();
                                }
                        } else {
                                // Motify the admin that we have a problem here...