]> git.mxchange.org Git - mailer.git/blobdiff - inc/extensions-functions.php
Rewrites/fixes in extension registration
[mailer.git] / inc / extensions-functions.php
index f1df6010e5bdc4ea34f18cb27130c9107dd88183..109b30f1d282eb4704cc630e91db582d1a01091f 100644 (file)
@@ -116,7 +116,7 @@ function loadExtension ($ext_name, $ext_mode = 'init', $ext_ver = '', $dry_run =
        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]))) {
-                       // Construct FQFN for functions file
+                       // Construct IFN for functions file
                        $funcsInclude = sprintf("inc/libs/%s_functions.php", $ext_name);
 
                        // Mark it as loaded
@@ -284,8 +284,7 @@ function registerExtension ($ext_name, $taskId, $dry_run = false, $logout = true
 
                                                // Reset extension name
                                                setCurrentExtensionName($ext_name);
-                                               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName());
-                                               //* DEBUG: */ debugOutput(getCurrentExtensionName().':<pre>' . print_r($test, true) . '</pre>');
+                                               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ',test=' . intval($test));
                                        } // END - if
                                } elseif ($ext_ver != getCurrentExtensionVersion()) {
                                        // Ok, update this extension now
@@ -325,11 +324,9 @@ function registerExtension ($ext_name, $taskId, $dry_run = false, $logout = true
                setExtensionMode('register');
 
                // Remains true if extension registration reports no failures
-               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName());
-               //* DEBUG: */ debugOutput(getCurrentExtensionName().':<pre>' . print_r($test, true) . '</pre>');
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ',test=' . intval($test));
                $test = (($test === true) && (getExtensionReportsFailure() === false));
-               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName());
-               //* DEBUG: */ debugOutput(getCurrentExtensionName().':<pre>' . print_r($test, true) . '</pre>');
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ',test=' . intval($test));
 
                // Does everthing before wents ok?
                if ($test === true) {
@@ -366,6 +363,9 @@ function registerExtension ($ext_name, $taskId, $dry_run = false, $logout = true
                                                ), __FUNCTION__, __LINE__);
                                }
 
+                               // Use the insert id as extension id and cache it for early usage
+                               $GLOBALS['cache_array']['extension']['ext_id'][getCurrentExtensionName()] = SQL_INSERTID();
+
                                // Remove cache file(s) if extension is active
                                runFilterChain('post_extension_installed', array(
                                        'pool'     => 'extension',
@@ -375,7 +375,7 @@ function registerExtension ($ext_name, $taskId, $dry_run = false, $logout = true
 
                                // Re-init queries and notes
                                initExtensionSqls(true);
-                               initExtensionNotes();
+                               initExtensionNotes(true);
 
                                // Mark it as installed
                                $GLOBALS['ext_is_installed'][getCurrentExtensionName()] = true;
@@ -416,8 +416,7 @@ function registerExtension ($ext_name, $taskId, $dry_run = false, $logout = true
        } // END - if
 
        // Return status code
-       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ' - EXIT!');
-       //* DEBUG: */ debugOutput(getCurrentExtensionName().':<pre>'.print_r($ret, true).'</pre>');
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ',test=' . intval($test) . ' - EXIT!');
        return $ret;
 }
 
@@ -446,14 +445,14 @@ function doExtensionSqls ($ext_id, $load_mode) {
        $sqlRan = false;
 
        // Load extension in detected mode
-       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ":ext_name[{$ext_id}]=".getCurrentExtensionName()."");
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name[' . $ext_id . ']=' . getCurrentExtensionName());
        loadExtension(getCurrentExtensionName(), $load_mode, '', false);
 
        // Init these SQLs
        initSqls();
        setSqlsArray(getExtensionSqls());
 
-       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ":SQLs::count=".countSqls()."");
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SQLs::count=' . countSqls());
        if (isSqlsValid()) {
                // Run SQL commands...
                runFilterChain('run_sqls');
@@ -469,10 +468,10 @@ function doExtensionSqls ($ext_id, $load_mode) {
        } // END - if
 
        // Is this the sql_patches?
-       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ": id=".$ext_id.",currName=".getCurrentExtensionName().",loadMode=".$load_mode);
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'id=' . $ext_id . ',currName=' . getCurrentExtensionName() . ',loadMode=' . $load_mode);
        if ((getCurrentExtensionName() == 'sql_patches') && (($load_mode == 'register') || ($load_mode == 'remove'))) {
                // Then redirect to logout
-               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ": LOAD!");
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ': LOAD!');
                redirectToUrl('modules.php?module=admin&amp;logout=1&amp;' . $load_mode . '=sql_patches');
        } // END - if
 }
