X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fextensions-functions.php;h=e7e6bce3085bee962e5c0d2925ddb8f408e4b940;hb=7638ed2cdac53be2f20153011b8093aaf7349f79;hp=d02cc8967c36ca8e9ac5ebcbf9f49c7bd4f05128;hpb=2f83b073cdd7fdeeed2032ce6fb25e0590c83746;p=mailer.git diff --git a/inc/extensions-functions.php b/inc/extensions-functions.php index d02cc8967c..e7e6bce308 100644 --- a/inc/extensions-functions.php +++ b/inc/extensions-functions.php @@ -17,7 +17,7 @@ * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * * Copyright (c) 2009 - 2011 by Mailer Developer Team * - * For more information visit: http://www.mxchange.org * + * For more information visit: http://mxchange.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -42,11 +42,12 @@ if (!defined('__SECURITY')) { // Load the extension and maybe found language and function files. function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0.0', $dry_run = false) { + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_mode=' . $ext_mode . ',ext_ver=' . $ext_ver . ',dry_run=' . intval($dry_run)); // Loading an extension in same mode, but not test/update, twice is not // good, so is the extension $ext_name already loaded in mode $ext_mode? if ((isset($GLOBALS['loaded_extension'][$ext_name][$ext_mode])) && (!in_array($ext_mode, array('update', 'test')))) { // If this happens twice, we need the bug report from you, except for updates/tests - debug_report_bug(__FUNCTION__, __LINE__, '() is called twice: ext_name=' . $ext_name . ', ext_mode='. $ext_mode . ',ext_sqls=' . print_r(getExtensionSqls(), true) . ', ext_register_running=' . print_r($GLOBALS['ext_register_running'], true) . ', ext_running_updates=' . print_r($GLOBALS['ext_running_updates'], true)); + debug_report_bug(__FUNCTION__, __LINE__, __FUNCTION__ . '() is called twice: ext_name=' . $ext_name . ', ext_mode='. $ext_mode . ',ext_sqls=' . print_r(getExtensionSqls(), true) . ', ext_register_running=' . print_r($GLOBALS['ext_register_running'], true) . ', ext_running_updates=' . print_r($GLOBALS['ext_running_updates'], true)); } // END - if // Make sure this situation can only happen once @@ -151,19 +152,16 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0.0', $dry_run = fal // Extensions are not always active by default setExtensionAlwaysActive('N'); - // Extension update notes - // @TODO Do we still need this? setExtensionUpdateNotes(''); - // Include the extension file loadCurrentExtensionInclude(); // Is this extension deprecated? - if (isExtensionDeprecated()) { + if ((isExtensionDeprecated()) && (!in_array(getExtensionMode(), array('test', 'update', 'deactivate'))) && (isExtensionActive($ext_name))) { // Deactivate the extension doDeactivateExtension($ext_name); // Abort here - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Extension load aborted, ext_name=' . $ext_name); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Extension load aborted, ext_name=' . $ext_name . ' - Extension is deprecated.'); return false; } // END - if @@ -181,7 +179,7 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0.0', $dry_run = fal // Registers an extension and possible update dependencies function registerExtension ($ext_name, $taskId, $dry_run = false, $ignoreUpdates = false) { // Set current extension name - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',task_id=' . $taskId . ',dry_run=' . intval($dry_run) . ' - ENTERED!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',task_id=' . $taskId . ',dry_run=' . intval($dry_run) . ',ignoreUpdates=' . intval($ignoreUpdates) . ' - ENTERED!'); setCurrentExtensionName($ext_name); // Enable dry-run @@ -359,7 +357,7 @@ function registerExtension ($ext_name, $taskId, $dry_run = false, $ignoreUpdates 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')", + SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_extensions` (`ext_name`,`ext_active`,`ext_version`,`ext_has_css`) VALUES ('%s','%s','%s','%s')", array( getCurrentExtensionName(), getThisExtensionAlwaysActive(), @@ -369,7 +367,7 @@ function registerExtension ($ext_name, $taskId, $dry_run = false, $ignoreUpdates } 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')", + SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_extensions` (`ext_name`,`ext_active`,`ext_version`) VALUES ('%s','%s','%s')", array( getCurrentExtensionName(), getThisExtensionAlwaysActive(), @@ -613,7 +611,7 @@ function getExtensionVersion ($ext_name, $force = false) { //* 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=' . $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 @@ -652,9 +650,9 @@ function getExtensionVersion ($ext_name, $force = false) { } // Updates a given extension with current extension version to latest version -function updateExtension ($ext_name, $ext_ver, $dry_run = false) { +function updateExtension ($ext_name, $ext_ver, $dry_run = false, $ignoreDependencies = false) { // Only admins are allowed to update extensions - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_ver=' . $ext_ver . ',dry_run=' . intval($dry_run) . ' - ENTERED!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_ver=' . $ext_ver . ',dry_run=' . intval($dry_run) . ',ignoreDependencies=' . intval($ignoreDependencies) . ' - ENTERED!'); if ((!isAdmin()) || (empty($ext_name))) { // Called as non-admin or empty extension debug_report_bug(__FUNCTION__, __LINE__, 'Called as non-admin (isAdmin()=' . intval(isAdmin()) . '), or empty extension name. ext_name=' . $ext_name); @@ -664,9 +662,10 @@ function updateExtension ($ext_name, $ext_ver, $dry_run = false) { setCurrentExtensionName($ext_name); // Is this extension update already running? - if ((isExtensionUpdateRunning($ext_name)) && ($dry_run === false)) { + if ((isExtensionUpdateRunning($ext_name, $ignoreDependencies)) && ($dry_run === false)) { // This is fine but needs logging ATM //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - already in update phase, all fine.'); + ///* BUG: */ debug_report_bug(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - already in update phase, please investigate!'); return true; } // END - if @@ -719,7 +718,7 @@ function updateExtension ($ext_name, $ext_ver, $dry_run = false) { // Is the extension there? if (isExtensionInstalled($ext_depend)) { // Update another extension first! - $processResult = updateExtension($ext_depend, getExtensionVersion($ext_depend), isExtensionDryRun()); + $processResult = updateExtension($ext_depend, getExtensionVersion($ext_depend), isExtensionDryRun(), true); } else { // Register new extension $processResult = registerExtension($ext_depend, 0, isExtensionDryRun()); @@ -727,11 +726,11 @@ function updateExtension ($ext_name, $ext_ver, $dry_run = false) { } // END - if } // END - foreach - // Set extension version here - setCurrentExtensionVersion($ext_ver); - // Set name back setCurrentExtensionName($ext_name); + + // Set extension version here + setCurrentExtensionVersion($ext_ver); } // END - if // Add notes @@ -759,11 +758,11 @@ function updateExtension ($ext_name, $ext_ver, $dry_run = false) { } // END - if } // END - if - //* DEBUG: */logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_ver=' . $ext_ver . ',dry_run=' . intval($dry_run) . ' - EXIT!'); + //* DEBUG: */logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_ver=' . $ext_ver . ',dry_run=' . intval($dry_run) . ',ignoreDependencies=' . intval($ignoreDependencies) . ' - EXIT!'); } // Output verbose SQL table for extension -function addExtensionVerboseSqlTable ($title = '{--ADMIN_SQLS_EXECUTED_ON_REMOVAL--}', $dashed = '', $switch = false, $width = '100%') { +function addExtensionVerboseSqlTable ($title = '{--ADMIN_SQLS_EXECUTED_ON_REMOVAL--}') { // Empty title? if (empty($title)) { // Then abort here @@ -805,8 +804,6 @@ function addExtensionVerboseSqlTable ($title = '{--ADMIN_SQLS_EXECUTED_ON_REMOVA // Prepare content for template $content = array( - 'width' => $width, - 'dashed' => $dashed, 'title' => $title, 'rows' => $OUT ); @@ -951,7 +948,7 @@ function doDeactivateExtension ($ext_name) { // Is the extension installed? if (!isExtensionInstalled($ext_name)) { // Non-installed extensions cannot be activated - debug_report_bug(__FUNCTION__, __LINE__, 'Tried to deactivate non-installed extension ' . $ext_name); + debug_report_bug(__FUNCTION__, __LINE__, 'Tried to deactivate non-installed extension ' . $ext_name . ',getExtensionMode()=' . getExtensionMode()); } // END - if // Activate the extension @@ -964,6 +961,9 @@ function doDeactivateExtension ($ext_name) { // Create new task (we ignore the task id here) createExtensionDeactivationTask($ext_name); + // Rebuild cache + rebuildCache('extension', 'extension'); + // Notify the admin sendAdminNotification( '{--ADMIN_EXTENSION_DEACTIVATED_SUBJECT--}', @@ -1306,9 +1306,9 @@ function isExtensionUpdateDependenciesInitialized () { } // Checks wether an update is already running for given extension -function isExtensionUpdateRunning ($ext_name) { +function isExtensionUpdateRunning ($ext_name, $ignoreDependencies = false) { // Current and given extensions means whole array - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ' - ENTERED!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ',ignoreDependencies=' . intval($ignoreDependencies) . ' - ENTERED!'); if ($ext_name == getCurrentExtensionName()) { // Default is not found $isRunning = false; @@ -1317,16 +1317,16 @@ function isExtensionUpdateRunning ($ext_name) { foreach ($GLOBALS['ext_running_updates'] as $ext1=>$depends) { // Is it found? //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext1=' . $ext1 . ',ext_name=' . $ext_name . ',depends=' . print_r($depends, true)); - if (($ext1 == $ext_name) || (in_array($ext_name, $depends))) { + if (($ext1 == $ext_name) || ((in_array($ext_name, $depends)) && ($ignoreDependencies === false))) { // Found $isRunning = true; - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext1=' . $ext1 . ',ext_name=' . $ext_name . ',isRunning=' . intval($isRunning) . ' - ADDED!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext1=' . $ext1 . ',ext_name=' . $ext_name . ',isRunning=true - FOUND!'); break; } // END - if } // END - foreach // Return result - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ', isRunning=' . intval($isRunning) . ' - EXIT!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ',ignoreDependencies=' . intval($ignoreDependencies) . ', isRunning=' . intval($isRunning) . ' - ALT-EXIT!'); return $isRunning; } // END - if @@ -1334,7 +1334,7 @@ function isExtensionUpdateRunning ($ext_name) { $isRunning = ((isExtensionUpdateDependenciesInitialized()) && (in_array($ext_name, getExtensionRunningUpdates()))); // Return it - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ', isRunning=' . intval($isRunning) . ' - EXIT!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ',ignoreDependencies=' . intval($ignoreDependencies) . ', isRunning=' . intval($isRunning) . ' - EXIT!'); return $isRunning; } @@ -1424,8 +1424,8 @@ function getExtensionVersionHistory () { // Setter for EXT_UPDATE_NOTES function setExtensionUpdateNotes ($updateNotes, $ext_ver = '') { - // . '/' . getCurrentExtensionVersion() - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getCurrentExtensionName()=' . getCurrentExtensionName() . ',getExtensionMode()=' . getExtensionMode() . ',ext_ver=' . $ext_ver . ',updateNotes()=' . strlen($updateNotes)); + // + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getCurrentExtensionName()=' . getCurrentExtensionName() . ',getExtensionMode()=' . getExtensionMode() . ',ext_ver=' . $ext_ver . '/' . getCurrentExtensionVersion() . ',updateNotes()=' . strlen($updateNotes)); if (empty($ext_ver)) { $GLOBALS['ext_update_notes'][getCurrentExtensionName()][getCurrentExtensionVersion()] = (string) $updateNotes; } else { @@ -1792,7 +1792,7 @@ function addAdminMenuSql ($action, $what, $title, $descr, $sort) { // Is what null? if (is_null($what)) { // Add main menu - $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_admin_menu` (`action`, `what`, `title`, `descr`, `sort`) VALUES ('%s',NULL,'%s','%s',%s)", + $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('%s',NULL,'%s','%s',%s)", $action, $title, $descr, @@ -1800,7 +1800,7 @@ function addAdminMenuSql ($action, $what, $title, $descr, $sort) { ); } else { // Add sub menu - $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_admin_menu` (`action`, `what`, `title`, `descr`, `sort`) VALUES ('%s','%s','%s','%s',%s)", + $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('%s','%s','%s','%s',%s)", $action, $what, $title, @@ -1824,14 +1824,14 @@ function addGuestMenuSql ($action, $what, $title, $sort) { // Is what null? if (is_null($what)) { // Add main menu - $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_guest_menu` (`action`, `what`, `title`, `visible`, `locked`, `sort`) VALUES ('%s',NULL,'%s','N','Y',%s)", + $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_guest_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('%s',NULL,'%s','N','Y',%s)", $action, $title, bigintval($sort) ); } else { // Add sub menu - $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_guest_menu` (`action`, `what`, `title`, `visible`, `locked`, `sort`) VALUES ('%s','%s','%s','N','Y',%s)", + $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_guest_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('%s','%s','%s','N','Y',%s)", $action, $what, $title, @@ -1854,14 +1854,14 @@ function addMemberMenuSql ($action, $what, $title, $sort) { // Is what null? if (is_null($what)) { // Add main menu - $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_member_menu` (`action`, `what`, `title`, `visible`, `locked`, `sort`) VALUES ('%s',NULL,'%s','N','Y',%s)", + $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_member_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('%s',NULL,'%s','N','Y',%s)", $action, $title, bigintval($sort) ); } else { // Add sub menu - $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_member_menu` (`action`, `what`, `title`, `visible`, `locked`, `sort`) VALUES ('%s','%s','%s','N','Y',%s)", + $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_member_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('%s','%s','%s','N','Y',%s)", $action, $what, $title, @@ -1884,7 +1884,7 @@ function addSponsorMenuSql ($action, $what, $title, $active, $sort) { // Is what null? if (is_null($what)) { // Add main menu - $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_sponsor_menu` (`action`, `what`, `title`, `active`, `sort`) VALUES ('%s',NULL,'%s','%s',%s)", + $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_sponsor_menu` (`action`,`what`,`title`,`active`,`sort`) VALUES ('%s',NULL,'%s','%s',%s)", $action, $title, $active, @@ -1892,7 +1892,7 @@ function addSponsorMenuSql ($action, $what, $title, $active, $sort) { ); } else { // Add sub menu - $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_sponsor_menu` (`action`, `what`, `title`, `active`, `sort`) VALUES ('%s','%s','%s','%s',%s)", + $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_sponsor_menu` (`action`,`what`,`title`,`active`,`sort`) VALUES ('%s','%s','%s','%s',%s)", $action, $what, $title, @@ -1944,7 +1944,7 @@ function addConfigChangeSql ($oldColumnName, $newColumnName, $columnSql) { // @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))); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ',isProductive=', intval($isProductive)); // Set it $GLOBALS['ext_productive'][getCurrentExtensionName()] = (bool) $isProductive; @@ -1958,6 +1958,7 @@ function isExtensionProductive ($ext_name = '') { // Get current extension name $ext_name = getCurrentExtensionName(); } // END - if + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - ENTERED!'); // Do we have cache? if (!isset($GLOBALS[__FUNCTION__][$ext_name])) { @@ -1971,10 +1972,8 @@ function isExtensionProductive ($ext_name = '') { $GLOBALS[__FUNCTION__][$ext_name] = ((isset($GLOBALS['ext_productive'][$ext_name])) && ($GLOBALS['ext_productive'][$ext_name] === true)); } // END - if - // Log debug message - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("ext_name=%s,isProductive=%s", $ext_name, intval($GLOBALS[__FUNCTION__][$ext_name]))); - // Return result + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',isProductive=', intval($GLOBALS[__FUNCTION__][$ext_name]) . ' - EXIT!'); return $GLOBALS[__FUNCTION__][$ext_name]; } @@ -1987,7 +1986,7 @@ function markExtensionAsLoaded ($ext_name) { } // END - if // Mark it - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("ext_name=%s,ext_loaded=true", $ext_name)); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_loaded=true'); $GLOBALS['ext_loaded']['ext_name'][$ext_name] = true; }