X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fextensions-functions.php;h=9228cf4f42c2b7fd99bd6040ac28d6f4a09e4cb2;hp=56f624b44b5f551eb52335629ffcd4bea16c1744;hb=c6e62b16b4474ead6b180a5b9648906459d846da;hpb=db0c6702086eea2c44d0aae1702dc2e77a0afc4e diff --git a/inc/extensions-functions.php b/inc/extensions-functions.php index 56f624b44b..9228cf4f42 100644 --- a/inc/extensions-functions.php +++ b/inc/extensions-functions.php @@ -98,7 +98,7 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0', $dry_run = false // Is the extension already loaded? //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Loading extension ' . $ext_name . ', mode=' . getExtensionMode() . ', ver=' . getCurrentExtensionVersion()); - if ((isset($GLOBALS['ext_loaded']['ext'][$ext_name])) && (getExtensionMode() == 'init')) { + if ((isExtensionLoaded($ext_name)) && (getExtensionMode() == 'init')) { // Debug message logDebugMessage(__FUNCTION__, __LINE__, sprintf("Extension %s already loaded.", $ext_name)); @@ -124,12 +124,12 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0', $dry_run = false // Do we have cache? if (isExtensionFunctionFileReadable($ext_name)) { // Not yet loaded? - if ((($GLOBALS['cache_array']['extension']['ext_func'][$ext_name] == 'Y') || (!isset($GLOBALS['cache_array']['extension']['ext_func'][$ext_name]))) && (!isset($GLOBALS['ext_loaded']['funcs'][$ext_name]))) { + 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); // Mark it as loaded - $GLOBALS['ext_loaded']['funcs'][$ext_name] = true; + markExtensionLibraryAsLoaded($ext_name); // Download functions file loadIncludeOnce($funcsInclude); @@ -142,6 +142,9 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0', $dry_run = false )); } + // Load extension's filter library if present + loadExtensionFilters($ext_name); + // Extensions are not deprecated by default setExtensionDeprecated('N'); @@ -167,7 +170,7 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0', $dry_run = false // Mark it as loaded in normal mode if (getExtensionMode() == '') { // Mark it now... - $GLOBALS['ext_loaded']['ext'][$ext_name] = true; + markExtensionAsLoaded($ext_name); } // END - if // All fine! @@ -353,21 +356,21 @@ function registerExtension ($ext_name, $taskId, $dry_run = false, $logout = true //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'insert=' . getCurrentExtensionName() . '/' . getCurrentExtensionVersion() . ' - INSERT!'); if (isExtensionInstalledAndNewer('sql_patches', '0.0.6')) { // New way, with CSS - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ',always_active=' . getExtensionAlwaysActive() . ', ext_ver=' . getCurrentExtensionVersion() . 'ext_css=' . getExtensionHasCss()); + //* 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')", array( getCurrentExtensionName(), - getExtensionAlwaysActive(), + getThisExtensionAlwaysActive(), getCurrentExtensionVersion(), getExtensionHasCss() ), __FUNCTION__, __LINE__); } else { // Old way, no CSS - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ',always_active=' . getExtensionAlwaysActive() . ', ext_ver=' . getCurrentExtensionVersion()); + //* 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')", array( getCurrentExtensionName(), - getExtensionAlwaysActive(), + getThisExtensionAlwaysActive(), getCurrentExtensionVersion() ), __FUNCTION__, __LINE__); } @@ -560,7 +563,7 @@ function isExtensionActive ($ext_name) { // Count cache hits incrementStatsEntry('cache_hits'); - } elseif (isset($GLOBALS['ext_loaded'][$ext_name])) { + } elseif (isExtensionLoaded($ext_name)) { // @TODO Extension is loaded, what next? debug_report_bug(__FUNCTION__, __LINE__, 'LOADED:' . $ext_name); } elseif (($ext_name == 'cache') || (!isExtensionInstalled('cache'))) { @@ -1172,13 +1175,13 @@ function setExtensionAlwaysActive ($active) { } // Getter for EXT_ALWAYS_ACTIVE flag -function getExtensionAlwaysActive () { +function getThisExtensionAlwaysActive () { return $GLOBALS['ext_always_active'][getCurrentExtensionName()]; } // Checks wether the current extension is always active -function isExtensionAlwaysActive () { - return (getExtensionAlwaysActive() == 'Y'); +function isThisExtensionAlwaysActive () { + return (getThisExtensionAlwaysActive() == 'Y'); } // Setter for EXT_VERSION flag @@ -1722,7 +1725,7 @@ function isExtensionFunctionFileReadable ($ext_name) { $funcsInclude = sprintf("inc/libs/%s_functions.php", $ext_name); // Is this include there? - if ((isFileReadable($funcsInclude)) && (!isset($GLOBALS['ext_loaded']['funcs'][$ext_name])) && (getExtensionMode() == 'test')) { + if ((isFileReadable($funcsInclude)) && (!isExtensionLibraryLoaded($ext_name)) && (getExtensionMode() == 'test')) { // Cache it! //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_func=Y - FOUND!'); $GLOBALS['cache_array']['extension']['ext_func'][$ext_name] = 'Y'; @@ -1738,13 +1741,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 } @@ -1880,8 +1898,45 @@ 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); + } else { + // 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 . '`'); + } else { + // 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) { + // Is the old column there? + if (isSqlTableColumnFound('{?_MYSQL_PREFIX?}_config', $oldColumnName)) { + // Found so add it + addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_config` CHANGE `' . $oldColumnName . '` `' . $newColumnName . '` ' . $columnSql); + } else { + // Add debug line, debug_report_bug() would cause some extenion updates fail + logDebugMessage(__FUNCTION__, __LINE__, 'Configuration entry ' . $oldColumnName . ' not found.'); + } +} + // 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))); @@ -1918,5 +1973,41 @@ function isExtensionProductive ($ext_name = '') { return $GLOBALS[__FUNCTION__][$ext_name]; } +// Mark extension file as loaded +function markExtensionAsLoaded ($ext_name) { + // Is it already loaded? + if (isExtensionLoaded($ext_name)) { + // Then abort here + debug_report_bug(__FUNCTION__, __LINE__, 'Extension ' . $ext_name . ' is already marked as loaded!'); + } // END - if + + // Mark it + $GLOBALS['ext_loaded']['ext_name'][$ext_name] = true; +} + +// Determine wether the given extension is already loaded +function isExtensionLoaded ($ext_name) { + // Is it there? + return ((isset($GLOBALS['ext_loaded']['ext_name'][$ext_name])) && ($GLOBALS['ext_loaded']['ext_name'][$ext_name] === true)); +} + +// Mark extension's library file as loaded +function markExtensionLibraryAsLoaded ($ext_name) { + // Is it already loaded? + if (isExtensionLibraryLoaded($ext_name)) { + // Then abort here + debug_report_bug(__FUNCTION__, __LINE__, 'Extension library ' . $ext_name . ' is already marked as loaded!'); + } // END - if + + // Mark it + $GLOBALS['ext_loaded']['library'][$ext_name] = true; +} + +// Determine wether the given extension's library is already loaded +function isExtensionLibraryLoaded ($ext_name) { + // Is it there? + return ((isset($GLOBALS['ext_loaded']['library'][$ext_name])) && ($GLOBALS['ext_loaded']['library'][$ext_name] === true)); +} + // [EOF] ?>