Typo fixed :(
[mailer.git] / inc / extensions-functions.php
index 7b3ee31961c1a0f3b1729da51c96639a504a7ddc..dc7660b24cd40c10b207bc8dad6b3398158821d0 100644 (file)
@@ -98,7 +98,7 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0', $dry_run = false
 
        // Is the extension already loaded?
        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Loading extension ' . $ext_name . ', mode=' . getExtensionMode() . ', ver=' . getCurrentExtensionVersion());
-       if ((isset($GLOBALS['ext_loaded']['ext'][$ext_name])) && (getExtensionMode() == 'init')) {
+       if ((isExtensionLoaded($ext_name)) && (getExtensionMode() == 'init')) {
                // Debug message
                logDebugMessage(__FUNCTION__, __LINE__, sprintf("Extension %s already loaded.", $ext_name));
 
@@ -124,12 +124,12 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0', $dry_run = false
        // Do we have cache?
        if (isExtensionFunctionFileReadable($ext_name)) {
                // Not yet loaded?
-               if ((($GLOBALS['cache_array']['extension']['ext_func'][$ext_name] == 'Y') || (!isset($GLOBALS['cache_array']['extension']['ext_func'][$ext_name]))) && (!isset($GLOBALS['ext_loaded']['funcs'][$ext_name]))) {
+               if ((($GLOBALS['cache_array']['extension']['ext_func'][$ext_name] == 'Y') || (!isset($GLOBALS['cache_array']['extension']['ext_func'][$ext_name]))) && (!isExtensionLibraryLoaded($ext_name))) {
                        // Construct IFN for functions file
                        $funcsInclude = sprintf("inc/libs/%s_functions.php", $ext_name);
 
                        // Mark it as loaded
-                       $GLOBALS['ext_loaded']['funcs'][$ext_name] = true;
+                       markExtensionLibraryAsLoaded($ext_name);
 
                        // Download functions file
                        loadIncludeOnce($funcsInclude);
@@ -142,6 +142,9 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0', $dry_run = false
                ));
        }
 
+       // Load extension's filter library if present
+       loadExtensionFilters($ext_name);
+
        // Extensions are not deprecated by default
        setExtensionDeprecated('N');
 
@@ -167,7 +170,7 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0', $dry_run = false
        // Mark it as loaded in normal mode
        if (getExtensionMode() == '') {
                // Mark it now...
-               $GLOBALS['ext_loaded']['ext'][$ext_name] = true;
+               markExtensionAsLoaded($ext_name);
        } // END - if
 
        // All fine!
@@ -353,21 +356,21 @@ function registerExtension ($ext_name, $taskId, $dry_run = false, $logout = true
                                //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'insert=' . getCurrentExtensionName() . '/' . getCurrentExtensionVersion() . ' - INSERT!');
                                if (isExtensionInstalledAndNewer('sql_patches', '0.0.6')) {
                                        // New way, with CSS
-                                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ',always_active=' . getExtensionAlwaysActive() . ', ext_ver=' . getCurrentExtensionVersion() . 'ext_css=' . getExtensionHasCss());
+                                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ',always_active=' . getThisExtensionAlwaysActive() . ', ext_ver=' . getCurrentExtensionVersion() . 'ext_css=' . getExtensionHasCss());
                                        SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_extensions` (`ext_name`, `ext_active`, `ext_version`,`ext_has_css`) VALUES ('%s','%s','%s','%s')",
                                                array(
                                                        getCurrentExtensionName(),
-                                                       getExtensionAlwaysActive(),
+                                                       getThisExtensionAlwaysActive(),
                                                        getCurrentExtensionVersion(),
                                                        getExtensionHasCss()
                                                ), __FUNCTION__, __LINE__);
                                } else {
                                        // Old way, no CSS
-                                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ',always_active=' . getExtensionAlwaysActive() . ', ext_ver=' . getCurrentExtensionVersion());
+                                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ',always_active=' . getThisExtensionAlwaysActive() . ', ext_ver=' . getCurrentExtensionVersion());
                                        SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_extensions` (`ext_name`, `ext_active`, `ext_version`) VALUES ('%s','%s','%s')",
                                                array(
                                                        getCurrentExtensionName(),
-                                                       getExtensionAlwaysActive(),
+                                                       getThisExtensionAlwaysActive(),
                                                        getCurrentExtensionVersion()
                                                ), __FUNCTION__, __LINE__);
                                }
@@ -560,7 +563,7 @@ function isExtensionActive ($ext_name) {
 
                // Count cache hits
                incrementStatsEntry('cache_hits');
-       } elseif (isset($GLOBALS['ext_loaded'][$ext_name])) {
+       } elseif (isExtensionLoaded($ext_name)) {
                // @TODO Extension is loaded, what next?
                debug_report_bug(__FUNCTION__, __LINE__, 'LOADED:' . $ext_name);
        } elseif (($ext_name == 'cache') || (!isExtensionInstalled('cache'))) {
@@ -653,7 +656,9 @@ function getExtensionVersion ($ext_name, $force = false) {
 // Updates a given extension with current extension version to latest version
 function updateExtension ($ext_name, $ext_ver, $dry_run = false) {
        // Only admins are allowed to update extensions
-       if ((!isAdmin()) || (empty($ext_name))) return false;
+       if ((!isAdmin()) || (empty($ext_name))) {
+               return false;
+       } // END - if
 
        // Set current SQL name
        setCurrentExtensionName($ext_name);
@@ -673,7 +678,7 @@ function updateExtension ($ext_name, $ext_ver, $dry_run = false) {
        initExtensionSqls();
 
        // Check if version is updated
-       //* DEBUG: */ debugOutput(getCurrentExtensionName().'/'.$ext_name.':'.getThisExtensionVersion().'/'.$ext_ver.'/'.intval(is_array($history)));
+       //* DEBUG: */ debugOutput(getCurrentExtensionName() . '/' . $ext_name . ':' . getThisExtensionVersion() . '/' . $ext_ver . '/' . intval(is_array($history)));
        if (((getThisExtensionVersion() != $ext_ver) || (isExtensionDryRun())) && (is_array($history))) {
                // Search for starting point
                $start = array_search($ext_ver, $history);
@@ -798,7 +803,7 @@ function addExtensionVerboseSqlTable ($title = '', $dashed = '', $switch = false
                        $OUT = loadTemplate('admin_extension_sql_table', true, $content);
                } else {
                        // No addional SQL commands to run
-                       $OUT = loadTemplate('admin_settings_saved', true, '{--ADMIN_NO_ADDITIONAL_SQLS--}');
+                       $OUT = displayMessage('{--ADMIN_NO_ADDITIONAL_SQLS--}', true);
                }
        } // END - if
 
@@ -1170,13 +1175,13 @@ function setExtensionAlwaysActive ($active) {
 }
 
 // Getter for EXT_ALWAYS_ACTIVE flag
-function getExtensionAlwaysActive () {
+function getThisExtensionAlwaysActive () {
        return $GLOBALS['ext_always_active'][getCurrentExtensionName()];
 }
 
 // Checks wether the current extension is always active
-function isExtensionAlwaysActive () {
-       return (getExtensionAlwaysActive() == 'Y');
+function isThisExtensionAlwaysActive () {
+       return (getThisExtensionAlwaysActive() == 'Y');
 }
 
 // Setter for EXT_VERSION flag
@@ -1720,7 +1725,7 @@ function isExtensionFunctionFileReadable ($ext_name) {
                $funcsInclude = sprintf("inc/libs/%s_functions.php", $ext_name);
 
                // Is this include there?
-               if ((isFileReadable($funcsInclude)) && (!isset($GLOBALS['ext_loaded']['funcs'][$ext_name])) && (getExtensionMode() == 'test')) {
+               if ((isFileReadable($funcsInclude)) && (!isExtensionLibraryLoaded($ext_name)) && (getExtensionMode() == 'test')) {
                        // Cache it!
                        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_func=Y - FOUND!');
                        $GLOBALS['cache_array']['extension']['ext_func'][$ext_name] = 'Y';
@@ -1878,6 +1883,18 @@ function addSponsorMenuSql ($action, $what, $title, $active, $sort) {
        }
 }
 
+// Add configuration entry if not found for actual extension
+function addConfigAddSql ($columnName, $columnSql) {
+       // Is the column there?
+       if (!isSqlTableColumnFound('{?_MYSQL_PREFIX?}_config', $columnName)) {
+               // Not found, so add it
+               addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `' . $columnName . '` ' . $columnSql);
+       } else {
+               // Add debug line
+               logDebugMessage(__FUNCTION__, __LINE__, 'Configuration entry ' . $columnName . ' already created. columnSql=' . $columnSql);
+       }
+}
+
 // Enables/disables productive mode for current extension (used only while
 // registration).
 function enableExtensionProductive ($isProductive = true) {
@@ -1916,5 +1933,41 @@ function isExtensionProductive ($ext_name = '') {
        return $GLOBALS[__FUNCTION__][$ext_name];
 }
 
+// Mark extension file as loaded
+function markExtensionAsLoaded ($ext_name) {
+       // Is it already loaded?
+       if (isExtensionLoaded($ext_name)) {
+               // Then abort here
+               debug_report_bug(__FUNCTION__, __LINE__, 'Extension ' . $ext_name . ' is already marked as loaded!');
+       } // END - if
+
+       // Mark it
+       $GLOBALS['ext_loaded']['ext_name'][$ext_name] = true;
+}
+
+// Determine wether the given extension is already loaded
+function isExtensionLoaded ($ext_name) {
+       // Is it there?
+       return ((isset($GLOBALS['ext_loaded']['ext_name'][$ext_name])) && ($GLOBALS['ext_loaded']['ext_name'][$ext_name] === true));
+}
+
+// Mark extension's library file as loaded
+function markExtensionLibraryAsLoaded ($ext_name) {
+       // Is it already loaded?
+       if (isExtensionLibraryLoaded($ext_name)) {
+               // Then abort here
+               debug_report_bug(__FUNCTION__, __LINE__, 'Extension library ' . $ext_name . ' is already marked as loaded!');
+       } // END - if
+
+       // Mark it
+       $GLOBALS['ext_loaded']['library'][$ext_name] = true;
+}
+
+// Determine wether the given extension's library is already loaded
+function isExtensionLibraryLoaded ($ext_name) {
+       // Is it there?
+       return ((isset($GLOBALS['ext_loaded']['library'][$ext_name])) && ($GLOBALS['ext_loaded']['library'][$ext_name] === true));
+}
+
 // [EOF]
 ?>