@@ -532,7 +531,7 @@ function isExtensionActive ($ext_name) {
        // Check cache
        if (isset($GLOBALS['cache_array']['extension']['ext_active'][$ext_name])) {
                // Load from cache
-               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "CACHE! ext_name={$ext_name}");
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'CACHE! ext_name=' . $ext_name);
                $data['ext_active'] = $GLOBALS['cache_array']['extension']['ext_active'][$ext_name];
 
                // Count cache hits
@@ -541,7 +540,7 @@ function isExtensionActive ($ext_name) {
                // @TODO Extension is loaded, what next?
                debug_report_bug(__FUNCTION__, __LINE__, 'LOADED:' . $ext_name);
        } elseif (($ext_name == 'cache') || (!isExtensionInstalled('cache'))) {
-               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "DB! ext_name={$ext_name}");
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'DB! ext_name=' . $ext_name);
                // Load from database
                $result = SQL_QUERY_ESC("SELECT `ext_active` FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `ext_name`='%s' LIMIT 1",
                        array($ext_name), __FUNCTION__, __LINE__);
@@ -556,16 +555,16 @@ function isExtensionActive ($ext_name) {
                SQL_FREERESULT($result);
 
                // Write cache array
-               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "ext_name=".$ext_name."[DB]: ".$data['ext_active']."");
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . '[DB]: ' . $data['ext_active']);
                $GLOBALS['cache_array']['extension']['ext_active'][$ext_name] = $data['ext_active'];
        } else {
                // Extension not active!
-               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "ext_name=".$ext_name.": Not active!");
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ': Not active!');
                $GLOBALS['cache_array']['extension']['ext_active'][$ext_name] = 'N';
        }
 
        // Debug message
-       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "ext_name=".$ext_name.",active=".$data['ext_active']."");
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',active=' . $data['ext_active']);
 
        // Is this extension activated? (For admins we always have active extensions...)
        return ($data['ext_active'] == 'Y');
@@ -584,7 +583,7 @@ function getExtensionVersion ($ext_name, $force = false) {
 
        // Extensions are all inactive during installation
        if (isInstallationPhase()) return '';
-       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ": ext_name=".$ext_name."");
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name);
 
        // Is the cache written?
        if (isset($GLOBALS['cache_array']['extension']['ext_version'][$ext_name])) {
@@ -623,7 +622,7 @@ function getExtensionVersion ($ext_name, $force = false) {
        } // END - if
 
        // Return result
-       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ": ret={$data['ext_version']}");
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_version=' . $data['ext_version']);
        return $data['ext_version'];
 }
 
@@ -1231,7 +1230,7 @@ function addExtensionUpdateDependency ($updateDepends) {
        } // END - if
 
        // Is it not yet added?
