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
} // 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
// 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
// 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)) && (!isInstallationPhase())) {
// 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)",
__FUNCTION__,
$processResult = FALSE;
initIncludePool('extension');
- // By default we have no failures
+ // By default there is no failure
enableExtensionReportingFailure();
// 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);
// Entry found?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'updateTaskId=' . $updateTaskId . ',isInstallationPhase()=' . intval(isInstallationPhase()) . ',currName=' . getCurrentExtensionName() . ',ext_update=' . $ext_update . ' - CHECKING!');
- if (($updateTaskId > 0) || (isInstallationPhase())) {
+ if ((isValidId($updateTaskId)) || (isInstallationPhase())) {
// 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());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $currentName . ',always_active=' . getThisExtensionAlwaysActive() . ', ext_ver=' . getCurrentExtensionVersion() . 'ext_css=' . getExtensionHasCss());
SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_extensions` (`ext_name`, `ext_active`, `ext_version`, `ext_has_css`) VALUES ('%s','%s','%s','%s')",
array(
- getCurrentExtensionName(),
+ $currentName,
getThisExtensionAlwaysActive(),
getCurrentExtensionVersion(),
getExtensionHasCss()
), __FUNCTION__, __LINE__);
} else {
// Old way, no CSS
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ',always_active=' . getThisExtensionAlwaysActive() . ', ext_ver=' . getCurrentExtensionVersion());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $currentName . ',always_active=' . getThisExtensionAlwaysActive() . ', ext_ver=' . getCurrentExtensionVersion());
SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_extensions` (`ext_name`, `ext_active`, `ext_version`) VALUES ('%s','%s','%s')",
array(
- getCurrentExtensionName(),
+ $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, SQL_INSERTID());
// 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",
// 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');
$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));
} 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 = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `ext_name`='%s' LIMIT 1",
array($ext_name), __FUNCTION__, __LINE__);
// Entry found?
if (SQL_NUMROWS($result) == 1) {
// Load entry
$data = SQL_FETCHARRAY($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'];
} 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
incrementStatsEntry('cache_hits');
} elseif ((!isCacheInstanceValid()) || (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 = SQL_QUERY_ESC("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).'');
$data = SQL_FETCHARRAY($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));
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
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 = SQL_QUERY_ESC("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) {
// Get the extension's id from database
$data = SQL_FETCHARRAY($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'];
}
// Return value
// 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
// 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 . '%}';
// 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');
} // 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 = 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?
$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 = 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?
// 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()) {
// 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
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
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
// Add ALTER TABLE `foo` ADD sql if not found
function addExtensionAddTableColumnSql ($tableName, $columnName, $columnSql) {
// Is the column there?
- if (!ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $columnName)) {
+ if (!ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $columnName, isInstallationPhase())) {
// 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) {
// Is the column there?
- if (!ifSqlTableIndexExist('{?_MYSQL_PREFIX?}_' . $tableName, $indexName)) {
+ if (!ifSqlTableIndexExist('{?_MYSQL_PREFIX?}_' . $tableName, $indexName, isInstallationPhase())) {
// 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) {
// Is the column there?
- if (!ifSqlTableIndexExist('{?_MYSQL_PREFIX?}_' . $tableName, $indexName)) {
+ if (!ifSqlTableIndexExist('{?_MYSQL_PREFIX?}_' . $tableName, $indexName, isInstallationPhase())) {
// 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)) {
+ // Is the column there and MyISAM engine? (InnoDB doesn't support FULLTEXT)
+ if ((getTableType() == 'MyISAM') && (!ifSqlTableIndexExist('{?_MYSQL_PREFIX?}_' . $tableName, $indexName, isInstallationPhase()))) {
// 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) {
// Is the column there?
- if ((ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $fromColumnName)) && (($fromColumnName == $toColumnName) || (!ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $toColumnName)))) {
+ if ((ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $fromColumnName)) && (($fromColumnName == $toColumnName) || (!ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $toColumnName, isInstallationPhase())))) {
// 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) {
// Is the column there?
- if (ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $columnName)) {
+ if (ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $columnName, isInstallationPhase())) {
// 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) {
// Is the column there?
- if (ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $indexName)) {
+ if (ifSqlTableColumnExists('{?_MYSQL_PREFIX?}_' . $tableName, $indexName, isInstallationPhase())) {
// 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);
}
/**
$add = '';
// Is the extension equal or newer 0.8.9?
- if (((isInstallationPhase()) && ((getExtensionMode() == 'register') || (getExtensionMode() == 'update'))) || (isExtensionInstalledAndNewer('sql_patches', '0.8.9'))) {
+ if (((isInstallationPhase()) && ((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 ((!isInstallationPhase()) && (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!');
} // 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 (((isInstallationPhase()) && ((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
}
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, isInstallationPhase()));
+ $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]
?>