* -------------------------------------------------------------------- *
* Kurzbeschreibung : Erweiterungen-Management *
* -------------------------------------------------------------------- *
- * $Revision:: $ *
- * $Date:: $ *
- * $Tag:: 0.2.1-FINAL $ *
- * $Author:: $ *
- * -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2016 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
setCurrentExtensionVersion('0.0.0');
// Is the extension installed?
- if ((isExtensionInstalled($ext_name)) && ($ext_mode != 'register')) {
+ if ((isExtensionInstalled($ext_name)) && ($ext_mode != 'setup')) {
// Get extension's version
setCurrentExtensionVersion(getExtensionVersion($ext_name));
} // END - if
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Loading extension ' . $ext_name . ', getExtensionMode()=' . getExtensionMode() . ', getCurrentExtensionVersion()=' . getCurrentExtensionVersion());
if ((isExtensionLoaded($ext_name)) && (getExtensionMode() == 'init')) {
// Debug message
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("Extension %s already loaded.", $ext_name));
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf('Extension %s already loaded.', $ext_name));
// Abort here
return FALSE;
// Is the extension file NOT there?
if (!isExtensionNameValid($ext_name)) {
// Debug message
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("Extension %s not found or not readable or the PHP script is deprecated.", $ext_name));
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf('Extension %s not found or not readable or the PHP script is deprecated.', $ext_name));
// Abort here
return FALSE;
} // END - if
// Load extension's own language file if not in test mode
- if ((getExtensionMode() != 'test') && (ifExtensionHasLanguageFile($ext_name))) {
+ if ((getExtensionMode() != 'test') && (isExtensionLanguageFileReadable($ext_name))) {
// Load it
loadLanguageFile($ext_name);
} // END - if
// Not yet loaded?
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);
+ $funcsInclude = sprintf('inc/libs/%s_functions.php', $ext_name);
// Mark it as loaded
markExtensionLibraryAsLoaded($ext_name);
} // END - if
} elseif ((!isset($GLOBALS['cache_array']['extension']['ext_func'][$ext_name])) && (isDebugModeEnabled()) && (isHtmlOutputMode()) && ($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",
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf('NOTICE: Extension %s has no own functions file or we cannot read from it. mode=%s',
$ext_name,
getExtensionMode()
));
// Include the extension file
loadCurrentExtensionInclude();
+ // Load extra mode files
+ loadCurrentExtensionModeInclude();
+
// Is this extension deprecated?
if ((isExtensionDeprecated()) && (!in_array(getExtensionMode(), array('test', 'update', 'deactivate'))) && (isExtensionActive($ext_name))) {
// Deactivate the extension
enableExtensionProductive();
// This shall never do a non-admin user or if the extension is active (already installed)
- if (((!isAdmin()) && (!isInstallationPhase())) || (isExtensionInstalled($ext_name))) {
+ if (((!isAdmin()) && (!isInstaller())) || (isExtensionInstalled($ext_name))) {
// Abort here with 'false'
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - ABORTED: isAdmin()=' . intval(isAdmin()) . ',isInstallationPhase()=' . intval(isInstallationPhase()) . ',isExtensionInstalled()=' . intval(isExtensionInstalled($ext_name)));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - ABORTED: isAdmin()=' . intval(isAdmin()) . ',isInstaller()=' . intval(isInstaller()) . ',isExtensionInstalled()=' . intval(isExtensionInstalled($ext_name)));
return FALSE;
} // END - if
// When this extension is already in registration/update phase, all is fine
if ((isExtensionRegistrationRunning($ext_name)) || ((isExtensionUpdateRunning($ext_name)) && ($ignoreUpdates === FALSE))) {
- // Then abort here with 'true' becaus it is fine
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - already in registration/update phase, all fine,taskId=' . $taskId . ',isDryRun=' . intval($isDryRun) . ',ignoreUpdates=' . intval($ignoreUpdates));
- //* BUG: */ reportBug(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',taskId=' . $taskId . ',isDryRun=' . intval($isDryRun) . ',ignoreUpdates=' . intval($ignoreUpdates) . ' - Please investigate!');
+ // Then abort here with 'true' because it is fine
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - already in registration/update phase, all fine,isDryRun=' . intval($isDryRun) . ',ignoreUpdates=' . intval($ignoreUpdates));
+ //* BUG: */ reportBug(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',isDryRun=' . intval($isDryRun) . ',ignoreUpdates=' . intval($ignoreUpdates) . ' - Please investigate!');
return TRUE;
} // END - if
} // END - if
// Is the task id zero? Then we need to auto-fix it here
- if (((is_null($taskId)) || ($taskId == '0')) && (!isInstallationPhase())) {
+ if ((!isValidId($taskId)) && (!isInstaller())) {
// Try to find the task
$taskId = determineExtensionTaskId(getCurrentExtensionName());
// Still zero and not in dry-run?
- if (((is_null($taskId)) || ($taskId == '0')) && (!isExtensionDryRun())) {
+ if ((!isValidId($taskId)) && (!isExtensionDryRun())) {
// Now try to create a new task
$taskId = createNewExtensionTask(getCurrentExtensionName());
// Is it still zero?
- if ((is_null($taskId)) || ($taskId == '0')) {
+ if (!isValidId($taskId)) {
// Then request a bug report
- reportBug(__FUNCTION__, __LINE__, sprintf("%s: task_id is still zero after determineExtensionTaskId/createNewExtensionTask(%s)",
+ reportBug(__FUNCTION__, __LINE__, sprintf('%s: task_id is still zero after determineExtensionTaskId/createNewExtensionTask(%s)',
__FUNCTION__,
getCurrentExtensionName()
));
$processResult = FALSE;
initIncludePool('extension');
- // By default we have no failures
- enableExtensionReportingFailure();
+ // By default there is no failure
+ enableExtensionReportingFailure(FALSE);
// Does this extension exists?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ' - CALLING loadExtension() ...');
- if (loadExtension(getCurrentExtensionName(), 'register', '0.0.0', isExtensionDryRun(), $previousExtension)) {
+ if (loadExtension(getCurrentExtensionName(), 'setup', '0.0.0', isExtensionDryRun(), $previousExtension)) {
// Set current extension name again
setCurrentExtensionName($ext_name);
} // END - if
// Extension version set? If empty the extension is not registered
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_ver[' . gettype($ext_ver) . ']=' . $ext_ver . ',isInstallationPhase()=' . intval(isInstallationPhase()) . ',currName=' . getCurrentExtensionName() . ',ext_update=' . $ext_update . ' - EMPTY?');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_ver[' . gettype($ext_ver) . ']=' . $ext_ver . ',isInstaller()=' . intval(isInstaller()) . ',currName=' . getCurrentExtensionName() . ',ext_update=' . $ext_update . ' - EMPTY?');
if (empty($ext_ver)) {
// Extension not registered so far so first load task's id...
$updateTaskId = determineExtensionTaskId($ext_update);
// Entry found?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'updateTaskId=' . $updateTaskId . ',isInstallationPhase()=' . intval(isInstallationPhase()) . ',currName=' . getCurrentExtensionName() . ',ext_update=' . $ext_update . ' - CHECKING!');
- if (($updateTaskId > 0) || (isInstallationPhase())) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'updateTaskId=' . $updateTaskId . ',isInstaller()=' . intval(isInstaller()) . ',currName=' . getCurrentExtensionName() . ',ext_update=' . $ext_update . ' - CHECKING!');
+ if ((isValidId($updateTaskId)) || (isInstaller())) {
// Try to register the extension
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ',ext_update=' . $ext_update . ',updateTaskId=' . $updateTaskId . ',isExtensionDryRun()=' . intval(isExtensionDryRun()));
$processResult = registerExtension($ext_update, $updateTaskId, isExtensionDryRun(), TRUE, $ext_name);
} // END - if
// Switch back to register mode
- setExtensionMode('register');
+ setExtensionMode('setup');
// Remains true if extension registration reports no failures
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ',processResult=' . intval($processResult));
initSqls();
setSqlsArray(getExtensionSqls());
+ // Copy current name to save calls
+ $currentName = getCurrentExtensionName();
+
+ // Mark it as NOT installed
+ $GLOBALS['ext_is_installed'][$currentName] = FALSE;
+
// Run installation pre-installation filters
- runFilterChain('pre_extension_installed', array('dry_run' => isExtensionDryRun(), 'enable_codes' => FALSE));
+ runFilterChain('pre_extension_installed', array('dry_run' => isExtensionDryRun(), 'ext_installing' => TRUE, 'enable_codes' => FALSE));
// Register extension
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'insert=' . getCurrentExtensionName() . '/' . getCurrentExtensionVersion() . ' - INSERT!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'insert=' . $currentName . '/' . getCurrentExtensionVersion() . ' - INSERT!');
if (isExtensionInstalledAndNewer('sql_patches', '0.0.6')) {
// New way, with CSS
- //* 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')",
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $currentName . ',always_active=' . getThisExtensionAlwaysActive() . ', ext_ver=' . getCurrentExtensionVersion() . 'ext_css=' . getExtensionHasCss());
+ sqlQueryEscaped("INSERT INTO `{?_MYSQL_PREFIX?}_extensions` (`ext_name`, `ext_active`, `ext_version`, `ext_has_css`) VALUES ('%s','%s','%s','%s')",
array(
- getCurrentExtensionName(),
+ $currentName,
getThisExtensionAlwaysActive(),
getCurrentExtensionVersion(),
getExtensionHasCss()
), __FUNCTION__, __LINE__);
} else {
// Old way, no CSS
- //* 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')",
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $currentName . ',always_active=' . getThisExtensionAlwaysActive() . ', ext_ver=' . getCurrentExtensionVersion());
+ sqlQueryEscaped("INSERT INTO `{?_MYSQL_PREFIX?}_extensions` (`ext_name`, `ext_active`, `ext_version`) VALUES ('%s','%s','%s')",
array(
- getCurrentExtensionName(),
+ $currentName,
getThisExtensionAlwaysActive(),
getCurrentExtensionVersion()
), __FUNCTION__, __LINE__);
}
- // Use the insert id as extension id and cache it for early usage
- $GLOBALS['cache_array']['extension']['ext_id'][getCurrentExtensionName()] = SQL_INSERTID();
- $GLOBALS['cache_array']['extension']['ext_name'][SQL_INSERTID()] = getCurrentExtensionName();
+ /*
+ * Use the insert id as extension id and "cache" all data for
+ * this extension for early usage.
+ */
+ copyExtensionDataToCacheArray($currentName, getSqlInsertId());
// Mark it as installed
- $GLOBALS['ext_is_installed'][getCurrentExtensionName()] = TRUE;
+ $GLOBALS['ext_is_installed'][$currentName] = TRUE;
- // Remove cache file(s) if extension is active
+ /*
+ * Run filter chain after extension has been "installed" which
+ * means that the extension has been registered in 'extensions'
+ * table and marked as "installed".
+ */
runFilterChain('post_extension_installed', array(
'pool' => 'extension',
- 'ext_name' => getCurrentExtensionName(),
+ 'ext_name' => $currentName,
'task_id' => $taskId
));
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName());
$ret = FALSE;
}
- } elseif (($taskId > 0) && (getCurrentExtensionName() != '')) {
+ } elseif ((isValidId($taskId)) && (getCurrentExtensionName() != '')) {
// Remove task from system when id and extension's name is valid
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName());
- SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_task_system` WHERE `id`=%s AND `status`='NEW' LIMIT 1",
+ sqlQueryEscaped("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_task_system` WHERE `id`=%s AND `status`='NEW' LIMIT 1",
array(bigintval($taskId)), __FUNCTION__, __LINE__);
}
// @TODO This redirect is still needed to register sql_patches! Please try to avoid it
- if (($ret === TRUE) && ($isDryRun === FALSE) && ($ext_name == 'sql_patches') && (!isInstallationPhase())) {
+ if (($ret === TRUE) && ($isDryRun === FALSE) && ($ext_name == 'sql_patches') && (!isInstaller())) {
/*
* This is a really dirty hack to prevent an error about a missing
* configuration entry which should be there after registration of
// @TODO Change from ext_id to ext_name (not just even the variable! ;-) )
function doExtensionSqls ($ext_id, $load_mode) {
// This shall never do a non-admin user but installation phase is okay
- if ((!isAdmin()) && (!isInstallationPhase())) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_id=' . $ext_id. ',load_mode=' . $load_mode . ',isAdmin()=' . intval(isAdmin()) . ',isInstallationPhase()=' . intval(isInstallationPhase()) . ' - ABORT!');
+ if ((!isAdmin()) && (!isInstaller())) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_id=' . $ext_id. ',load_mode=' . $load_mode . ',isAdmin()=' . intval(isAdmin()) . ',isInstaller()=' . intval(isInstaller()) . ' - ABORT!');
return FALSE;
} // END - if
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SQLs::count=' . countSqls());
// Are there entries?
- if (isSqlsValid()) {
+ if (ifSqlsRegistered()) {
// Run SQL commands...
runFilterChain('run_sqls');
} // END - if
runFilterChain('extension_' . $load_mode);
// Remove cache file(s) if extension is active
- if (((isExtensionActive('cache')) && ((!SQL_HASZEROAFFECTED()) || ($sqlRan === TRUE) || ($load_mode == 'activate') || ($load_mode == 'deactivate')))) {
+ if (((isExtensionActive('cache')) && ((!ifSqlHasZeroAffectedRows()) || ($sqlRan === TRUE) || ($load_mode == 'activate') || ($load_mode == 'deactivate')))) {
// Run filters
runFilterChain('post_extension_run_sql', getCurrentExtensionName());
} // END - if
// Is this the sql_patches?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'id=' . $ext_id . ',currName=' . getCurrentExtensionName() . ',loadMode=' . $load_mode);
- if ((getCurrentExtensionName() == 'sql_patches') && (($load_mode == 'register') || ($load_mode == 'remove'))) {
+ if ((getCurrentExtensionName() == 'sql_patches') && (($load_mode == 'setup') || ($load_mode == 'remove'))) {
// Then redirect to logout
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ': LOAD!');
redirectToUrl('modules.php?module=admin&logout=1&' . $load_mode . '=sql_patches');
// Count cache hits
incrementStatsEntry('cache_hits');
- } elseif (isInstallationPhase()) {
+ } elseif ((isInstaller()) && (!isSqlLinkUp())) {
// Extensions are all inactive/not installed during installation
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - installation phase detected.');
} else {
$ext_id = getExtensionId($ext_name);
// Is there a record?
- $isInstalled = ($ext_id > 0);
+ $isInstalled = isValidId($ext_id);
// Log debug message
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_id=' . $ext_id . ',isInstalled=' . intval($isInstalled));
// Check if given extension is active
function isExtensionActive ($ext_name) {
- if (isInstallationPhase()) {
+ if ((isInstaller()) && (!isSqlLinkUp())) {
// Extensions are all inactive during installation
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Extensions are always inactive while installation phase. ext_name=' . $ext_name);
return FALSE;
} elseif (($ext_name == 'cache') || (!isExtensionInstalled('cache'))) {
//* 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",
+ $result = sqlQueryEscaped("SELECT * FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `ext_name`='%s' LIMIT 1",
array($ext_name), __FUNCTION__, __LINE__);
// Entry found?
- if (SQL_NUMROWS($result) == 1) {
+ if (sqlNumRows($result) == 1) {
// Load entry
- $data = SQL_FETCHARRAY($result);
+ $data = sqlFetchArray($result);
+
+ // Set cache
+ setExtensionCacheRow($ext_name, $data);
} // END - if
// Free result
- SQL_FREERESULT($result);
-
- // Write cache array
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . '[DB]: ' . $data['ext_active']);
- $GLOBALS['cache_array']['extension']['ext_active'][$ext_name] = $data['ext_active'];
+ sqlFreeResult($result);
} else {
// Extension not active!
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ': Not active!');
return ($data['ext_active'] == 'Y');
}
+// Sets extension cache row
+function setExtensionCacheRow ($ext_name, &$data) {
+ // Add all
+ foreach ($data as $key => $value) {
+ // Is key=id?
+ if ($key == 'id') {
+ $data['ext_id'] = $value;
+ $key == 'ext_id';
+ } // END - if
+
+ // Is key=ext_has_css?
+ if ($key == 'ext_has_css') {
+ $data['ext_css'] = $value;
+ $key == 'ext_css';
+ } // END - if
+
+ // Set all entries
+ if ($key == 'ext_name') {
+ $GLOBALS['cache_array']['extension']['ext_name'][$data['id']] = $value;
+ } else {
+ // Add ordinary entry
+ $GLOBALS['cache_array']['extension'][$key][$ext_name] = $value;
+ }
+ } // END - foreach
+}
+
// Get version from extensions
function getExtensionVersion ($ext_name, $force = FALSE) {
// By default no extension is found
} // END - if
// Extensions are all inactive during installation
- if (isInstallationPhase()) {
+ if ((isInstaller()) && (!isSqlLinkUp())) {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',force=' . intval($force) . ' - Installation phase detected, returning empty version.');
return '';
} // END - if
// Count cache hits
incrementStatsEntry('cache_hits');
- } elseif ((!isCacheInstanceValid()) || (isset($GLOBALS['cache_array']['extension'])) || (!isHtmlOutputMode())) {
+ } elseif ((!isValidCacheInstance()) || (isset($GLOBALS['cache_array']['extension'])) || (!isHtmlOutputMode())) {
// Load from database
- $result = SQL_QUERY_ESC("SELECT `ext_version` FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `ext_name`='%s' LIMIT 1",
+ $result = sqlQueryEscaped("SELECT * FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `ext_name`='%s' LIMIT 1",
array($ext_name), __FUNCTION__, __LINE__);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ': DB - '.SQL_NUMROWS($result).'');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ': DB - '.sqlNumRows($result).'');
// Is the extension there?
- if (SQL_NUMROWS($result) == 1) {
+ if (sqlNumRows($result) == 1) {
// Load entry
- $data = SQL_FETCHARRAY($result);
+ $data = sqlFetchArray($result);
// Set cache
- $GLOBALS['cache_array']['extension']['ext_version'][$ext_name] = $data['ext_version'];
+ setExtensionCacheRow($ext_name, $data);
} elseif (isDebugModeEnabled()) {
// Not found, may happen while an extension is uninstalled
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("Cannot find extension %s in database!", $ext_name));
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf('Cannot find extension %s in database!', $ext_name));
}
// Free result
- SQL_FREERESULT($result);
+ sqlFreeResult($result);
}
// Extension version should not be invalid
if (($data['ext_version'] == 'false') && ($force === FALSE)) {
// Please report this trouble
- reportBug(__FUNCTION__, __LINE__, sprintf("Extension <span class=\"data\">%s</span> has empty version!", $ext_name));
+ reportBug(__FUNCTION__, __LINE__, sprintf('Extension <span class="data">%s</span> has empty version!', $ext_name));
} // END - if
// Return result
$depencies = getExtensionUpdateDependencies();
// Nothing to apply?
- if (count($depencies) > 0) {
+ if (isFilledArray($depencies)) {
// Apply all extension depencies
foreach ($depencies as $ext_depend) {
// Did we already update/register this?
setSqlsArray(getExtensionSqls());
// Run SQLs
- runFilterChain('run_sqls', array('dry_run' => isExtensionDryRun(), 'enable_codes' => FALSE));
+ runFilterChain('run_sqls', array('dry_run' => isExtensionDryRun(), 'ext_installing' => TRUE, 'enable_codes' => FALSE));
if (isExtensionDryRun() === FALSE) {
// Run filters on success extension update
$OUT = loadTemplate('admin_extension_sql_table', TRUE, $content);
} else {
// No addional SQL commands to run
- $OUT = displayMessage('{--ADMIN_EXTENSION_VERBOSE_SQLS_404--}', TRUE);
+ $OUT = returnMessage('{--ADMIN_EXTENSION_VERBOSE_SQLS_404--}');
}
} // END - if
incrementStatsEntry('cache_hits');
} elseif (!isExtensionActive('cache')) {
// Load from database
- $result = SQL_QUERY_ESC("SELECT `ext_name` FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `id`=%s LIMIT 1",
+ $result = sqlQueryEscaped("SELECT `ext_name` FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `id`=%s LIMIT 1",
array(bigintval($ext_id)), __FUNCTION__, __LINE__);
// Is the entry there?
- if (SQL_NUMROWS($result) == 1) {
+ if (sqlNumRows($result) == 1) {
// Get the extension's name from database
- $data = SQL_FETCHARRAY($result);
+ $data = sqlFetchArray($result);
} // END - if
// Free result
- SQL_FREERESULT($result);
+ sqlFreeResult($result);
}
// Did we find some extension?
incrementStatsEntry('cache_hits');
} else {
// Load from database
- $result = SQL_QUERY_ESC("SELECT `id` AS `ext_id` FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `ext_name`='%s' LIMIT 1",
+ $result = sqlQueryEscaped("SELECT * FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `ext_name`='%s' LIMIT 1",
array($ext_name), __FUNCTION__, __LINE__);
// Is the entry there?
- if (SQL_NUMROWS($result) == 1) {
+ if (sqlNumRows($result) == 1) {
// Get the extension's id from database
- $data = SQL_FETCHARRAY($result);
+ $data = sqlFetchArray($result);
+
+ // Set cache
+ setExtensionCacheRow($ext_name, $data);
} // END - if
// Free result
- SQL_FREERESULT($result);
-
- // Cache it
- $GLOBALS['cache_array']['extension']['ext_id'][$ext_name] = $data['ext_id'];
+ sqlFreeResult($result);
}
// Return value
// Is there cache?
if (!isset($GLOBALS['ext_name_valid'][$ext_name])) {
// Generate include file name
- $INC = sprintf("inc/extensions/ext-%s.php", $ext_name);
+ $INC = sprintf('inc/extensions/ext-%s.php', $ext_name);
// Is there a file in inc/extensions/ ?
$GLOBALS['ext_name_valid'][$ext_name] = isIncludeReadable($INC);
} // END - if
// Activate the extension
- SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_extensions` SET `ext_active`='Y' WHERE `ext_name`='%s' LIMIT 1",
+ sqlQueryEscaped("UPDATE `{?_MYSQL_PREFIX?}_extensions` SET `ext_active`='Y' WHERE `ext_name`='%s' LIMIT 1",
array($ext_name), __FUNCTION__, __LINE__);
// Then run all queries
} // END - if
// Activate the extension
- SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_extensions` SET `ext_active`='N' WHERE `ext_name`='%s' LIMIT 1",
+ sqlQueryEscaped("UPDATE `{?_MYSQL_PREFIX?}_extensions` SET `ext_active`='N' WHERE `ext_name`='%s' LIMIT 1",
array($ext_name), __FUNCTION__, __LINE__);
// Then run all queries
// Is the extension there?
if (isExtensionInstalled($ext_name)) {
// Check if task is not there
- if ($taskId == '0') {
+ if (!isValidId($taskId)) {
// Create extension update-task
$taskId = createNewTask($subject, $notes, 'EXTENSION_UPDATE', 0, $adminId);
} // END - if
} else {
// Extension not there! :-(
- reportBug(__FUNCTION__, __LINE__, sprintf("Extension <span class=\"data\">%s</span> not found but should be updated?", $ext_name));
+ reportBug(__FUNCTION__, __LINE__, sprintf('Extension <span class="data">%s</span> not found but should be updated?', $ext_name));
}
// Return task id
// Creates a new task for newly installed extension
function createNewExtensionTask ($ext_name) {
// Generate subject line
- $subject = sprintf("[%s:]", $ext_name);
+ $subject = sprintf('[%s:]', $ext_name);
// Get task id
$taskId = determineTaskIdBySubject($subject);
// Not installed and do we have created a task for the admin?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',taskId[' . gettype($taskId) . ']=' . $taskId);
- if (((is_null($taskId)) || ($taskId == '0')) && (!isExtensionInstalled($ext_name))) {
+ if ((!isValidId($taskId)) && (!isExtensionInstalled($ext_name))) {
// Set default message if ext-foo is missing
$message = '{%message,ADMIN_EXTENSION_TEXT_FILE_MISSING=' . $ext_name . '%}';
// Template file
- $FQFN = sprintf("%stemplates/%s/html/ext/ext_%s.tpl",
- getPath(),
- getLanguage(),
+ $FQFN = sprintf('%s/ext/ext_%s.tpl',
+ getTemplateBasePath('html'),
$ext_name
);
// Load text for task if found
if (isFileReadable($FQFN)) {
// Load extension's description template (but do not compile the code)
- $message = loadTemplate('ext_' . $ext_name, TRUE, array(), FALSE);
+ $message = '{OPEN_TEMPLATE}template,LoadTemplate=ext_' . $ext_name . '{CLOSE_TEMPLATE}';
} else {
// Write this in debug.log as well
logDebugMessage(__FUNCTION__, __LINE__, $message);
// Creates a task for automatically deactivated (deprecated) extension
function createExtensionDeactivationTask ($ext_name) {
// Create subject line
- $subject = sprintf("[%s:] %s", $ext_name, '{--ADMIN_TASK_EXTENSION_DEACTIVATED_SUBJECT--}');
+ $subject = sprintf('[%s:] %s', $ext_name, '{--ADMIN_TASK_EXTENSION_DEACTIVATED_SUBJECT--}');
// Get task id
$taskId = determineTaskIdBySubject($subject);
// Not installed and do we have created a task for the admin?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',taskId[' . gettype($taskId) . ']=' . $taskId);
- if (((is_null($taskId)) || ($taskId == '0')) && (isExtensionInstalled($ext_name))) {
+ if ((!isValidId($taskId)) && (isExtensionInstalled($ext_name))) {
// Task not created so add it
- $taskId = createNewTask($subject, SQL_ESCAPE(loadTemplate('task_EXTENSION_deactivated', TRUE, $ext_name)), 'EXTENSION_DEACTIVATION');
+ $taskId = createNewTask($subject, sqlEscapeString(loadTemplate('task_EXTENSION_deactivated', TRUE, $ext_name)), 'EXTENSION_DEACTIVATION');
} // END - if
// Return task id
// Determines the task id for given extension
function determineExtensionTaskId ($ext_name) {
// Is it installation phase and table task_system is not found?
- if ((isInstallationPhase()) && (!ifSqlTableExists('task_system'))) {
+ if ((isInstaller()) && (!ifSqlTableExists('task_system'))) {
// Then return NULL (not found)
return NULL;
} // END - if
$data['task_id'] = NULL;
// Search for extension task's id
- $result = SQL_QUERY_ESC("SELECT `id` AS task_id FROM `{?_MYSQL_PREFIX?}_task_system` WHERE `task_type`='EXTENSION' AND `subject`='[%s:]' LIMIT 1",
+ $result = sqlQueryEscaped("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) {
+ if (sqlNumRows($result) == 1) {
// Task found so load task's id and register extension...
- $data = SQL_FETCHARRAY($result);
+ $data = sqlFetchArray($result);
} // END - if
// Free result
- SQL_FREERESULT($result);
+ sqlFreeResult($result);
// Return it
return $data['task_id'];
$data['task_id'] = '0';
// Search for task id
- $result = SQL_QUERY_ESC("SELECT `id` AS task_id FROM `{?_MYSQL_PREFIX?}_task_system` WHERE `subject` LIKE '%s%%' LIMIT 1",
+ $result = sqlQueryEscaped("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) {
+ if (sqlNumRows($result) == 1) {
// Task found so load task's id and register extension...
- $data = SQL_FETCHARRAY($result);
+ $data = sqlFetchArray($result);
} // END - if
// Free result
- SQL_FREERESULT($result);
+ sqlFreeResult($result);
// Return it
return $data['task_id'];
// Checks whether an update is already running for given extension
function isExtensionUpdateRunning ($ext_name, $ignoreDependencies = FALSE) {
+ // 'ext_running_updates' must be there
+ if ((!isset($GLOBALS['ext_running_updates'])) || (!is_array($GLOBALS['ext_running_updates']))) {
+ // Is not there
+ reportBug(__FUNCTION__, __LINE__, 'Required array ext_running_updates not found. ext_name=' . $ext_name . ',ignoreDependencies=' . intval($ignoreDependencies));
+ } // END - if
+
// Current and given extensions means whole array
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ',ignoreDependencies=' . intval($ignoreDependencies) . ' - ENTERED!');
if ($ext_name == getCurrentExtensionName()) {
$GLOBALS['ext_depend_iterator'][getCurrentExtensionName()]++;
}
-// Setter for EXT_REPORTS_FAILURE flag
-function enableExtensionReportingFailure ($reportsFailure = FALSE) {
+// Setter for EXT_REPORTS_FAILURE flag (default: extension reported installation failure)
+function enableExtensionReportingFailure ($reportsFailure = TRUE) {
$GLOBALS['ext_reports_failure'] = (bool) $reportsFailure;
}
// Adds SQLs to the SQLs array but "assigns" it with current extension name
function addExtensionSql ($sql) {
+ // Copy current name/version to local variable
+ $currentName = getCurrentExtensionName();
+ $currentVersion = getCurrentExtensionVersion();
+
// Is is the array there?
- if ((!isset($GLOBALS['ext_sqls'][getCurrentExtensionName()][getCurrentExtensionVersion()])) || (!is_array($GLOBALS['ext_sqls'][getCurrentExtensionName()][getCurrentExtensionVersion()]))) {
+ if ((!isset($GLOBALS['ext_sqls'][$currentName][$currentVersion])) || (!is_array($GLOBALS['ext_sqls'][$currentName][$currentVersion]))) {
// Init array
- $GLOBALS['ext_sqls'][getCurrentExtensionName()][getCurrentExtensionVersion()] = array();
+ $GLOBALS['ext_sqls'][$currentName][$currentVersion] = array();
} // END - if
// Is the SQL statement empty?
} // END - if
// Add it
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ',ext_version=' . getCurrentExtensionVersion() . ',sql=' . $sql);
- array_push($GLOBALS['ext_sqls'][getCurrentExtensionName()][getCurrentExtensionVersion()], $sql);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $currentName . ',ext_version=' . $currentVersion . ',sql=' . $sql);
+ array_push($GLOBALS['ext_sqls'][$currentName][$currentVersion], $sql);
}
// Getter for SQLs array for current extension
// Output debug backtrace if not found (SHOULD NOT HAPPEN!)
if (!isset($GLOBALS['ext_sqls'][getCurrentExtensionName()])) {
// Not found, should not happen
- reportBug(__FUNCTION__, __LINE__, sprintf("ext_sqls is empty, current extension: %s",
+ reportBug(__FUNCTION__, __LINE__, sprintf('ext_sqls is empty, current extension: %s',
getCurrentExtensionName()
));
} // END - if
// Output debug backtrace if not found (SHOULD NOT HAPPEN!)
if (!isset($GLOBALS['ext_sqls'][getCurrentExtensionName()])) {
// Not found, should not happen
- reportBug(__FUNCTION__, __LINE__, sprintf("ext_sqls is empty, current extension: %s",
+ reportBug(__FUNCTION__, __LINE__, sprintf('ext_sqls is empty, current extension: %s',
getCurrentExtensionName()
));
} // END - if
// Is there cache?
if (!isset($GLOBALS[__FUNCTION__][getCurrentExtensionName()][getCurrentTheme()])) {
// Construct FQFN for check
- $FQFN = sprintf("%stheme/%s/css/%s.css",
- getPath(),
- getCurrentTheme(),
+ $FQFN = sprintf('%s%s.css',
+ getBasePathFromTheme(getCurrentTheme()),
getCurrentExtensionName()
);
return $GLOBALS[__FUNCTION__][getCurrentExtensionName()][getCurrentTheme()];
}
-// Checks whether the given extension has a language file
-function ifExtensionHasLanguageFile ($ext_name) {
+// Checks whether the given extension's language file is readable
+function isExtensionLanguageFileReadable ($ext_name) {
// Is there cache?
if (isset($GLOBALS['cache_array']['extension']['ext_lang'][$ext_name])) {
// Count cache hits
} // END - if
// Generate INC name
- $INC = sprintf("inc/extensions/ext-%s.php", getCurrentExtensionName());
+ $INC = sprintf('inc/extensions/ext-%s.php', getCurrentExtensionName());
// Load it
loadInclude($INC);
}
+// Load current extension's mode include file
+function loadCurrentExtensionModeInclude () {
+ // Generate INC name
+ $INC = sprintf('inc/extensions/%s/mode-%s.php', getCurrentExtensionName(), getExtensionMode());
+
+ // Is the include readable?
+ if (isIncludeReadable($INC)) {
+ // Load it as it is optional
+ loadInclude($INC);
+ } // END - if
+}
+
// Checks whether an extension is readable
function isExtensionIncludeReadable ($ext_name = '') {
// If empty, use current
// Array found?
if (!isset($GLOBALS['ext_inc_readable'][$ext_name])) {
// Generate INC name
- $INC = sprintf("inc/extensions/ext-%s.php", getCurrentExtensionName());
+ $INC = sprintf('inc/extensions/ext-%s.php', getCurrentExtensionName());
// Is it readable?
$GLOBALS['ext_inc_readable'][$ext_name] = isIncludeReadable($INC);
incrementStatsEntry('cache_hits');
} else {
// Construct IFN for functions file
- $funcsInclude = sprintf("inc/libs/%s_functions.php", $ext_name);
+ $funcsInclude = sprintf('inc/libs/%s_functions.php', $ext_name);
// Is this include there?
$isIncludeFound = ((isFileReadable($funcsInclude)) && (!isExtensionLibraryLoaded($ext_name)) && (getExtensionMode() == 'test'));
addExtensionSql($sql);
} elseif (isDebugModeEnabled()) {
// Double menus should be located and fixed!
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("Double admin menu action=%s,what=%s,title=%s detected.", $action, $what, $title));
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf('Double admin menu action=%s,what=%s,title=%s detected.', $action, $what, $title));
}
}
addExtensionSql($sql);
} elseif (isDebugModeEnabled()) {
// Double menus should be located and fixed!
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("Double guest menu action=%s,what=%s,title=%s detected.", $action, $what, $title));
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf('Double guest menu action=%s,what=%s,title=%s detected.', $action, $what, $title));
}
}
addExtensionSql($sql);
} elseif (isDebugModeEnabled()) {
// Double menus should be located and fixed!
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("Double member menu action=%s,what=%s,title=%s detected.", $action, $what, $title));
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf('Double member menu action=%s,what=%s,title=%s detected.', $action, $what, $title));
}
}
addExtensionSql($sql);
} elseif (isDebugModeEnabled()) {
// Double menus should be located and fixed!
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("Double sponsor menu action=%s,what=%s,title=%s,active=%s detected.", $action, $what, $title, $active));
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf('Double sponsor menu action=%s,what=%s,title=%s,active=%s detected.', $action, $what, $title, $active));
}
}
// Add ALTER TABLE `foo` ADD sql if not found
function addExtensionAddTableColumnSql ($tableName, $columnName, $columnSql) {
+ // Assert on all
+ assert((!empty($tableName)) && (!empty($columnName)) && (!empty($columnSql)));
+ assert($columnName != $columnSql);
+
// Is the column there?
- if (!ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $columnName)) {
+ if (!ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $columnName, isInstaller())) {
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $columnName . ',columnSql=' . $columnSql);
+
// Then add it
addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_' . $tableName . '` ADD `' . $columnName . '` ' . $columnSql);
} elseif (isDebugModeEnabled()) {
// Add ALTER TABLE `foo` ADD INDEX sql if not found
function addExtensionAddTableIndexSql ($tableName, $indexName, $columnSql) {
+ // Assert on all
+ assert((!empty($tableName)) && (!empty($indexName)) && (!empty($columnSql)));
+ assert($indexName != $columnSql);
+
// Is the column there?
- if (!ifSqlTableIndexExist('{?_MYSQL_PREFIX?}_' . $tableName, $indexName)) {
+ if (!ifSqlTableIndexExist('{?_MYSQL_PREFIX?}_' . $tableName, $indexName, isInstaller())) {
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',indexName=' . $indexName . ',columnSql=' . $columnSql);
+
// Then add it
addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_' . $tableName . '` ADD INDEX `' . $indexName . '` ' . $columnSql);
} elseif (isDebugModeEnabled()) {
// Add ALTER TABLE `foo` ADD UNIQUE INDEX sql if not found
function addExtensionAddTableUniqueSql ($tableName, $indexName, $columnSql) {
+ // Assert on all
+ assert((!empty($tableName)) && (!empty($indexName)) && (!empty($columnSql)));
+ assert($indexName != $columnSql);
+
// Is the column there?
- if (!ifSqlTableIndexExist('{?_MYSQL_PREFIX?}_' . $tableName, $indexName)) {
+ if (!ifSqlTableIndexExist('{?_MYSQL_PREFIX?}_' . $tableName, $indexName, isInstaller())) {
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',indexName=' . $indexName . ',columnSql=' . $columnSql);
+
// Then add it
addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_' . $tableName . '` ADD UNIQUE INDEX `' . $indexName . '` ' . $columnSql);
} elseif (isDebugModeEnabled()) {
// Add ALTER TABLE `foo` ADD FULLTEXT sql if not found
function addExtensionAddTableFulltextSql ($tableName, $indexName, $columnSql) {
- // Is the column there?
- if (!ifSqlTableIndexExist('{?_MYSQL_PREFIX?}_' . $tableName, $indexName)) {
+ // Assert on all
+ assert((!empty($tableName)) && (!empty($indexName)) && (!empty($columnSql)));
+ assert($indexName != $columnSql);
+
+ // Is the column there and MyISAM engine? (InnoDB doesn't support FULLTEXT)
+ if ((getTableType() == 'MyISAM') && (!ifSqlTableIndexExist('{?_MYSQL_PREFIX?}_' . $tableName, $indexName, isInstaller()))) {
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',indexName=' . $indexName . ',columnSql=' . $columnSql);
+
// Then add it
addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_' . $tableName . '` ADD FULLTEXT `' . $indexName . '` ' . $columnSql);
} elseif (isDebugModeEnabled()) {
// Add ALTER TABLE `foo` CHANGE sql if not found
function addExtensionChangeTableColumnSql ($tableName, $fromColumnName, $toColumnName, $columnSql) {
+ // Assert on all
+ assert((!empty($tableName)) && (!empty($fromColumnName)) && (!empty($toColumnName)) && (!empty($columnSql)));
+ assert(($fromColumnName != $columnSql) && ($toColumnName != $columnSql));
+
// Is the column there?
- if ((ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $fromColumnName)) && (($fromColumnName == $toColumnName) || (!ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $toColumnName)))) {
+ if ((ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $fromColumnName, isInstaller())) && (($fromColumnName == $toColumnName) || (!ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $toColumnName, isInstaller())))) {
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',fromColumnName=' . $fromColumnName . ',toColumnName=' . $toColumnName . ',columnSql=' . $columnSql);
+
// Then add it
addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_' . $tableName . '` CHANGE `' . $fromColumnName . '` `' . $toColumnName . '` ' . $columnSql);
} elseif (isDebugModeEnabled()) {
// Add ALTER TABLE `foo` DROP sql if not found
function addExtensionDropTableColumnSql ($tableName, $columnName) {
+ // Assert on all
+ assert((!empty($tableName)) && (!empty($columnName)));
+
// Is the column there?
- if (ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $columnName)) {
+ if (ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $columnName, isInstaller())) {
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $columnName);
+
// Then add it
addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_' . $tableName . '` DROP `' . $columnName . '`');
} elseif (isDebugModeEnabled()) {
// Add ALTER TABLE `foo` DROP INDEX sql if not found
function addExtensionDropTableIndexSql ($tableName, $indexName) {
+ // Assert on all
+ assert((!empty($tableName)) && (!empty($indexName)));
+
// Is the column there?
- if (ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $indexName)) {
+ if (ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $indexName, isInstaller())) {
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',indexName=' . $indexName);
+
// Then add it
addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_' . $tableName . '` DROP INDEX `' . $indexName . '`');
} elseif (isDebugModeEnabled()) {
// Add configuration entry if not found for actual extension
function addConfigAddSql ($columnName, $columnSql) {
- // Is the column there?
- if (!ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_config', $columnName)) {
- // Not found, so add it
- addExtensionAddTableColumnSql('config', $columnName, $columnSql);
- } elseif (isDebugModeEnabled()) {
- // Add debug line
- logDebugMessage(__FUNCTION__, __LINE__, 'Configuration entry ' . $columnName . ' already created. columnSql=' . $columnSql);
- }
+ // Call inner function
+ addExtensionAddTableColumnSql('config', $columnName, $columnSql);
}
// Drop configuration entry if found for actual extension
function addConfigDropSql ($columnName) {
- // Is the column there?
- if (ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_config', $columnName)) {
- // Found, so add it
- addExtensionDropTableColumnSql('config', $columnName);
- } elseif (isDebugModeEnabled()) {
- // Add debug line, reportBug() would cause some extenion updates fail
- logDebugMessage(__FUNCTION__, __LINE__, 'Configuration entry ' . $columnName . ' not found.');
- }
+ // Call inner function
+ addExtensionDropTableColumnSql('config', $columnName);
}
// Change configuration entry for actual extension
function addConfigChangeSql ($oldColumnName, $newColumnName, $columnSql) {
// Add the SQL statement
- addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_config` CHANGE `' . $oldColumnName . '` `' . $newColumnName . '` ' . $columnSql);
+ addExtensionChangeTableColumnSql('config', $oldColumnName, $newColumnName, $columnSql);
}
/**
* extension registration queue.
*/
function registerExtensionPointsData ($subject, $columnName, $lockedMode, $paymentMethod) {
+ // Assert on all
+ assert((!empty($subject)) && (!empty($columnName)) && (!empty($lockedMode)) && (!empty($paymentMethod)));
+ assert((in_array($lockedMode, array('LOCKED', 'UNLOCKED'))) && (in_array($paymentMethod, array('DIRECT', 'REFERRAL'))));
+
+ // Is the suffix '_ref' not set?
+ if (!ifSubjectHasReferralSuffix($subject)) {
+ // Register this first
+ registerExtensionPointsData($subject . '_ref', $columnName, $lockedMode, $paymentMethod);
+ } // END - if
+
// Default is old extension version
$add = '';
// Is the extension equal or newer 0.8.9?
- if (((isInstallationPhase()) && ((getExtensionMode() == 'register') || (getExtensionMode() == 'update'))) || (isExtensionInstalledAndNewer('sql_patches', '0.8.9'))) {
+ if (((isInstaller()) && ((getExtensionMode() == 'setup') || (getExtensionMode() == 'update'))) || (isExtensionInstalledAndNewer('sql_patches', '0.8.9'))) {
// Then add provider
$add = " AND `account_provider`='EXTENSION'";
} // END - if
// Is the 'subject' there?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ifSqlTableExists(points_data)=' . ifSqlTableExists('points_data') . ',getExtensionMode()=' . getExtensionMode() . ',add=' . $add);
- if (((!ifSqlTableExists('points_data')) && ((getExtensionMode() == 'register') || (getExtensionMode() == 'update'))) || (countSumTotalData($subject, 'points_data', 'id', 'subject', TRUE, $add) == 0)) {
+ if (((!ifSqlTableExists('points_data')) && ((getExtensionMode() == 'setup') || (getExtensionMode() == 'update'))) || (countSumTotalData($subject, 'points_data', 'id', 'subject', TRUE, $add) == 0)) {
// Not found so:
- if ((isset($GLOBALS['previous_extension'][getCurrentExtensionName()])) && (!ifSqlTableExists('points_data'))) {
+ if ((!isInstaller()) && (isset($GLOBALS['previous_extension'][getCurrentExtensionName()])) && (!ifSqlTableExists('points_data'))) {
+ // This may happen (but when?)
+ // @TODO Is this really neccessary?
$dummy = $GLOBALS['previous_extension'][getCurrentExtensionName()];
- reportBug(__FUNCTION__, __LINE__, 'previous_extension[' . gettype($dummy) . ']=' . $dummy . ',getCurrentExtensionName()=' . getCurrentExtensionName() . ' - Under development, please report this!');
+ reportBug(__FUNCTION__, __LINE__, 'dummy[' . gettype($dummy) . ']=' . $dummy . ',getCurrentExtensionName()=' . getCurrentExtensionName() . ' - Under development, please report this!');
} // END - if
- // ... add an SQL query
- addExtensionSql(sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`, `column_name`, `locked_mode`, `payment_method`) VALUES ('%s','%s','%s','%s')",
- $subject,
- $columnName,
- $lockedMode,
- $paymentMethod
- ));
+ // With or without account_provider?
+ if (((isInstaller()) && ((getExtensionMode() == 'setup') || (getExtensionMode() == 'update'))) || (isExtensionInstalledAndNewer('sql_patches', '0.8.9'))) {
+ // Add account_provider
+ addExtensionSql(sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`, `column_name`, `locked_mode`, `payment_method`, `account_provider`) VALUES ('%s','%s','%s','%s','EXTENSION')",
+ $subject,
+ $columnName,
+ $lockedMode,
+ $paymentMethod
+ ));
+ } else {
+ // ... add an SQL query
+ addExtensionSql(sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`, `column_name`, `locked_mode`, `payment_method`) VALUES ('%s','%s','%s','%s')",
+ $subject,
+ $columnName,
+ $lockedMode,
+ $paymentMethod
+ ));
+ }
} // END - if
}
* extension unregistration queue.
*/
function unregisterExtensionPointsData ($subject) {
+ // Is the suffix '_ref' not set?
+ if (!ifSubjectHasReferralSuffix($subject)) {
+ // Unregister this first
+ unregisterExtensionPointsData($subject . '_ref');
+ } // END - if
+
// Default is old extension version
$add = '';
return ((isset($GLOBALS['ext_loaded']['library'][$ext_name])) && ($GLOBALS['ext_loaded']['library'][$ext_name] === TRUE));
}
+// Copies the given extension's data to cache_array (USE THIS ONLY IN REGISTRATION PHASE!)
+function copyExtensionDataToCacheArray ($ext_name, $ext_id) {
+ // Copy all data
+ $GLOBALS['cache_array']['extension']['ext_id'][$ext_name] = $ext_id;
+ $GLOBALS['cache_array']['extension']['ext_name'][$ext_id] = $ext_name;
+ $GLOBALS['cache_array']['extension']['ext_version'][$ext_name] = getCurrentExtensionVersion();
+ $GLOBALS['cache_array']['extension']['ext_active'][$ext_name] = getThisExtensionAlwaysActive();
+ $GLOBALS['cache_array']['extension']['ext_lang'][$ext_name] = convertBooleanToYesNo(isExtensionLanguageFileReadable($ext_name));
+ $GLOBALS['cache_array']['extension']['ext_func'][$ext_name] = convertBooleanToYesNo(isExtensionFunctionFileReadable($ext_name));
+ $GLOBALS['cache_array']['extension']['ext_menu'][$ext_name] = convertBooleanToYesNo(ifModuleHasMenu($ext_name, isInstaller()));
+ $GLOBALS['cache_array']['extension']['ext_css'][$ext_name] = convertBooleanToYesNo(getExtensionHasCss());
+ $GLOBALS['cache_array']['extension']['ext_deprecated'][$ext_name] = 'N';
+}
+
+// "Getter" for "checked="checked" from given session data
+function getExtensionSelectedFromSession ($ext_name, $sessionName, $separator = ':') {
+ // Get the data and explode it
+ $selections = explode($separator, getSession($sessionName));
+
+ // Default is not checked
+ $checked = '';
+
+ // Is it there?
+ if (in_array($ext_name, $selections)) {
+ // It is, so mark it
+ $checked = ' checked="checked"';
+ } // END - if
+
+ // Return result
+ return $checked;
+}
+
// [EOF]
?>