]> git.mxchange.org Git - mailer.git/blobdiff - inc/extensions-functions.php
Rewrites/fixes in extension registration
[mailer.git] / inc / extensions-functions.php
index 9c5771d453b5145b318a8f08c2884af40e746fd4..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
@@ -241,13 +241,13 @@ function registerExtension ($ext_name, $taskId, $dry_run = false, $logout = true
                // And run possible updates
                //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName());
                $history = getExtensionVersionHistory();
-               foreach ($history as $ver) {
-                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ', ext_ver=' . $ver);
+               foreach ($history as $ext_ver) {
+                       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ', ext_ver=' . $ext_ver);
                        // Load extension in update mode
-                       loadExtension(getCurrentExtensionName(), 'update', $ver, isExtensionDryRun());
+                       loadExtension(getCurrentExtensionName(), 'update', $ext_ver, isExtensionDryRun());
 
                        // Add update notes to our output
-                       addExtensionNotes($ver);
+                       addExtensionNotes($ext_ver);
                } // END - foreach
 
                // Does this extension depends on an outstanding update of another update?
@@ -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;
@@ -385,9 +385,6 @@ function registerExtension ($ext_name, $taskId, $dry_run = false, $logout = true
                        } elseif (isExtensionDryRun() === true) {
                                // In  "dry-run" mode do always return a true
                                $ret = true;
-
-                               // Re-init queries and notes
-                               initExtensionNotes();
                        } else {
                                // Extension has been removed for updates, so all is fine!
                                $ret = true;
@@ -419,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;
 }
 
@@ -449,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');
@@ -472,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
 }
@@ -535,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
@@ -544,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__);
@@ -559,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');
@@ -587,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])) {
@@ -626,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'];
 }
 
