Final fixes for password reset behavior on sql_patches removal :)
[mailer.git] / inc / extensions.php
index 145fb1b9406506d2453898b7149ba548d4d9f05c..6232456238c12dd25fda975e9615064d0daa98b3 100644 (file)
@@ -40,7 +40,7 @@ if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))
 //
 function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
 {
 //
 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();
        // 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);
                                {
                                        // Ok, update this extension now
                                        EXTENSION_UPDATE(basename($file), $EXT_UPDATE_DEPENDS, $ext_ver, $dry_run);
+
+                                       // All okay!
                                        $test = true;
                                }
                                 else
                                        $test = true;
                                }
                                 else
@@ -149,35 +151,40 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
                        $test = true;
                }
 
                        $test = true;
                }
 
+               // Switch back to register mode
+               $EXT_LOAD_MODE = "register";
+
                // Does everthing before wents ok?
                // Does everthing before wents ok?
-               if ($test)
-               {
+               if ($test) {
                        // "Dry-run-mode" activated?
                        // "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
                                                // 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
 
                                // Check for added include files
-                               if (count($INC_POOL > 0))
-                               {
+                               if (count($INC_POOL > 0)) {
                                        // Loads every include file
                                        // Loads every include file
-                                       foreach ($INC_POOL as $inc)
-                                       {
+                                       foreach ($INC_POOL as $inc) {
                                                require_once($inc);
                                                require_once($inc);
-                                       }
+                                       } // END - foreach
                                }
 
                                // Register extension
                                }
 
                                // 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);
 
                                // In normal mode return a true on success
                                $ret = true; unset($SQLs);
-                       }
-                        else
-                       {
+                       } else {
                                // Rewrite SQL command to keep { and } inside
                                // 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;
                                        $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;
 
                                // 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);
                        }
                                // Remove all SQL commands
                                unset($SQLs);
                        }
-               }
-                else
-               {
+               } else {
                        // No, an error occurs while registering extension :-(
                        $ret = false;
                }
                        // 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__);
        }
                // 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;
 }
        // Return status code
        return $ret;
 }
@@ -251,8 +260,16 @@ function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) {
                        } // END - if
                } // END - foreach
 
                        } // 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") != "")) {
                // 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();
                        // 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?
                } // 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
                        // 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
 }
                } // 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;
 
 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
        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 />";
 
        if ((!file_exists($file)) && (!is_readable($file))) return false;
        //* DEBUG: */ echo "*".$ext_name."*<br />";