]> git.mxchange.org Git - mailer.git/blobdiff - inc/extensions.php
Another column fix
[mailer.git] / inc / extensions.php
index 3973f4132afb746d5403111617ac69ccaf6819dc..0b75f56d259428dd8b3a5e2562a2f051db948bea 100644 (file)
@@ -57,6 +57,7 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
        // Does this extension exists?
        if (FILE_READABLE($file)) {
                // Extension was found so we can load it in registration mode
+               $EXT_ALWAYS_ACTIVE = "N";
                require($file);
 
                // And run possible updates
@@ -99,6 +100,7 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
                        if (FILE_READABLE($file)) {
                                // File exists so let's load it
                                $VER_BACKUP = $EXT_VERSION;
+                               $EXT_ALWAYS_ACTIVE = "N";
                                require($file);
                                $EXT_VERSION = $VER_BACKUP;
 
@@ -186,10 +188,13 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
                                        foreach ($INC_POOL as $inc) {
                                                require_once($inc);
                                        } // END - foreach
+
+                                       // Remove array
+                                       unset($INC_POOL);
                                } // END - if
 
                                // Register extension
-                               $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_extensions (ext_name, ext_lang_file, ext_active, ext_version) VALUES ('%s', '%s', '%s', '%s')",
+                               $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_extensions (ext_name, ext_lang_file, ext_active, ext_version) VALUES ('%s','%s','%s','%s')",
                                 array($ext_name, $EXT_LANG_PREFIX, $EXT_ALWAYS_ACTIVE, $EXT_VERSION), __FILE__, __LINE__);
 
                                // Update task management