-       /* DEBUG:
+       /* Only for debugging!
        if ((isset($updateDepends, $GLOBALS['ext_running_updates'][getCurrentExtensionName()])) && (in_array($updateDepends, getExtensionUpdatesRunning()))) {
                // Double-adding isn't fine, too
                debug_report_bug(__FUNCTION__, __LINE__, '() called twice: updateDepends=' . $updateDepends . ',currentExtension=' . getCurrentExtensionName());
@@ -1417,7 +1416,7 @@ function getExtensionVersionHistory () {
 // Setter for EXT_UPDATE_NOTES
 function setExtensionUpdateNotes ($updateNotes, $ext_ver = '') {
        // . '/' . getCurrentExtensionVersion()
-       //* DEBUG: */ debug_report_bug(__FUNCTION__.':' . getCurrentExtensionName() . '/' . getExtensionMode() . '/' . $ext_ver . '=' . $updateNotes);
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getCurrentExtensionName()=' . getCurrentExtensionName() . ',getExtensionMode()=' . getExtensionMode() . ',ext_ver=' . $ext_ver . ',updateNotes()=' . strlen($updateNotes));
        if (empty($ext_ver)) {
                $GLOBALS['ext_update_notes'][getCurrentExtensionName()][getCurrentExtensionVersion()] = (string) $updateNotes;
        } else {
@@ -1436,9 +1435,9 @@ function isExtensionUpdateNoteSet ($ext_ver) {
 }
 
 // Init extension notice
-function initExtensionNotes () {
+function initExtensionNotes ($force = false) {
        // Is it already initialized?
-       if (isset($GLOBALS['ext_notes'][getCurrentExtensionName()])) {
+       if (($force === false) && (isset($GLOBALS['ext_notes'][getCurrentExtensionName()]))) {
                // This is mostly not wanted, so please report it
                debug_report_bug(__FUNCTION__, __LINE__, 'ext_notes already set for extension ' . getCurrentExtensionName());
        } // END - if
@@ -1477,7 +1476,7 @@ function getCurrentExtensionName () {
 // Init SQLs array for current extension
 function initExtensionSqls ($force = false) {
        // Auto-init the array or if forced
-       if ((!isset($GLOBALS['ext_sqls'][getCurrentExtensionName()])) || ($force === true)) {
+       if (($force === true) || (!isset($GLOBALS['ext_sqls'][getCurrentExtensionName()]))) {
                // Set the array
                $GLOBALS['ext_sqls'][getCurrentExtensionName()] = array();
 
@@ -1567,19 +1566,19 @@ function redirectOnUninstalledExtension ($ext_name) {
 // Filter for initialization of all extensions by loading them in 'init' mode
 function FILTER_INIT_EXTENSIONS () {
        // Do we have some entries?
-       //* DEBUG */ print __FUNCTION__.': ENTRY!<br />';
+       //* DEBUG */ logDebugMessage(__FUNCTION__, __LINE__, 'ENTRY!');
        if (isset($GLOBALS['cache_array']['extension']['ext_name'])) {
                // Load all found extensions if found
-               //* DEBUG */ print __FUNCTION__.': CACHE - START!<br />';
+               //* DEBUG */ logDebugMessage(__FUNCTION__, __LINE__, 'CACHE - START!');
                foreach ($GLOBALS['cache_array']['extension']['ext_name'] as $key => $ext_name) {
                        // Load it
-                       //* DEBUG */ print __FUNCTION__.': '.$ext_name.' - START<br />';
+                       //* DEBUG */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name='.$ext_name.' - START');
                        loadExtension($ext_name, 'init', getExtensionVersion($ext_name));
-                       //* DEBUG */ print __FUNCTION__.': '.$ext_name.' - END<br />';
+                       //* DEBUG */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name='.$ext_name.' - END');
                } // END - foreach
-               //* DEBUG */ print __FUNCTION__.': CACHE - END!<br />';
+               //* DEBUG */ logDebugMessage(__FUNCTION__, __LINE__, 'CACHE - END!');
        } // END - if
-       //* DEBUG */ print __FUNCTION__.': EXIT!<br />';
+       //* DEBUG */ logDebugMessage(__FUNCTION__, __LINE__, 'EXIT!');
 }
 
 // Setter for extension mode
@@ -1594,7 +1593,7 @@ function getExtensionMode () {
 
 // Setter for dry-run
 function enableExtensionDryRun ($dry_run = true) {
-       //* DEBUG: */ debugOutput(__FUNCTION__.': '.getCurrentExtensionName().'='.intval($dry_run));
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getCurrentExtensionName()='.getCurrentExtensionName().',dry='.intval($dry_run));
        $GLOBALS['ext_dry_run'] = (bool) $dry_run;
 }
 
@@ -1736,24 +1735,30 @@ function isExtensionIncludeReadable ($ext_name = '') {
 
 // Checks if an extension's function file is readable
 function isExtensionFunctionFileReadable ($ext_name) {
+       // Is cache there?
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name);
        if (isset($GLOBALS['cache_array']['extension']['ext_func'][$ext_name])) {
                // Just count cache hits
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_func=' . $GLOBALS['cache_array']['extension']['ext_func'][$ext_name] .' - CACHE!');
                incrementStatsEntry('cache_hits');
        } else {
-               // Construct FQFN for functions file
+               // Construct IFN for functions file
                $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')) {
                        // Cache it!
+                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_func=Y - FOUND!');
                        $GLOBALS['cache_array']['extension']['ext_func'][$ext_name] = 'Y';
                } else {
                        // Cache it!
+                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_func=N - NOT FOUND!');
                        $GLOBALS['cache_array']['extension']['ext_func'][$ext_name] = 'N';
                }
        }
 
        // Return result
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_func=' . $GLOBALS['cache_array']['extension']['ext_func'][$ext_name]);
        return ($GLOBALS['cache_array']['extension']['ext_func'][$ext_name] == 'Y');
 }