X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fextensions-functions.php;h=a6a2e372cc7487910e7451b10345dab6fcab9661;hb=6c2546b98939f8e1f686db48e4daa23782bab78f;hp=cc85912150d86ddd6d81200c2ec60fef9aee95f4;hpb=5261b522112c11417fc87bb0b14ca078bfa398e3;p=mailer.git diff --git a/inc/extensions-functions.php b/inc/extensions-functions.php index cc85912150..a6a2e372cc 100644 --- a/inc/extensions-functions.php +++ b/inc/extensions-functions.php @@ -155,8 +155,7 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0', $dry_run = false // @TODO Do we still need this? setExtensionUpdateNotes(''); // Include the extension file - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Extension loaded.'); - loadExtensionInclude(); + loadCurrentExtensionInclude(); // Is this extension deprecated? if (isExtensionDeprecated()) { @@ -164,6 +163,7 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0', $dry_run = false doDeactivateExtension($ext_name); // Abort here + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Extension load aborted, ext_name=' . $ext_name); return false; } // END - if @@ -174,13 +174,14 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0', $dry_run = false } // END - if // All fine! + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Extension successfully loaded, ext_name=' . $ext_name); return true; } // Registeres an extension and possible update depencies -function registerExtension ($ext_name, $taskId, $dry_run = false, $logout = true) { +function registerExtension ($ext_name, $taskId, $dry_run = false) { // Set current extension name - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',task_id=' . $taskId . ',dry_run=' . intval($dry_run) . ',logout=' . intval($logout) . ' - ENTERED!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',task_id=' . $taskId . ',dry_run=' . intval($dry_run) . ' - ENTERED!'); setCurrentExtensionName($ext_name); // Enable dry-run @@ -198,7 +199,7 @@ function registerExtension ($ext_name, $taskId, $dry_run = false, $logout = true // 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!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - already in registration/update phase, all fine.'); return true; } // END - if @@ -414,20 +415,6 @@ function registerExtension ($ext_name, $taskId, $dry_run = false, $logout = true array(bigintval($taskId)), __FUNCTION__, __LINE__); } - // Is this the sql_patches? - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . '/' . getExtensionMode()); - if ((getCurrentExtensionName() == 'sql_patches') && ((getExtensionMode() == 'register') || (getExtensionMode() == 'remove')) && (!isExtensionDryRun()) && ($test)) { - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . ': LOAD!'); - if ($logout === true) { - // Then redirect to logout - redirectToUrl('modules.php?module=admin&logout=1&' . getExtensionMode() . '=sql_patches'); - } else { - // Add temporary filter - registerFilter('shutdown', 'REDIRECT_TO_LOGOUT_SQL_PATCHES', true, true); - $GLOBALS['ext_load_mode'] = getExtensionMode(); - } - } // END - if - // Return status code //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ',test=' . intval($test) . ' - EXIT!'); return $ret; @@ -600,6 +587,7 @@ function isExtensionActive ($ext_name) { // Get version from extensions function getExtensionVersion ($ext_name, $force = false) { // By default no extension is found + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - ENTERED!'); $data['ext_version'] = 'false'; // Empty extension name should be fixed! @@ -609,13 +597,15 @@ function getExtensionVersion ($ext_name, $force = false) { } // END - if // Extensions are all inactive during installation - if (isInstallationPhase()) return ''; - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name); + if (isInstallationPhase()) { + return ''; + } // END - if // Is the cache written? + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - Checking cache ...'); if (isset($GLOBALS['cache_array']['extension']['ext_version'][$ext_name])) { // Load data from cache - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $ext_name . ': CACHE!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ': CACHE!'); $data['ext_version'] = $GLOBALS['cache_array']['extension']['ext_version'][$ext_name]; // Count cache hits @@ -624,7 +614,7 @@ function getExtensionVersion ($ext_name, $force = false) { // 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__, $ext_name . ': DB - '.SQL_NUMROWS($result).''); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ': DB - '.SQL_NUMROWS($result).''); // Is the extension there? if (SQL_NUMROWS($result) == 1) { @@ -1206,27 +1196,29 @@ function isExtensionDeprecated () { // Setter for EXT_UPDATE_DEPENDS flag function addExtensionDependency ($updateDepends) { - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . '/' . $updateDepends . ' - ENTERED!'); // Is the update depency empty? (NEED TO BE FIXED!) + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . '/' . $updateDepends . ',extensionMode=' . getExtensionMode() . ' - ENTERED!'); if (empty($updateDepends)) { // Please report this bug! debug_report_bug(__FUNCTION__, __LINE__, 'updateDepends is empty: currentExtension=' . getCurrentExtensionName()); } // END - if // Is it not yet added? - /* Only for debugging! if ((isset($updateDepends, $GLOBALS['ext_running_updates'][getCurrentExtensionName()])) && (in_array($updateDepends, getExtensionUpdatesRunning()))) { - // Double-adding isn't fine, too - debug_report_bug(__FUNCTION__, __LINE__, '() called twice: updateDepends=' . $updateDepends . ',currentExtension=' . getCurrentExtensionName()); + /* + * Double-adding isn't fine, too. This may mean that + * addExtensionDependency() was called outside the switch() command in + * the extension's file which requires fixing. + */ + debug_report_bug(__FUNCTION__, __LINE__, 'updateDepends=' . $updateDepends . ',extensionMode=' . getExtensionMode() . ',currentExtension=' . getCurrentExtensionName() . ' - CALLED TWICE!'); } // 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!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . '/' . $updateDepends . ',extensionMode=' . getExtensionMode() . ' - EXIT!'); } // Getter for running updates @@ -1293,9 +1285,9 @@ function isExtensionUpdateRunning ($ext_name) { 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)); + // Found $isRunning = true; + logDebugMessage(__FUNCTION__, __LINE__, 'ext1=' . $ext1 . ',ext_name=' . $ext_name . ',isRunning=' . intval($isRunning)); break; } // END - if } // END - foreach @@ -1578,7 +1570,7 @@ function getExtensionMode () { // Setter for dry-run function enableExtensionDryRun ($dry_run = true) { - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getCurrentExtensionName()='.getCurrentExtensionName().',dry='.intval($dry_run)); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getCurrentExtensionName()='.getCurrentExtensionName().',dry_run='.intval($dry_run)); $GLOBALS['ext_dry_run'] = (bool) $dry_run; } @@ -1678,8 +1670,8 @@ function ifExtensionHasLanguageFile ($ext_name) { return ($GLOBALS['cache_array']['extension']['ext_lang'][$ext_name] == 'Y'); } -// Load an extension's include file -function loadExtensionInclude () { +// Load current extension's include file +function loadCurrentExtensionInclude () { // Is it readable? if (!isExtensionIncludeReadable()) { // Not readable @@ -1696,7 +1688,9 @@ function loadExtensionInclude () { // Checks wether an extension is readable function isExtensionIncludeReadable ($ext_name = '') { // If empty, use current - if (empty($ext_name)) $ext_name = getCurrentExtensionName(); + if (empty($ext_name)) { + $ext_name = getCurrentExtensionName(); + } // END - if // Array found? if (!isset($GLOBALS['ext_inc_readable'][$ext_name])) { @@ -1741,13 +1735,28 @@ function isExtensionFunctionFileReadable ($ext_name) { return ($GLOBALS['cache_array']['extension']['ext_func'][$ext_name] == 'Y'); } +// Adds a CREATE TABLE statement if the requested table is not there +function addCreateTableSql ($tableName, $sql) { + // Is the table not there? + if (!isSqlTableCreated($tableName)) { + // Is not found, so add it + addExtensionSql('CREATE TABLE `{?_MYSQL_PREFIX?}_' . $tableName . '` ' . $sql); + } else { + // Is already there, which should not happen + debug_report_bug(__FUNCTION__, __LINE__, 'The table ' . $tableName . ' is already created which should not happen.'); + } +} + // Adds a DROP TABLE statement if the requested tabled is there -function addDropTableSql ($table) { +function addDropTableSql ($tableName) { // Is the table there? - if (isSqlTableCreated($table)) { + if (isSqlTableCreated($tableName)) { // Then add it, non-existing tables can be ignored because it will // happen with every newly installed extension. - addExtensionSql('DROP TABLE `{?_MYSQL_PREFIX?}_' . $table . '`'); + addExtensionSql('DROP TABLE `{?_MYSQL_PREFIX?}_' . $tableName . '`'); + + // Mark it as gone + $GLOBALS['isSqlTableCreated'][$tableName] = false; } // END - if } @@ -1883,8 +1892,39 @@ function addSponsorMenuSql ($action, $what, $title, $active, $sort) { } } +// Add configuration entry if not found for actual extension +function addConfigAddSql ($columnName, $columnSql) { + // Is the column there? + if (!isSqlTableColumnFound('{?_MYSQL_PREFIX?}_config', $columnName)) { + // Not found, so add it + addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `' . $columnName . '` ' . $columnSql); + } elseif (isDebugModeEnabled()) { + // Add debug line + logDebugMessage(__FUNCTION__, __LINE__, 'Configuration entry ' . $columnName . ' already created. columnSql=' . $columnSql); + } +} + +// Drop configuration entry if found for actual extension +function addConfigDropSql ($columnName) { + // Is the column there? + if (isSqlTableColumnFound('{?_MYSQL_PREFIX?}_config', $columnName)) { + // Found, so add it + addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_config` DROP `' . $columnName . '`'); + } elseif (isDebugModeEnabled()) { + // Add debug line, debug_report_bug() would cause some extenion updates fail + logDebugMessage(__FUNCTION__, __LINE__, 'Configuration entry ' . $columnName . ' not found.'); + } +} + +// 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); +} + // Enables/disables productive mode for current extension (used only while // registration). +// @TODO This should be rewrittten to allow, more development states, e.g. 'planing','alpha','beta','beta2','stable' function enableExtensionProductive ($isProductive = true) { // Log debug message //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("ext_name=%s,isProductive=%d", getCurrentExtensionName(), intval($isProductive))); @@ -1930,6 +1970,7 @@ function markExtensionAsLoaded ($ext_name) { } // END - if // Mark it + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("ext_name=%s,ext_loaded=true", $ext_name)); $GLOBALS['ext_loaded']['ext_name'][$ext_name] = true; } @@ -1956,5 +1997,6 @@ function isExtensionLibraryLoaded ($ext_name) { // Is it there? return ((isset($GLOBALS['ext_loaded']['library'][$ext_name])) && ($GLOBALS['ext_loaded']['library'][$ext_name] === true)); } + // [EOF] ?>