@@ -738,47 +734,48 @@ function addExtensionVerboseSqlTable ($title = '', $dashed = '', $switch = false
 
        // Do we have queries?
        if ((isExtensionInstalledAndNewer('sql_patches', '0.0.7')) && (getConfig('verbose_sql') == 'Y')) {
-               // Init switch color
-               $SW = 2;
-
-               // Get all SQLs
-               foreach (getExtensionSqls() as $sqls) {
-                       // New array format is recursive
-                       foreach ($sqls as $idx => $sql) {
-                               // Trim out spaces
-                               $sql = trim($sql);
-
-                               // Output command if set
-                               if (!empty($sql)) {
-                                       // Prepare output for template
-                                       $content = array(
-                                               'sw'  => $SW,
-                                               'i'   => ($idx+1),
-                                               'sql' => $sql
-                                       );
-
-                                       // Load row template
-                                       $OUT .= loadTemplate('admin_ext_sql_row', true, $content);
-
-                                       // Switch color
-                                       $SW = 3 - $SW;
-                               } // END - if
+               // Do we have entries?
+               if (countExtensionSqls() > 0) {
+                       // Init counter
+                       $idx = 0;
+                       // Get all SQLs
+                       foreach (getExtensionSqls() as $sqls) {
+                               // New array format is recursive
+                               foreach ($sqls as $sql) {
+                                       // Trim out spaces
+                                       $sql = trim($sql);
+
+                                       // Output command if set
+                                       if (!empty($sql)) {
+                                               // Prepare output for template
+                                               $content = array(
+                                                       'i'   => ($idx + 1),
+                                                       'sql' => $sql
+                                               );
+
+                                               // Load row template
+                                               $OUT .= loadTemplate('admin_extension_sql_row', true, $content);
+
+                                               // Count up
+                                               $idx++;
+                                       } // END - if
+                               } // END - foreach
                        } // END - foreach
-               } // END - foreach
 
-               // Prepare content for template
-               $content = array(
-                       'width'  => $width,
-                       'dashed' => $dashed,
-                       'title'  => $title,
-                       'rows'   => $OUT
-               );
+                       // Prepare content for template
+                       $content = array(
+                               'width'  => $width,
+                               'dashed' => $dashed,
+                               'title'  => $title,
+                               'rows'   => $OUT
+                       );
 
-               // Load main template
-               $OUT = loadTemplate('admin_ext_sql_table', true, $content);
-       } elseif ((isExtensionInstalledAndNewer('sql_patches', '0.0.7')) && (getConfig('verbose_sql') == 'Y')) {
-               // No addional SQL commands to run
-               $OUT = loadTemplate('admin_settings_saved', true, '{--ADMIN_NO_ADDITIONAL_SQLS--}');
+                       // Load main template
+                       $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--}');
+               }
        } // END - if
 
        // Return output
@@ -922,7 +919,7 @@ function doDeactivateExtension($ext_name) {
                // Notify the admin
                sendAdminNotification(
                        '{--ADMIN_EXTENSION_DEACTIVATED_SUBJECT--}',
-                       'admin_ext_deactivated',
+                       'admin_extension_deactivated',
                        array('ext_name' => $ext_name)
                );
        } // END - if
@@ -1116,38 +1113,39 @@ function determineTaskIdBySubject ($subject) {
 }
 
 // Add updates notes for given version
-function addExtensionNotes ($ver) {
+function addExtensionNotes ($ext_ver) {
        // Init notes/content
-       $out = ''; $content = array();
+       $out = '';
+       $content = array();
 
        // Is do we have verbose output enabled?
        if ((!isExtensionActive('sql_patches')) || (getConfig('verbose_sql') == 'Y')) {
                // Update notes found?
-               if (isExtensionUpdateNoteSet($ver)) {
+               if (isExtensionUpdateNoteSet($ext_ver)) {
                        // Update notes found
                        $content = array(
-                               'ver'   => $ver,
-                               'notes' => getExtensionUpdateNotes($ver)
+                               'ver'   => $ext_ver,
+                               'notes' => getExtensionUpdateNotes($ext_ver)
                        );
 
                        // Reset them
-                       setExtensionUpdateNotes('', $ver);
-               } elseif (($ver == '0.0') || ($ver == '0.0.0')) {
+                       setExtensionUpdateNotes('', $ext_ver);
+               } elseif (in_array($ext_ver, array('0.0', '0.0.0'))) {
                        // Initial release
                        $content = array(
-                               'ver'   => $ver,
+                               'ver'   => $ext_ver,
                                'notes' => '{--INITIAL_RELEASE--}'
                        );
                } else {
                        // No update notes found!
                        $content = array(
-                               'ver'   => $ver,
+                               'ver'   => $ext_ver,
                                'notes' => '{--NO_UPDATE_NOTES--}'
                        );
                }
 
                // Load template
-               $out = loadTemplate('admin_EXTENSION_notes', true, $content);
+               $out = loadTemplate('admin_extension_notes', true, $content);
        } // END - if
 
        // Add the notes
@@ -1203,8 +1201,8 @@ function isExtensionAlwaysActive () {
 }
 
 // Setter for EXT_VERSION flag
-function setThisExtensionVersion ($version) {
-       $GLOBALS['ext_version'][getCurrentExtensionName()] = (string) $version;
+function setThisExtensionVersion ($ext_version) {
+       $GLOBALS['ext_version'][getCurrentExtensionName()] = (string) $ext_version;
 }
 
 // Getter for EXT_VERSION flag
@@ -1232,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());
@@ -1406,8 +1404,8 @@ function getExtensionReportsFailure () {
 }
 
 // Setter for EXT_VER_HISTORY flag
-function setExtensionVersionHistory ($verHistory) {
-       $GLOBALS['ext_ver_history'][getCurrentExtensionName()] = (array) $verHistory;
+function setExtensionVersionHistory ($versionHistory) {
+       $GLOBALS['ext_ver_history'][getCurrentExtensionName()] = (array) $versionHistory;
 }
 
 // Getter for EXT_VER_HISTORY array
@@ -1416,33 +1414,41 @@ function getExtensionVersionHistory () {
 }
 
 // Setter for EXT_UPDATE_NOTES
-function setExtensionUpdateNotes ($updateNotes, $ver='') {
+function setExtensionUpdateNotes ($updateNotes, $ext_ver = '') {
        // . '/' . getCurrentExtensionVersion()
-       //* DEBUG: */ debug_report_bug(__FUNCTION__.':' . getCurrentExtensionName() . '/' . getExtensionMode() . '/' . $ver . '=' . $updateNotes);
-       if (empty($ver)) {
+       //* 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 {
-               $GLOBALS['ext_update_notes'][getCurrentExtensionName()][$ver] = (string) $updateNotes;
+               $GLOBALS['ext_update_notes'][getCurrentExtensionName()][$ext_ver] = (string) $updateNotes;
        }
 }
 
 // Getter for EXT_UPDATE_NOTES
-function getExtensionUpdateNotes ($ver) {
-       return $GLOBALS['ext_update_notes'][getCurrentExtensionName()][$ver];
+function getExtensionUpdateNotes ($ext_ver) {
+       return $GLOBALS['ext_update_notes'][getCurrentExtensionName()][$ext_ver];
 }
 
 // Checks if ext_update_notes is set
-function isExtensionUpdateNoteSet ($ver) {
-       return isset($GLOBALS['ext_update_notes'][getCurrentExtensionName()][$ver]);
+function isExtensionUpdateNoteSet ($ext_ver) {
+       return isset($GLOBALS['ext_update_notes'][getCurrentExtensionName()][$ext_ver]);
 }
 
 // Init extension notice
-function initExtensionNotes () {
+function initExtensionNotes ($force = false) {
+       // Is it already initialized?
+       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
+
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getCurrentExtensionName()=' . getCurrentExtensionName());
        $GLOBALS['ext_notes'][getCurrentExtensionName()] = '';
 }
 
 // Append extension notice
 function appendExtensionNotes ($notes) {
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getCurrentExtensionName()=' . getCurrentExtensionName() . ', notes()=' . strlen($notes));
        $GLOBALS['ext_notes'][getCurrentExtensionName()] .= (string) trim($notes);
 }
 
@@ -1453,23 +1459,24 @@ function getExtensionNotes () {
 
 // Setter for current extension name
 function setCurrentExtensionName ($ext_name) {
-       $GLOBALS['curr_EXTENSION_name'] = (string) trim($ext_name);
+       $GLOBALS['curr_extension_name'] = (string) trim($ext_name);
 }
 
 // Getter for current extension name
 function getCurrentExtensionName () {
-       if (isset($GLOBALS['curr_EXTENSION_name'])) {
-               return $GLOBALS['curr_EXTENSION_name'];
+       if (!isset($GLOBALS['curr_extension_name'])) {
+               // Not set!
+               debug_report_bug(__FUNCTION__, __LINE__, 'curr_extension_name not initialized. Please execute initExtensionSqls() before calling this function.');
        } // END - if
 
-       // Not set!
-       debug_report_bug(__FUNCTION__.": curr_EXTENSION_name not initialized. Please execute initExtensionSqls() before calling this function.");
+       // Return it
+       return $GLOBALS['curr_extension_name'];
 }
 
 // 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();
 
@@ -1498,6 +1505,20 @@ function getExtensionSqls () {
        return $GLOBALS['ext_sqls'][getCurrentExtensionName()];
 }
 
+// Count SQLs for current extension
+function countExtensionSqls () {
+       // Output debug backtrace if not found (SHOULD NOT HAPPEN!)
+       if (!isset($GLOBALS['ext_sqls'][getCurrentExtensionName()])) {
+               // Not found, should not happen
+               debug_report_bug(__FUNCTION__, __LINE__, sprintf("ext_sqls is empty, current extension: %s",
+                       getCurrentExtensionName()
+               ));
+       } // END - if
+
+       // Count them all
+       return count($GLOBALS['ext_sqls'][getCurrentExtensionName()]);
+}
+
 // Removes SQLs for current extension
 function unsetExtensionSqls () {
        unset($GLOBALS['ext_sqls'][getCurrentExtensionName()]);
@@ -1545,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
@@ -1572,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;
 }
 
@@ -1714,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');
 }