From 2a00e34a7e92afb388dbf479c699e163b0972e62 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Mon, 4 Jul 2011 02:19:08 +0000 Subject: [PATCH] Added a check for isExtensionUpdateRunning() in updateExtension() to prevent double-update if a dependency has forced an update --- inc/extensions-functions.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/inc/extensions-functions.php b/inc/extensions-functions.php index 5ed3e89ecf..fb21ed0c49 100644 --- a/inc/extensions-functions.php +++ b/inc/extensions-functions.php @@ -651,13 +651,22 @@ 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) { // 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!'); if ((!isAdmin()) || (empty($ext_name))) { - return false; + // 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); } // END - if // Set current SQL name setCurrentExtensionName($ext_name); + // Is this extension update already running? + if (isExtensionUpdateRunning($ext_name)) { + // This is fine but needs logging ATM + /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - already in update phase, all fine.'); + return true; + } // END - if + // Init arrays initExtensionSqls(); initExtensionNotes(); @@ -746,6 +755,8 @@ function updateExtension ($ext_name, $ext_ver, $dry_run = false) { runFilterChain('extension_update', getCurrentExtensionName()); } // END - if } // END - if + + //* DEBUG: */logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_ver=' . $ext_ver . ',dry_run=' . intval($dry_run) . ' - EXIT!'); } // Output verbose SQL table for extension @@ -1301,7 +1312,7 @@ function isExtensionUpdateRunning ($ext_name) { // Walk through whole array foreach ($GLOBALS['ext_running_updates'] as $ext1=>$depends) { // Is it found? - if (($ext1 == $ext_name) || ($isRunning === true)) { + if ($ext1 == $ext_name) { // Found $isRunning = true; logDebugMessage(__FUNCTION__, __LINE__, 'ext1=' . $ext1 . ',ext_name=' . $ext_name . ',isRunning=' . intval($isRunning)); -- 2.39.2