Extension loader rewritten and no more needed cache elements removed
[mailer.git] / inc / extensions.php
index ed6f43c50386877ce402900c253d32e7e7d4e8db..29ea00c7bbc5ec444a870b36f2457c10ef17a0e6 100644 (file)
@@ -37,6 +37,60 @@ if (!defined('__SECURITY')) {
        require($INC);
 }
 
+// Load the extension and maybe found language and function files
+function LOAD_EXTENSION ($ext_name) {
+       global $EXT_LOADED, $_CONFIG, $CSS, $cacheMode;
+
+       // Is the extension already loaded?
+       if (isset($EXT_LOADED[$ext_name])) {
+               // Debug message
+               DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Extension %s already loaded.", $ext_name));
+               return false;
+       }
+
+       // Construct FQFN for extension file
+       $extInclude = sprintf("%sinc/extensions/ext-%s.php", PATH, $ext_name);
+
+       // Is the extension file NOT there?
+       if (!FILE_READABLE($extInclude)) {
+               // Debug message
+               DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Extension %s not found.", $ext_name));
+
+               // Abort here
+               return false;
+       } // END - if
+
+       // Construct FQFN for language file
+       $langInclude = sprintf("%sinc/language/%s_%s.php", PATH, $ext_name, GET_LANGUAGE());
+
+       // Is this include there?
+       if (FILE_READABLE($langInclude)) {
+               // Then load it
+               require($langInclude);
+       } // END - if
+
+       // Construct FQFN for functions file
+       $funcsInclude = sprintf("%sinc/libs/%s_functions.php", PATH, $ext_name);
+
+       // Is this include there?
+       if (FILE_READABLE($funcsInclude)) {
+               // Then load it
+               require($funcsInclude);
+       } // END - if
+
+       // Set extension load mode to nothing (default)
+       $EXT_LOAD_MODE = "";
+
+       // Include the extension file
+       require($extInclude);
+
+       // Mark it as loaded
+       $EXT_LOADED[$ext_name] = true;
+
+       // All fine!
+       return true;
+}
+
 //
 function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false) {
        global $NOTES, $_CONFIG, $INC_POOL, $cacheInstance;
@@ -53,8 +107,6 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false) {
 
        // By default the language prefix is the extension's name
        // @TODO: Do we really need this one anymore? Can't we just take $ext_name and done?
-       $EXT_LANG_PREFIX = $ext_name;
-
        // By default we have no failtures
        $EXT_REPORTS_FAILURE = false;
 
@@ -104,9 +156,6 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false) {
                                // Bacup version number
                                $VER_BACKUP = $EXT_VERSION;
 
-                               // Backup language as well
-                               $LANG_BCK = $EXT_LANG_PREFIX;
-
                                // Save the Parrent $EXT_ALWAYS_ACTIVE for later!
                                $EXT_ALWAYS_ACTIVE_PARRENT = $EXT_ALWAYS_ACTIVE;
 
@@ -150,9 +199,6 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false) {
                                // Restore version number
                                $EXT_VERSION = $VER_BACKUP;
 
-                               // Restore language back
-                               $EXT_LANG_PREFIX = $LANG_BCK;
-
                                // Restore $EXT_ALWAYS_ACTIVE with the value from parrent
                                $EXT_ALWAYS_ACTIVE = $EXT_ALWAYS_ACTIVE_PARRENT;
                        } else {
@@ -217,8 +263,8 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false) {
                                } // 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')",
-                                array($ext_name, $EXT_LANG_PREFIX, $EXT_ALWAYS_ACTIVE, $EXT_VERSION), __FILE__, __LINE__);
+                               $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_extensions (ext_name, ext_active, ext_version) VALUES ('%s','%s','%s','%s')",
+                                array($ext_name, $EXT_ALWAYS_ACTIVE, $EXT_VERSION), __FILE__, __LINE__);
 
                                // Update task management
                                ADMIN_SOLVE_TASK($id);
@@ -549,7 +595,8 @@ function EXTENSION_UPDATE($file, $ext, $EXT_VER, $dry_run=false)
                }
        }
 }
-//
+
+// Output verbose SQL table for extension
 function EXTENSION_VERBOSE_TABLE($SQLs, $title = ADMIN_SQLS_EXECUTED_ON_REMOVAL, $dashed = "", $switch = false, $WIDTH = "480") {
        global $_CONFIG;
 
@@ -597,6 +644,7 @@ function EXTENSION_VERBOSE_TABLE($SQLs, $title = ADMIN_SQLS_EXECUTED_ON_REMOVAL,
        // Return output
        return $OUT;
 }
+
 // Get extension name from id
 function GET_EXT_NAME ($id) {
        $ret = "";
@@ -616,6 +664,7 @@ function GET_EXT_NAME ($id) {
        }
        return $ret;
 }
+
 // Get extension id from name
 function GET_EXT_ID($name) {
        $ret = 0;
@@ -637,6 +686,7 @@ function GET_EXT_ID($name) {
        // Return value
        return $ret;
 }
+
 // Activate given extension
 function ACTIVATE_EXTENSION($ext_name) {
        // Activate the extension
@@ -649,6 +699,7 @@ function ACTIVATE_EXTENSION($ext_name) {
                EXTENSION_RUN_SQLS(GET_EXT_ID($ext_name), "activate");
        } // END - if
 }
+
 // Checks wether the extension is older than given
 function EXT_VERSION_IS_OLDER ($ext_name, $ext_ver) {
        // Get current extension version
@@ -661,6 +712,5 @@ function EXT_VERSION_IS_OLDER ($ext_name, $ext_ver) {
        // Now compare both and return the result
        return ($currVersion < $ext_ver);
 }
-
 //
 ?>