// 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 ((!isTaskIdValid($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 ((!isTaskIdValid($taskId)) && (!isExtensionDryRun())) {
// Now try to create a new task
$taskId = createNewExtensionTask(getCurrentExtensionName());
// Is it still zero?
- if ((is_null($taskId)) || ($taskId == '0')) {
+ if (!isTaskIdValid($taskId)) {
// Then request a bug report
reportBug(__FUNCTION__, __LINE__, sprintf("%s: task_id is still zero after determineExtensionTaskId/createNewExtensionTask(%s)",
__FUNCTION__,
initSqls();
setSqlsArray(getExtensionSqls());
- // Run installation pre-installation filters
- runFilterChain('pre_extension_installed', array('dry_run' => isExtensionDryRun(), 'ext_installing' => TRUE, 'enable_codes' => FALSE));
-
// 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(), 'ext_installing' => TRUE, 'enable_codes' => FALSE));
+
// Register extension
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'insert=' . $currentName . '/' . getCurrentExtensionVersion() . ' - INSERT!');
if (isExtensionInstalledAndNewer('sql_patches', '0.0.6')) {
* Use the insert id as extension id and "cache" all data for
* this extension for early usage.
*/
- copyCurrentExtensionDataToCacheArray($ext_name, SQL_INSERTID());
+ copyExtensionDataToCacheArray($currentName, SQL_INSERTID());
// Mark it as installed
$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' => $currentName,
// 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 ((!isTaskIdValid($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 ((!isTaskIdValid($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
// 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);
}
/**
// 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'][$currentName] = $ext_id;
- $GLOBALS['cache_array']['extension']['ext_name'][$ext_id] = $currentName;
- $GLOBALS['cache_array']['extension']['ext_version'][$currentName] = getCurrentExtensionVersion();
- $GLOBALS['cache_array']['extension']['ext_active'][$currentName] = getThisExtensionAlwaysActive();
- $GLOBALS['cache_array']['extension']['ext_lang'][$currentName] = convertBooleanToYesNo(isExtensionLanguageFileReadable($currentName));
- $GLOBALS['cache_array']['extension']['ext_func'][$currentName] = convertBooleanToYesNo(isExtensionFunctionFileReadable($currentName));
- $GLOBALS['cache_array']['extension']['ext_menu'][$currentName] = convertBooleanToYesNo(ifModuleHasMenu($currentName));
- $GLOBALS['cache_array']['extension']['ext_css'][$currentName] = convertBooleanToYesNo(getExtensionHasCss());
- $GLOBALS['cache_array']['extension']['ext_deprecated'][$currentName] = 'N';
+ $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));
+ $GLOBALS['cache_array']['extension']['ext_css'][$ext_name] = convertBooleanToYesNo(getExtensionHasCss());
+ $GLOBALS['cache_array']['extension']['ext_deprecated'][$ext_name] = 'N';
+}
+
+// Checks if given task id is valid
+function isTaskIdValid ($taskId) {
+ // Is there cache?
+ if (!isset($GLOBALS[__FUNCTION__][$taskId])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__][$taskId] = ((!is_null($taskId)) && ($taskId > 0));
+ } // END - if
+
+ // Return "cached" value
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'taskId[' . gettype($taskId) . ']=' . intval($taskId) . ',isValid=' . intval($GLOBALS[__FUNCTION__][$taskId]));
+ return $GLOBALS[__FUNCTION__][$taskId];
}
// [EOF]