<?php
/************************************************************************
- * MXChange v0.2.1 Start: 10/25/2009 *
- * =============== Last change: 10/25/2009 *
+ * Mailer v0.2.1-FINAL Start: 10/25/2009 *
+ * =================== Last change: 10/25/2009 *
* *
* -------------------------------------------------------------------- *
* File : extensions-functions.php *
* svn:keywords Date Revision" (autoprobset!) at least!!!!!! *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009, 2010 by Mailer Developer Team *
* For more information visit: http://www.mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Load the extension and maybe found language and function files.
function loadExtension ($ext_name, $ext_mode = 'init', $ext_ver = '', $dry_run = false) {
- // Set current extension name
- setCurrentExtensionName($ext_name);
+ // If this happens twice, we need the bug report from you, except for updates/tests
+ if ((isset($GLOBALS['loaded_extension'][$ext_name][$ext_mode])) && (!in_array($ext_mode, array('update', 'test')))) {
+ debug_report_bug(__FUNCTION__, __LINE__, '() is called twice: ext_name=' . $ext_name . ', ext_mode='. $ext_mode . ',ext_sqls=' . print_r(getExtensionSqls(), true) . ', ext_register_running=' . print_r($GLOBALS['ext_register_running'], true) . ', ext_running_updates=' . print_r($GLOBALS['ext_running_updates'], true));
+ } // END - if
- // Set current extension version
- setCurrentExtensionVersion($ext_ver);
+ // Make sure this situation can only happen once
+ $GLOBALS['loaded_extension'][$ext_name][$ext_mode] = true;
// Set extension mode
setExtensionMode($ext_mode);
+ // Set current extension name
+ setCurrentExtensionName($ext_name);
+
+ if (!empty($ext_ver)) {
+ // Set current extension version
+ setCurrentExtensionVersion($ext_ver);
+ } else {
+ // Set it to 0.0
+ setCurrentExtensionVersion('0.0');
+
+ // In all but test-mode we need these messages to debug! Please report all (together, e.g.)
+ if ($ext_mode != 'test') {
+ // Log empty versions not in test-mode, but maybe it is fine...
+ logDebugMessage(__FUNCTION__, __LINE__, 'Extension version is empty, setting to 0.0. ext_name=' . $ext_name . ', ext_mode=' . $ext_mode . ', dry_run=' . intval($dry_run));
+ } // END - if
+ }
+
// Set dry-run
enableExtensionDryRun($dry_run);
// Init array
initIncludePool('extension');
- // Init EXT_UPDATE_DEPENDS
- initExtensionUpdateDependencies();
+ // Init EXT_UPDATE_DEPENDS if not yet done
+ if (!isExtensionUpdateDependenciesInitialized()) {
+ // Init here...
+ initExtensionUpdateDependencies();
+ } // END - if
// Init current extension name list
initExtensionSqls();
// Is the extension already loaded?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "Loading extension {$ext_name}, mode=".getExtensionMode().", ver=".getCurrentExtensionVersion()."");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Loading extension ' . $ext_name . ', mode=' . getExtensionMode() . ', ver=' . getCurrentExtensionVersion());
if ((isset($GLOBALS['ext_loaded']['ext'][$ext_name])) && (getExtensionMode() == 'init')) {
// Debug message
logDebugMessage(__FUNCTION__, __LINE__, sprintf("Extension %s already loaded.", $ext_name));
// Download functions file
loadIncludeOnce($funcsInclude);
} // END - if
- } elseif ((!isset($GLOBALS['cache_array']['extension']['ext_func'][$ext_name])) && (isDebugModeEnabled()) && (getOutputMode() == 0) && ($ext_name != 'sql_patches') && (substr($ext_name, 0, 10) != 'admintheme') && (getExtensionMode() == 'test')) {
+ } elseif ((!isset($GLOBALS['cache_array']['extension']['ext_func'][$ext_name])) && (isDebugModeEnabled()) && (getOutputMode() == '0') && ($ext_name != 'sql_patches') && (substr($ext_name, 0, 10) != 'admintheme') && (getExtensionMode() == 'test')) {
// No functions file is not so good...
logDebugMessage(__FUNCTION__, __LINE__, sprintf("NOTICE: Extension %s has no own functions file or we cannot read from it. mode=%s",
$ext_name,
setExtensionAlwaysActive('N');
// Extension update notes
- setExtensionUpdateNotes('');
+ // @TODO Do we still need this? setExtensionUpdateNotes('');
// Include the extension file
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "Extension loaded.");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Extension loaded.');
loadExtensionInclude();
// Is this extension deprecated?
// Registeres an extension and possible update depencies
function registerExtension ($ext_name, $task_id, $dry_run = false, $logout = true) {
// Set current extension name
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',task_id=' . $task_id . ',dry_run=' . intval($dry_run) . ',logout=' . intval($logout) . ' - ENTERED!');
setCurrentExtensionName($ext_name);
// Enable dry-run
// By default all extensions are in productive phase
enableExtensionProductive();
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName()." - ENTERED!");
// This shall never do a non-admin user or if the extension is active (already installed)
if ((!isAdmin()) || (isExtensionInstalled($ext_name))) {
+ // Abort here with 'false'
return false;
} // END - if
- // When this extension is already in install/update phase, all is fine
- if (isExtensionRegisterRunning($ext_name)) {
- // Then abort here which is fine
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName()." - ALREADY!");
+ // When this extension is already in registration/update phase, all is fine
+ if ((isExtensionRegistrationRunning($ext_name)) || (isExtensionUpdateRunning($ext_name))) {
+ // Then abort here with 'true' becaus it is fine
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ' - ALREADY!');
return true;
} // END - if
// This registration is running
addExtensionRunningRegistration($ext_name);
- // Init EXT_UPDATE_DEPENDS
- initExtensionUpdateDependencies();
+ // Init EXT_UPDATE_DEPENDS if not yet done
+ if (!isExtensionUpdateDependenciesInitialized()) {
+ // Init here...
+ initExtensionUpdateDependencies();
+ } // END - if
// Is the task id zero? Then we need to auto-fix it here
- if ($task_id == 0) {
+ if ($task_id == '0') {
// Try to find the task
$task_id = determineExtensionTaskId(getCurrentExtensionName());
// Still zero and not in dry-run?
- if (($task_id == 0) && (!getExtensionDryRun())) {
+ if (($task_id == '0') && (!getExtensionDryRun())) {
// Then request a bug report
- debug_report_bug(sprintf("%s: task_id is still zero after determineExtensionTaskId(%s)",
+ debug_report_bug(__FUNCTION__, __LINE__, sprintf("%s: task_id is still zero after determineExtensionTaskId(%s)",
__FUNCTION__,
getCurrentExtensionName()
));
setExtensionReportsFailure(false);
// Does this extension exists?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName()."");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName());
if (loadExtension(getCurrentExtensionName(), 'register', '', getExtensionDryRun())) {
// Set current extension name again
setCurrentExtensionName($ext_name);
// And run possible updates
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "".getCurrentExtensionName());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName());
$history = getExtensionVersionHistory();
foreach ($history as $ver) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "ext_name=".getCurrentExtensionName().", ext_ver={$ver}");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ', ext_ver=' . $ver);
// Load extension in update mode
loadExtension(getCurrentExtensionName(), 'update', $ver, getExtensionDryRun());
// Increment here to avoid endless loop
incrementExtensionUpdateIterator();
- // Check for required file
- if (loadExtension($ext_update, 'register', '', getExtensionDryRun())) {
+ // Check if extension is not installed and not already in registration procedure and if loading it wents finally fine...
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',isExtensionRegistrationRunning(' . $ext_update . ')=' . intval(isExtensionRegistrationRunning($ext_update)));
+ if ((!isExtensionInstalled($ext_update)) && (!isExtensionRegistrationRunning($ext_update)) && (loadExtension($ext_update, 'test', '', getExtensionDryRun()))) {
// Set current extension name again
setCurrentExtensionName($ext_name);
// Entry found?
if ($task > 0) {
// Try to register the extension
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName().":ext_update=".$ext_update.",taskId=".$task."");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ':ext_update=' . $ext_update . ',taskId=' . $task);
$test = registerExtension($ext_update, $task, getExtensionDryRun(), false);
// Reset extension name
setCurrentExtensionName($ext_name);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName()); print getCurrentExtensionName().':<pre>'.print_r($test);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName());
+ //* DEBUG: */ debugOutput(getCurrentExtensionName().':<pre>' . print_r($test, true) . '</pre>');
} // END - if
} elseif ($ext_ver != getCurrentExtensionVersion()) {
// Ok, update this extension now
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName().",ext_update=".$ext_update.",ext_ver=".$ext_ver."/".getCurrentExtensionVersion()."");
- $GLOBALS['ext_backup'][$ext_update][$ext_ver] = getCurrentExtensionName();
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ',currVer=' . getCurrentExtensionVersion());
+ $GLOBALS['ext_backup_name'][$ext_update][$ext_ver] = getCurrentExtensionName();
+ $GLOBALS['ext_backup_ver'][$ext_update][$ext_ver] = getCurrentExtensionVersion();
updateExtension($ext_update, $ext_ver, getExtensionDryRun());
- setCurrentExtensionName($GLOBALS['ext_backup'][$ext_update][$ext_ver]);
- unset($GLOBALS['ext_backup'][$ext_update][$ext_ver]);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName()."");
+ setCurrentExtensionName($GLOBALS['ext_backup_name'][$ext_update][$ext_ver]);
+ setCurrentExtensionVersion($GLOBALS['ext_backup_ver'][$ext_update][$ext_ver]);
+ unset($GLOBALS['ext_backup_name'][$ext_update][$ext_ver]);
+ unset($GLOBALS['ext_backup_ver'][$ext_update][$ext_ver]);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ',currVer=' . getCurrentExtensionVersion());
// All okay!
$test = true;
setExtensionMode('register');
// Remains true if extension registration reports no failures
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName()); print getCurrentExtensionName().':<pre>'.print_r($test, true).'</pre>';
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName());
+ //* DEBUG: */ debugOutput(getCurrentExtensionName().':<pre>' . print_r($test, true) . '</pre>');
$test = (($test === true) && (getExtensionReportsFailure() === false));
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName()); print getCurrentExtensionName().':<pre>'.print_r($test, true).'</pre>';
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName());
+ //* DEBUG: */ debugOutput(getCurrentExtensionName().':<pre>' . print_r($test, true) . '</pre>');
// Does everthing before wents ok?
if ($test === true) {
// "Dry-run-mode" activated?
if ((getExtensionDryRun() === false) && (!isExtensionOnRemovalList())) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "ext_name=".getCurrentExtensionName());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName());
// Init SQLs and transfer ext->generic
initSqls();
setSqlsArray(getExtensionSqls());
runFilterChain('pre_extension_installed', array('dry_run' => getExtensionDryRun()));
// Register extension
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "insert=".getCurrentExtensionName().'/'.getCurrentExtensionVersion()." - INSERT!");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'insert=' . getCurrentExtensionName() . '/' . getCurrentExtensionVersion() . ' - INSERT!');
if (isExtensionInstalledAndNewer('sql_patches', '0.0.6')) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ',always_active=' . getExtensionAlwaysActive() . ', ext_ver=' . getCurrentExtensionVersion() . 'ext_css=' . getExtensionHasCss());
// New way, with CSS
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(), getCurrentExtensionVersion(), getExtensionHasCss()), __FUNCTION__, __LINE__);
+ array(
+ getCurrentExtensionName(),
+ getExtensionAlwaysActive(),
+ getCurrentExtensionVersion(),
+ getExtensionHasCss()
+ ), __FUNCTION__, __LINE__);
} else {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ',always_active=' . getExtensionAlwaysActive() . ', ext_ver=' . getCurrentExtensionVersion());
// Old way, no CSS
SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_extensions` (`ext_name`, `ext_active`, `ext_version`) VALUES ('%s','%s','%s')",
- array(getCurrentExtensionName(), getExtensionAlwaysActive(), getCurrentExtensionVersion()), __FUNCTION__, __LINE__);
+ array(
+ getCurrentExtensionName(),
+ getExtensionAlwaysActive(),
+ getCurrentExtensionVersion()
+ ), __FUNCTION__, __LINE__);
}
// Remove cache file(s) if extension is active
'task_id' => $task_id
));
- // Remove all SQL commands
- unsetSqls();
+ // Re-init queries and notes
+ initExtensionSqls(true);
+ initExtensionNotes();
// Mark it as installed
$GLOBALS['ext_is_installed'][getCurrentExtensionName()] = true;
// In normal mode return a true on success
$ret = true;
} elseif (getExtensionDryRun() === true) {
- // In "dry-run" mode return array with all SQL commands
- $ret = getExtensionSqls();
+ // In "dry-run" mode do always return a true
+ $ret = true;
- // Remove all SQL commands
- unsetSqls();
+ // Re-init queries and notes
+ initExtensionNotes();
} else {
// Extension has been removed for updates, so all is fine!
$ret = true;
}
} else {
// No, an error occurs while registering extension :-(
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "".getCurrentExtensionName());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName());
$ret = false;
}
} elseif (($task_id > 0) && (getCurrentExtensionName() != '')) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName()."");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName());
// Remove task from system when id and extension's name is valid
SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_task_system` WHERE `id`=%s AND `status`='NEW' LIMIT 1",
array(bigintval($task_id)), __FUNCTION__, __LINE__);
}
// Is this the sql_patches?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ':'.getCurrentExtensionName()."/".getExtensionMode()."");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . '/' . getExtensionMode());
if ((getCurrentExtensionName() == 'sql_patches') && ((getExtensionMode() == 'register') || (getExtensionMode() == 'remove')) && (!getExtensionDryRun()) && ($test)) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ": LOAD!");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . ': LOAD!');
if ($logout === true) {
// Then redirect to logout
redirectToUrl('modules.php?module=admin&logout=1&' . getExtensionMode() . '=sql_patches');
} // END - if
// Return status code
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName()." - LEFT!");
- //* DEBUG: */ print getCurrentExtensionName().':<pre>'.print_r($ret, true).'</pre>';
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ' - EXIT!');
+ //* DEBUG: */ debugOutput(getCurrentExtensionName().':<pre>'.print_r($ret, true).'</pre>');
return $ret;
}
setCurrentExtensionName($ext_name);
// Init EXT_UPDATE_DEPENDS
- initExtensionUpdateDependencies();
+ if (!isExtensionUpdateDependenciesInitialized()) {
+ // Init here...
+ initExtensionUpdateDependencies();
+ } // END - if
// Init array
initExtensionSqls();
// Extensions are all inactive/not installed during installation
} else {
// Look in database
- $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `ext_name`='%s' LIMIT 1",
- array($ext_name), __FILE__, __LINE__);
+ $ext_id = getExtensionId($ext_name);
// Do we have a record?
- $isInstalled = (SQL_NUMROWS($result) == 1);
+ $isInstalled = ($ext_id > 0);
// Is it installed, then cache the entry
if ($isInstalled === true) {
getExtensionId($ext_name, true);
} // END - if
- // Free result
- SQL_FREERESULT($result);
-
// Remember the status
$GLOBALS['ext_is_installed'][$ext_name] = $isInstalled;
}
if ((isInstallationPhase()) || (empty($ext_name))) return false;
// Not active is the default
- $active = 'N';
+ $data['ext_active'] = 'N';
// Check cache
if (isset($GLOBALS['cache_array']['extension']['ext_active'][$ext_name])) {
// Load from cache
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "CACHE! ext_name={$ext_name}");
- $active = $GLOBALS['cache_array']['extension']['ext_active'][$ext_name];
+ $data['ext_active'] = $GLOBALS['cache_array']['extension']['ext_active'][$ext_name];
// Count cache hits
incrementStatsEntry('cache_hits');
} elseif (isset($GLOBALS['ext_loaded'][$ext_name])) {
// @TODO Extension is loaded, what next?
- app_die(__FUNCTION__, __LINE__, "LOADED:$ext_name");
+ debug_report_bug(__FUNCTION__, __LINE__, 'LOADED:' . $ext_name);
} elseif (($ext_name == 'cache') || (!isExtensionInstalled('cache'))) {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "DB! ext_name={$ext_name}");
// Load from database
// Entry found?
if (SQL_NUMROWS($result) == 1) {
// Load entry
- list($active) = SQL_FETCHROW($result);
+ $data = SQL_FETCHARRAY($result);
} // END - if
// Free result
SQL_FREERESULT($result);
// Write cache array
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "ext_name=".$ext_name."[DB]: {$active}");
- $GLOBALS['cache_array']['extension']['ext_active'][$ext_name] = $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 message
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "ext_name={$ext_name},active={$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 ($active == 'Y');
+ return ($data['ext_active'] == 'Y');
}
// Get version from extensions
-function getExtensionVersion ($ext_name) {
+function getExtensionVersion ($ext_name, $force = false) {
// By default no extension is found
- $ext_ver = 'invalid';
+ $data['ext_version'] = 'false';
// Empty extension name should be fixed!
if (empty($ext_name)) {
// Please report this bug!
- debug_report_bug(__FUNCTION__ . ': ext_name is empty which is not allowed here.');
+ debug_report_bug(__FUNCTION__, __LINE__, 'ext_name is empty which is not allowed here.');
} // END - if
// 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])) {
// Load data from cache
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ": CACHE!");
- $ext_ver = $GLOBALS['cache_array']['extension']['ext_version'][$ext_name];
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $ext_name . ': CACHE!');
+ $data['ext_version'] = $GLOBALS['cache_array']['extension']['ext_version'][$ext_name];
// Count cache hits
incrementStatsEntry('cache_hits');
// Load from database
$result = SQL_QUERY_ESC("SELECT `ext_version` FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `ext_name`='%s' LIMIT 1",
array($ext_name), __FUNCTION__, __LINE__);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ": DB - ".SQL_NUMROWS($result)."");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $ext_name . ': DB - '.SQL_NUMROWS($result).'');
// Is the extension there?
if (SQL_NUMROWS($result) == 1) {
// Load entry
- list($ext_ver) = SQL_FETCHROW($result);
+ $data = SQL_FETCHARRAY($result);
} elseif (isDebugModeEnabled()) {
- // Not found!
- logDebugMessage(__FUNCTION__, __LINE__, sprintf(": Cannot find extension %s in database!", $ext_name));
+ // Not found, please report all
+ debug_report_bug(__FUNCTION__, __LINE__, sprintf(": Cannot find extension %s in database!", $ext_name));
}
// Free result
SQL_FREERESULT($result);
// Set cache
- $GLOBALS['cache_array']['extension']['ext_version'][$ext_name] = $ext_ver;
+ $GLOBALS['cache_array']['extension']['ext_version'][$ext_name] = $data['ext_version'];
}
// Extension version should not be invalid
- if ($ext_ver == 'invalid') {
+ if (($data['ext_version'] == 'false') && ($force === false)) {
// Please report this trouble
- debug_report_bug(sprintf("Extension <strong>%s</strong> has empty version!", $ext_name));
+ debug_report_bug(__FUNCTION__, __LINE__, sprintf("Extension <span class=\"data\">%s</span> has empty version!", $ext_name));
} // END - if
// Return result
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ": ret={$ext_ver}");
- return $ext_ver;
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ": ret={$data['ext_version']}");
+ return $data['ext_version'];
}
// Updates a given extension with current extension version to latest version
initExtensionSqls();
// Check if version is updated
- //* DEBUG: */ print getCurrentExtensionName().'/'.$ext_name.':'.getThisExtensionVersion().'/'.$ext_ver.'/'.intval(is_array($history)).'<br />';
+ //* DEBUG: */ debugOutput(getCurrentExtensionName().'/'.$ext_name.':'.getThisExtensionVersion().'/'.$ext_ver.'/'.intval(is_array($history)));
if (((getThisExtensionVersion() != $ext_ver) || (getExtensionDryRun())) && (is_array($history))) {
// Search for starting point
$start = array_search($ext_ver, $history);
} // END - if
} // END - foreach
+ // Set extension version here
+ setCurrentExtensionVersion($ext_ver);
+
// Set name back
setCurrentExtensionName($ext_name);
} // END - if
$OUT = '';
// Do we have queries?
- if ((getExtensionVersion('sql_patches') >= '0.0.7') && (getConfig('verbose_sql') == 'Y')) {
+ if ((isExtensionInstalledAndNewer('sql_patches', '0.0.7')) && (getConfig('verbose_sql') == 'Y')) {
// Init switch color
$SW = 2;
// Load main template
$OUT = loadTemplate('admin_ext_sql_table', true, $content);
- } elseif ((getExtensionVersion('sql_patches') >= '0.0.7') && (getConfig('verbose_sql') == 'Y')) {
+ } elseif ((isExtensionInstalledAndNewer('sql_patches', '0.0.7')) && (getConfig('verbose_sql') == 'Y')) {
// No addional SQL commands to run
- $OUT = loadTemplate('admin_settings_saved', true, getMessage('ADMIN_NO_ADDITIONAL_SQLS'));
+ $OUT = loadTemplate('admin_settings_saved', true, '{--ADMIN_NO_ADDITIONAL_SQLS--}');
} // END - if
// Return output
// Get extension name from id
function getExtensionName ($ext_id) {
// Init extension name
- $ret = '';
+ $data['ext_name'] = '';
// Is cache there?
if (isset($GLOBALS['cache_array']['extension']['ext_name'][$ext_id])) {
// Load from cache
- $ret = $GLOBALS['cache_array']['extension']['ext_name'][$ext_id];
+ $data['ext_name'] = $GLOBALS['cache_array']['extension']['ext_name'][$ext_id];
// Count cache hits
incrementStatsEntry('cache_hits');
// Is the entry there?
if (SQL_NUMROWS($result) == 1) {
// Get the extension's name from database
- list($ret) = SQL_FETCHROW($result);
+ $data = SQL_FETCHARRAY($result);
} // END - if
// Free result
}
// Did we find some extension?
- if (empty($ret)) {
+ if (empty($data['ext_name'])) {
// We should fix these all!
- debug_report_bug(__FUNCTION__ . ': ext_name is empty. ext_id=' . $ext_id);
+ debug_report_bug(__FUNCTION__, __LINE__, 'ext_name is empty. ext_id=' . $ext_id);
} // END - if
// Return the extension name
- return $ret;
+ return $data['ext_name'];
}
// Get extension id from name
-function getExtensionId ($ext_name, $forceDb = false) {
+function getExtensionId ($ext_name) {
// Init id number
- $ret = 0;
+ $data['ext_id'] = '0';
+ // Do we have cache?
if (isset($GLOBALS['cache_array']['extension']['ext_id'][$ext_name])) {
// Load from cache
- $ret = $GLOBALS['cache_array']['extension']['ext_id'][$ext_name];
+ $data['ext_id'] = $GLOBALS['cache_array']['extension']['ext_id'][$ext_name];
// Count cache hits
incrementStatsEntry('cache_hits');
- } elseif (($forceDb === true) || (!isExtensionActive('cache'))) {
+ } else {
// Load from database
- $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `ext_name`='%s' LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT `id` AS ext_id FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `ext_name`='%s' LIMIT 1",
array($ext_name), __FUNCTION__, __LINE__);
// Is the entry there?
if (SQL_NUMROWS($result) == 1) {
// Get the extension's id from database
- list($ret) = SQL_FETCHROW($result);
+ $data = SQL_FETCHARRAY($result);
} // END - if
// Free result
SQL_FREERESULT($result);
// Cache it
- $GLOBALS['cache_array']['extension']['ext_id'][$ext_name] = $ret;
+ $GLOBALS['cache_array']['extension']['ext_id'][$ext_name] = $data['ext_id'];
}
- if ($ret == 0) {
- // We should fix these all!
- debug_report_bug(__FUNCTION__ . ': Invalid extension name found. ext_name=' . $ext_name);
- } // END - if
-
// Return value
- return $ret;
+ return $data['ext_id'];
}
// Determines wether the given extension name is valid
// Notify the admin
sendAdminNotification(
- getMessage('ADMIN_SUBJECT_EXTENSION_DEACTIVATED'),
+ getMessage('ADMIN_SUBJECT_EXTENSION_DEACTIVATED'),
'admin_ext_deactivated',
array('ext_name' => $ext_name)
);
// Creates a new task for updated extension
function createExtensionUpdateTask ($adminId, $ext_name, $ext_ver, $notes) {
// Create subject line
- $subject = '[UPDATE-' . $ext_name . '-' . $ext_ver . ':] {--ADMIN_UPDATE_EXT_SUBJ--}';
+ $subject = '[UPDATE-' . $ext_name . '-' . $ext_ver . ':] {--ADMIN_UPDATE_EXTENSION_SUBJ--}';
// Is the extension there?
if (isExtensionInstalled($ext_name)) {
// Check if task is not there
- if (determineTaskIdBySubject($subject) == 0) {
+ if (determineTaskIdBySubject($subject) == '0') {
// Create extension update-task
createNewTask($subject, $notes, 'EXTENSION_UPDATE', 0, $adminId);
} // END - if
} else {
// Extension not there! :-(
- debug_report_bug(sprintf("Extension <strong>%s</strong> not found but should be updated?", $ext_name));
+ debug_report_bug(__FUNCTION__, __LINE__, sprintf("Extension <span class=\"data\">%s</span> not found but should be updated?", $ext_name));
}
}
// Creates a new task for newly installed extension
function createNewExtensionTask ($adminId, $subject, $ext) {
// Not installed and do we have created a task for the admin?
- if ((determineTaskIdBySubject($subject) == 0) && (!isExtensionInstalled($ext))) {
+ if ((determineTaskIdBySubject($subject) == '0') && (!isExtensionInstalled($ext))) {
// Set default message if ext-foo is missing
- $message = sprintf(getMessage('ADMIN_EXT_TEXT_FILE_MISSING'), $ext);
+ $message = getMaskedMessage('ADMIN_EXTENSION_TEXT_FILE_MISSING', $ext);
// Template file
$tpl = sprintf("%stemplates/%s/html/ext/ext_%s.tpl",
$subject = sprintf("[%s:] %s", $ext, getMessage('TASK_SUBJ_EXTENSION_DEACTIVATED'));
// Not installed and do we have created a task for the admin?
- if ((determineTaskIdBySubject($subject) == 0) && (getExtensionVersion($ext) != '')) {
+ if ((determineTaskIdBySubject($subject) == '0') && (isExtensionInstalled($ext))) {
// Task not created so add it
- createNewTask($subject, SQL_ESCAPE(loadTemplate('task_ext_deactivated', true, $ext)), 'EXTENSION_DEACTIVATION');
+ createNewTask($subject, SQL_ESCAPE(loadTemplate('task_EXTENSION_deactivated', true, $ext)), 'EXTENSION_DEACTIVATION');
} // END - if
}
// All is false by default
$ret = false;
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "mod={$mod},cache=".getExtensionVersion('cache'));
+ // Extension installed and newer than or has version 0.1.2?
if (isExtensionInstalledAndNewer('cache', '0.1.2')) {
// Cache version is okay, so let's check the cache!
if (isset($GLOBALS['cache_array']['modules']['has_menu'][$mod])) {
// Check cache and count hit
$ret = ($GLOBALS['cache_array']['extension']['ext_menu'][$mod] == 'Y');
incrementStatsEntry('cache_hits');
- } elseif ($mod == 'admin') {
- // Admin module has always a menu!
- $ret = true;
+ } else {
+ // Admin/guest/member/sponsor modules have always a menu!
+ $ret = in_array($mod, array('admin', 'index', 'login', 'sponsor'));
}
- } elseif ((isExtensionInstalled('sql_patches')) && (getExtensionVersion('sql_patches') >= '0.3.6') && ((!isExtensionActive('cache')) || ($forceDb === true))) {
+ } elseif ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && ((!isExtensionActive('cache')) || ($forceDb === true))) {
// Check database for entry
$result = SQL_QUERY_ESC("SELECT `has_menu` FROM `{?_MYSQL_PREFIX?}_mod_reg` WHERE `module`='%s' LIMIT 1",
array($mod), __FUNCTION__, __LINE__);
// Entry found?
if (SQL_NUMROWS($result) == 1) {
// Load "has_menu" column
- list($has_menu) = SQL_FETCHROW($result);
+ $data = SQL_FETCHARRAY($result);
// Fake cache... ;-)
- $GLOBALS['cache_array']['extension']['ext_menu'][$mod] = $has_menu;
+ $GLOBALS['cache_array']['extension']['ext_menu'][$mod] = $data['has_menu'];
// Does it have a menu?
- $ret = ($has_menu == 'Y');
+ $ret = ($data['has_menu'] == 'Y');
} // END - if
// Free memory
SQL_FREERESULT($result);
} elseif (!isExtensionInstalled('sql_patches')) {
- // No sql_patches installed, so maybe in admin area or no admin registered?
- $ret = (((isAdmin()) || (!isAdminRegistered())) && ($mod == 'admin')); // Then there is a menu!
+ // No sql_patches installed, so maybe in admin/guest/member/sponsor area or no admin registered?
+ $ret = in_array($mod, array('admin', 'index', 'login', 'sponsor')); // Then there is a menu!
+ } else {
+ // Unsupported state!
+ logDebugMessage(__FUNCTION__, __LINE__, 'This should never be reached.');
}
// Return status
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName().intval($ret));
return $ret;
}
// Determines the task id for given extension
function determineExtensionTaskId ($ext_name) {
// Default is not found
- $task_id = 0;
+ $data['task_id'] = '0';
// Search for extension task's id
- $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_task_system` WHERE `task_type`='EXTENSION' AND `subject`='[%s:]' LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT `id` AS task_id FROM `{?_MYSQL_PREFIX?}_task_system` WHERE `task_type`='EXTENSION' AND `subject`='[%s:]' LIMIT 1",
array($ext_name), __FUNCTION__, __LINE__);
// Entry found?
if (SQL_NUMROWS($result) == 1) {
// Task found so load task's id and register extension...
- list($task_id) = SQL_FETCHROW($result);
+ $data = SQL_FETCHARRAY($result);
} // END - if
// Free result
SQL_FREERESULT($result);
// Return it
- return $task_id;
+ return $data['task_id'];
}
// Determines the task id for given subject
function determineTaskIdBySubject ($subject) {
// Default is not found
- $task_id = 0;
+ $data['task_id'] = '0';
// Search for task id
- $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_task_system` WHERE `subject` LIKE '%s%%' LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT `id` AS task_id FROM `{?_MYSQL_PREFIX?}_task_system` WHERE `subject` LIKE '%s%%' LIMIT 1",
array($subject), __FUNCTION__, __LINE__);
// Entry found?
if (SQL_NUMROWS($result) == 1) {
// Task found so load task's id and register extension...
- list($task_id) = SQL_FETCHROW($result);
+ $data = SQL_FETCHARRAY($result);
} // END - if
// Free result
SQL_FREERESULT($result);
// Return it
- return $task_id;
+ return $data['task_id'];
}
// Add updates notes for given version
// Is do we have verbose output enabled?
if ((!isExtensionActive('sql_patches')) || (getConfig('verbose_sql') == 'Y')) {
// Update notes found?
- if (getExtensionUpdateNotes($ver) != '') {
+ if (isExtensionUpdateNoteSet($ver)) {
// Update notes found
$content = array(
'ver' => $ver,
}
// Load template
- $out = loadTemplate('admin_ext_notes', true, $content);
+ $out = loadTemplate('admin_EXTENSION_notes', true, $content);
} // END - if
// Add the notes
return $GLOBALS['ext_always_active'][getCurrentExtensionName()];
}
+// Checks wether the current extension is always active
+function isExtensionAlwaysActive () {
+ return (getExtensionAlwaysActive() == 'Y');
+}
+
// Setter for EXT_VERSION flag
function setThisExtensionVersion ($version) {
$GLOBALS['ext_version'][getCurrentExtensionName()] = (string) $version;
// Setter for EXT_UPDATE_DEPENDS flag
function addExtensionUpdateDependency ($updateDepends) {
+ //* DEBUG */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . '/' . $updateDepends . ' - ENTERED!');
// Is the update depency empty? (NEED TO BE FIXED!)
if (empty($updateDepends)) {
// Please report this bug!
- debug_report_bug("updateDepends is left empty!");
+ debug_report_bug(__FUNCTION__, __LINE__, 'updateDepends is empty: currentExtension=' . getCurrentExtensionName());
} // END - if
// Is it not yet added?
- if (!in_array($updateDepends, $GLOBALS['ext_running_updates'])) {
- //* DEBUG */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName().'/'.$updateDepends);
- // Add it to the list of extension update depencies map
- $GLOBALS['ext_update_depends'][getCurrentExtensionName()][] = (string) $updateDepends;
-
- // Remember it in the list of running updates
- $GLOBALS['ext_running_updates'][] = $updateDepends;
+ /* DEBUG:
+ 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());
} // END - if
+ */
+
+ // Add it to the list of extension update depencies map
+ $GLOBALS['ext_update_depends'][getCurrentExtensionName()][] = (string) $updateDepends;
+
+ // Remember it in the list of running updates
+ $GLOBALS['ext_running_updates'][getCurrentExtensionName()][] = $updateDepends;
+ //* DEBUG */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . '/' . $updateDepends . ' - EXIT!');
+}
+
+// Getter for running updates
+function getExtensionUpdatesRunning () {
+ return $GLOBALS['ext_running_updates'][getCurrentExtensionName()];
}
// Checks wether the given extension registration is in progress
-function isExtensionRegisterRunning ($ext_name) {
- return ((isset($GLOBALS['ext_register_running'])) && (in_array($ext_name, $GLOBALS['ext_register_running'])));
+function isExtensionRegistrationRunning ($ext_name) {
+ // Simply check it
+ $isRunning = ((isset($GLOBALS['ext_register_running'])) && (in_array($ext_name, $GLOBALS['ext_register_running'])));
+
+ // Return it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ', isRunning=' . intval($isRunning));
+ return $isRunning;
}
// Init EXT_UPDATE_DEPENDS flag
function initExtensionUpdateDependencies () {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ' - ENTERED!');
// Init update depency map automatically if not found
- if (!isExtensionUpdateDependenciesInitialized()) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName()." - INIT!");
- $GLOBALS['ext_update_depends'][getCurrentExtensionName()] = array();
+ if (isExtensionUpdateDependenciesInitialized()) {
+ // We need these bug reports as well...
+ debug_report_bug(__FUNCTION__, __LINE__, '() is called twice: currName=' . getCurrentExtensionName());
} // END - if
+ $GLOBALS['ext_update_depends'][getCurrentExtensionName()] = array();
+
// Init running updates array
initExtensionRuningUpdates();
+
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ' - EXIT!');
}
// Adds an extension as "registration in progress"
function addExtensionRunningRegistration ($ext_name) {
// Is it running?
- if (!isExtensionRegisterRunning($ext_name)) {
- // Then add it!
- $GLOBALS['ext_register_running'][] = $ext_name;
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Registration in progress: ext_name=' . $ext_name . ' - ENTERED!');
+ if (isExtensionRegistrationRunning($ext_name)) {
+ // This is really bad and should not be quietly ignored
+ debug_report_bug(__FUNCTION__, __LINE__, '() already called! ext_name=' . $ext_name);
} // END - if
+
+ // Then add it!
+ $GLOBALS['ext_register_running'][] = $ext_name;
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Registration in progress: ext_name=' . $ext_name . ' - EXIT!');
}
// Checks wether EXT_UPDATE_DEPENDS is initialized
function isExtensionUpdateDependenciesInitialized () {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName());
return (isset($GLOBALS['ext_update_depends'][getCurrentExtensionName()]));
}
+// Checks wether an update is already running for given extension
+function isExtensionUpdateRunning ($ext_name) {
+ // Current and given extensions means whole array
+ if ($ext_name == getCurrentExtensionName()) {
+ // Default is not found
+ $isRunning = false;
+
+ // Walk through whole array
+ foreach ($GLOBALS['ext_running_updates'] as $ext1=>$depends) {
+ // Is it found?
+ if (($ext1 == $ext_name) || ($isRunning === true)) {
+ // Found!
+ logDebugMessage(__FUNCTION__, __LINE__, 'ext1=' . $ext1 . ',ext_name=' . $ext_name . ',isRunning=' . intval($isRunning));
+ $isRunning = true;
+ break;
+ } // END - if
+ } // END - foreach
+
+ // Return result
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ', isRunning=' . intval($isRunning));
+ return $isRunning;
+ } // END - if
+
+ // Simply check it
+ $isRunning = ((isExtensionUpdateDependenciesInitialized()) && (in_array($ext_name, getExtensionRunningUpdates())));
+
+ // Return it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ', isRunning=' . intval($isRunning));
+ return $isRunning;
+}
+
// Initializes the list of running updates
function initExtensionRuningUpdates () {
// Auto-init ext_running_updates
// Init iterator for update depencies
function initExtensionUpdateIterator () {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "currName=".getCurrentExtensionName());
- $GLOBALS['ext_depend_iterator'][getCurrentExtensionName()] = 0;
+ $GLOBALS['ext_depend_iterator'][getCurrentExtensionName()] = '0';
}
// Getter for depency iterator
// Setter for EXT_UPDATE_NOTES
function setExtensionUpdateNotes ($updateNotes, $ver='') {
- //* DEBUG: */ print __FUNCTION__.':'.getCurrentExtensionName().'/'.getCurrentExtensionVersion().'/'.$ver.'='.$updateNotes.'<br />';
+ // . '/' . getCurrentExtensionVersion()
+ //* DEBUG: */ debug_report_bug(__FUNCTION__.':' . getCurrentExtensionName() . '/' . getExtensionMode() . '/' . $ver . '=' . $updateNotes);
if (empty($ver)) {
$GLOBALS['ext_update_notes'][getCurrentExtensionName()][getCurrentExtensionVersion()] = (string) $updateNotes;
} else {
return $GLOBALS['ext_update_notes'][getCurrentExtensionName()][$ver];
}
+// Checks if ext_update_notes is set
+function isExtensionUpdateNoteSet ($ver) {
+ return isset($GLOBALS['ext_update_notes'][getCurrentExtensionName()][$ver]);
+}
+
// Init extension notice
function initExtensionNotes () {
$GLOBALS['ext_notes'][getCurrentExtensionName()] = '';
// Setter for current extension name
function setCurrentExtensionName ($ext_name) {
- $GLOBALS['curr_ext_name'] = (string) trim($ext_name);
+ $GLOBALS['curr_EXTENSION_name'] = (string) trim($ext_name);
}
// Getter for current extension name
function getCurrentExtensionName () {
- if (isset($GLOBALS['curr_ext_name'])) {
- return $GLOBALS['curr_ext_name'];
+ if (isset($GLOBALS['curr_EXTENSION_name'])) {
+ return $GLOBALS['curr_EXTENSION_name'];
} // END - if
// Not set!
- debug_report_bug(__FUNCTION__.": curr_ext_name not initialized. Please execute initExtensionSqls() before calling this function.");
+ debug_report_bug(__FUNCTION__.": curr_EXTENSION_name not initialized. Please execute initExtensionSqls() before calling this function.");
}
// Init SQLs array for current extension
-function initExtensionSqls () {
- // Auto-init the array now...
- if (!isset($GLOBALS['ext_sqls'][getCurrentExtensionName()])) {
+function initExtensionSqls ($force = false) {
+ // Auto-init the array or if forced
+ if ((!isset($GLOBALS['ext_sqls'][getCurrentExtensionName()])) || ($force === true)) {
+ // Set the array
$GLOBALS['ext_sqls'][getCurrentExtensionName()] = array();
+
+ // Initialize the generic array
+ initSqls();
} // END - if
}
// Output debug backtrace if not found (SHOULD NOT HAPPEN!)
if (!isset($GLOBALS['ext_sqls'][getCurrentExtensionName()])) {
// Not found, should not happen
- debug_report_bug(sprintf("ext_sqls is empty, current extension: %s",
+ debug_report_bug(__FUNCTION__, __LINE__, sprintf("ext_sqls is empty, current extension: %s",
getCurrentExtensionName()
));
} // END - if
foreach ($GLOBALS['cache_array']['extension']['ext_name'] as $key => $ext_name) {
// Load it
//* DEBUG */ print __FUNCTION__.': '.$ext_name.' - START<br />';
- loadExtension($ext_name, 'init');
+ loadExtension($ext_name, 'init', getExtensionVersion($ext_name));
//* DEBUG */ print __FUNCTION__.': '.$ext_name.' - END<br />';
} // END - foreach
//* DEBUG */ print __FUNCTION__.': CACHE - END!<br />';
// Setter for dry-run
function enableExtensionDryRun ($dry_run = true) {
- //* DEBUG: */ print __FUNCTION__.': '.getCurrentExtensionName().'='.intval($dry_run).'<br />';
+ //* DEBUG: */ debugOutput(__FUNCTION__.': '.getCurrentExtensionName().'='.intval($dry_run));
$GLOBALS['ext_dry_run'] = (bool) $dry_run;
}
// Setter for current extension version
function setCurrentExtensionVersion ($ext_ver) {
- if (empty($ext_ver)) {
- // 0.0 is okay here
- $GLOBALS['ext_current_version'] = '0.0';
- } else {
- // Add version
- $GLOBALS['ext_current_version'] = (string) $ext_ver;
- }
+ // ext_ver should never be empty in other modes than 'test'
+ if ((empty($ext_ver)) && (getExtensionMode() != 'test')) {
+ // Please report all these messages
+ debug_report_bug(__FUNCTION__, __LINE__, 'ext_ver is empty. Current extension name: ' . getCurrentExtensionName() . ', mode=' . getExtensionMode());
+ } // END - if
+
+ // Add version
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ', ext_ver[' . gettype($ext_ver) . ']=' . $ext_ver);
+ $GLOBALS['ext_current_version'][getCurrentExtensionName()] = (string) $ext_ver;
}
// Getter for current extension version
function getCurrentExtensionVersion () {
- return $GLOBALS['ext_current_version'];
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ', ext_ver=' . $GLOBALS['ext_current_version'][getCurrentExtensionName()]);
+ return $GLOBALS['ext_current_version'][getCurrentExtensionName()];
}
-// Remove the extension from global cache array
+// Remove the extension from cache array
function removeExtensionFromArray () {
// "Cache" this name
$ext_name = getCurrentExtensionName();
// Now loop through the whole cache
- foreach ($GLOBALS['cache_array']['extension'] as $cacheName=>$cacheArray) {
+ foreach ($GLOBALS['cache_array']['extension'] as $cacheName => $cacheArray) {
// Is it an element?
if (isset($cacheArray[$ext_name])) {
// Array element
// Is it readable?
if (!isExtensionIncludeReadable()) {
// Not readable
- debug_report_bug('Extension ' . getCurrentExtensionName() . ' should be loaded, but is not readable.');
+ debug_report_bug(__FUNCTION__, __LINE__, 'Extension ' . getCurrentExtensionName() . ' should be loaded, but is not readable.');
} // END - if
// Generate INC name
} // END - if
// Return result
- //* DEBUG: */ print __FUNCTION__.': '.$ext_name.'='.intval($GLOBALS['ext_inc_readable'][$ext_name]).'<br />';
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',realable='.intval($GLOBALS['ext_inc_readable'][$ext_name]));
return $GLOBALS['ext_inc_readable'][$ext_name];
}