@@ -239,9 +244,12 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
 }
 //
 function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) {
-       global $cacheInstance;
+       global $cacheInstance, $_CONFIG;
        $SQLs = array();
 
+       // Extensions are never active by default
+       $EXT_ALWAYS_ACTIVE = "N";
+
        // By default no SQL has been executed
        $sqlRan = false;
 
@@ -253,14 +261,14 @@ function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) {
        if (empty($ext_name)) return false;
 
        // Load extension in detected mode
-       //* DEBUG: */ echo __FUNCTION__.":ext_name[{$id}]={$ext_name}<br />\n";
+       //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):ext_name[{$id}]={$ext_name}<br />\n";
        $file = sprintf("%sinc/extensions/ext-%s.php", PATH, $ext_name);
        if (FILE_READABLE($file)) {
                // Load the include
                require($file);
        } // END - if
 
-       //* DEBUG: */ echo __FUNCTION__.":SQLs::count=".count($SQLs)."<br />\n";
+       //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):SQLs::count=".count($SQLs)."<br />\n";
        if ((is_array($SQLs) && (sizeof($SQLs) > 0))) {
                // Run SQL commands...
                foreach ($SQLs as $sql) {
@@ -270,7 +278,7 @@ function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) {
                        // Is there still an SQL query?
                        if (!empty($sql)) {
                                // Do we have an "ALTER TABLE" command?
-                               //* DEBUG: */ echo __FUNCTION__.":SQL={$SQL}<br />\n";
+                               //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):SQL={$SQL}<br />\n";
                                if (substr(strtolower($sql), 0, 11) == "alter table") {
                                        // Analyse the alteration command
                                        SQL_ALTER_TABLE($sql, __FILE__, __LINE__);
@@ -291,19 +299,7 @@ function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) {
                         array($id), __FILE__, __LINE__);
                } // END - if
 
-               //* DEBUG: */ echo __FUNCTION__.":mode={$EXT_LOAD_MODE}<br />\n";
-
-               // Remove cache file(s) if extension is active
-               if (((EXT_IS_ACTIVE("cache")) || (GET_EXT_VERSION("cache") != "")) && (((SQL_AFFECTEDROWS() == 1) && ($EXT_LOAD_MODE == "remove")) || ($sqlRan === true))) {
-                       //* 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();
-
-                       // @TODO This causes the whole (!) menu cache being purged
-                       CACHE_PURGE_ADMIN_MENU();
-               } // END - if
+               //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):mode={$EXT_LOAD_MODE}<br />\n";
 
                // Is this the sql_patches?
                //* DEBUG: */ echo __LINE__.": {$id}/{$ext_name}/{$EXT_LOAD_MODE}<br />\n";
@@ -313,6 +309,18 @@ function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) {
                        LOAD_URL("modules.php?module=admin&logout=1&".$EXT_LOAD_MODE."=sql_patches");
                } // END - if
        } // END - if
+
+       // Remove cache file(s) if extension is active
+       if (((EXT_IS_ACTIVE("cache")) || (GET_EXT_VERSION("cache") != "")) && (((SQL_AFFECTEDROWS() == 1)) || ($sqlRan === true) || ($EXT_LOAD_MODE == "activate") || ($EXT_LOAD_MODE == "deactivate"))) {
+               //* 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();
+
+               // @TODO This causes the whole (!) menu cache being purged
+               CACHE_PURGE_ADMIN_MENU();
+       } // END - if
 }
 // Check if given extension is active
 function EXT_IS_ACTIVE ($ext_name) {
@@ -341,11 +349,16 @@ function EXT_IS_ACTIVE ($ext_name) {
                        // Extension was not found!
                        return false;
                }
+
+               // Load entry
                list($active) = SQL_FETCHROW($result);
-               //* DEBUG: */ echo $ext_name."[DB]: {$active}<br />\n";
+
+               // Free result
                SQL_FREERESULT($result);
 
+
                // Write cache array
+               //* DEBUG: */ echo $ext_name."[DB]: {$active}<br />\n";
                $cacheArray['extensions']['ext_active'][$ext_name] = $active;
        } else {
                // Extension not active!
@@ -353,9 +366,6 @@ function EXT_IS_ACTIVE ($ext_name) {
                $cacheArray['extensions']['ext_active'][$ext_name] = "N";
        }
 
-       // Create FQFN for extension file
-       $inc = sprintf("%sinc/extensions/ext-%s.php", PATH, $ext_name);
-
        // Debug message
        //DEBUG_LOG(__FUNCTION__.": ext_name={$ext_name},active={$active}");
 
@@ -369,12 +379,12 @@ function GET_EXT_VERSION ($ext_name) {
 
        // Extensions are all inactive during installation
        if ((!isBooleanConstantAndTrue('mxchange_installed')) || (isBooleanConstantAndTrue('mxchange_installing'))) return "";
-       //* DEBUG: */ echo __FUNCTION__.": ext_name={$ext_name}<br />\n";
+       //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): ext_name={$ext_name}<br />\n";
 
        // Is the cache written?
        if (!empty($cacheArray['extensions']['ext_version'][$ext_name])) {
                // Load data from cache
-               //* DEBUG: */ echo __FUNCTION__.": CACHE!<br />\n";
+               //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): CACHE!<br />\n";
                $ret = $cacheArray['extensions']['ext_version'][$ext_name];
 
                // Count cache hits
@@ -391,14 +401,19 @@ function GET_EXT_VERSION ($ext_name) {
        }
 
        // Return result
-       //* DEBUG: */ echo __FUNCTION__.": ret={$ret}<br />\n";
+       //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): ret={$ret}<br />\n";
        return $ret;
 }
 //
 function EXTENSION_UPDATE($file, $ext, $EXT_VER, $dry_run=false)
 {
        // This shall never do a non-admin user!
-       global $cacheInstance, $_CONFIG, $NOTES; $SQLs = array();
+       global $cacheInstance, $_CONFIG, $NOTES;
+
+       // Init arrays
+       $SQLs = array(); $INC_POOL = array();
+
+       // Only admins are allowed to update extensions
        if ((!IS_ADMIN()) || (empty($ext))) return false;
 
        // Load extension in update mode
@@ -452,9 +467,16 @@ function EXTENSION_UPDATE($file, $ext, $EXT_VER, $dry_run=false)
                                }
                        }
 
+                       // In real-mode execute any existing includes
+                       if ((!$dry_run) && (count($INC_POOL) > 0)) {
+                               // Include all files
+                               foreach ($INC_POOL as $fqfn) {
+                                       require_once($fqfn);
+                               } // END - foreach
+                       } // END - if
+
                        // Run SQLs
-                       if ((is_array($SQLs)) && (!$dry_run))
-                       {
+                       if ((is_array($SQLs)) && (!$dry_run)) {
                                // Run SQL commands
                                foreach ($SQLs as $sql)
                                {
@@ -616,5 +638,6 @@ function EXT_VERSION_IS_OLDER ($ext_name, $ext_ver) {
        // Now compare both and return the result
        return ($currVersion < $ext_ver);
 }
+
 //
 ?>