diff --git a/include/maintainer.php b/include/maintainer.php index 7eb96cf..554c7fb 100644 --- a/include/maintainer.php +++ b/include/maintainer.php @@ -396,9 +396,19 @@ class maintainer if($iVersionId) { $hResult = query_parameters("SELECT userId from appMaintainers, appVersion - WHERE appMaintainers.queued = 'false' AND appVersion.versionId = '?' - AND ((appMaintainers.versionId = appVersion.versionId) OR - (appMaintainers.appId = appVersion.appId))", $iVersionId); + WHERE + appMaintainers.queued = 'false' + AND + appVersion.versionId = '?' + AND + ( + appMaintainers.versionId = appVersion.versionId + OR + ( + appMaintainers.appId = appVersion.appId + AND superMaintainer = '1' + ) + )", $iVersionId); } /* * If versionId was not supplied we fetch supermaintainers of application and maintainer of all versions. diff --git a/unit_test/test_maintainer.php b/unit_test/test_maintainer.php index 8ca6941..8e58e57 100644 --- a/unit_test/test_maintainer.php +++ b/unit_test/test_maintainer.php @@ -461,6 +461,10 @@ function test_maintainer_getMaintainersForAppIdVersionId() $oUser->addPriv("admin"); + $oSecondUser = new user(); + $oSecondUser->iUserId = $oUser->iUserId + 1; + $oSecondUser->addPriv("admin"); + $oApp = new application(); $oApp->create(); $oFirstVersion = new version(); @@ -519,6 +523,15 @@ function test_maintainer_getMaintainersForAppIdVersionId() $oFirstVersionMaintainer->iUserId = $oUser->iUserId; $oFirstVersionMaintainer->create(); + /* Become a maintainer for the other version */ + $oSecondVersionMaintainer = new maintainer(); + $oSecondVersionMaintainer->sMaintainReason = "I need it"; + $oSecondVersionMaintainer->iVersionId = $oSecondVersion->iVersionId; + $oSecondVersionMaintainer->iAppId = $oFirstVersion->iAppId; + $oSecondVersionMaintainer->bSuperMaintainer = FALSE; + $oSecondVersionMaintainer->iUserId = $oSecondUser->iUserId; + $oSecondVersionMaintainer->create(); + if(!$hResult = maintainer::getMaintainersForAppIdVersionId(null, $oFirstVersion->iVersionId)) { @@ -542,8 +555,8 @@ function test_maintainer_getMaintainersForAppIdVersionId() return FALSE; } - /* The second version should not have any maintainers */ - $iExpected = 0; + /* The second version should have 1 maintainer */ + $iExpected = 1; $iReceived = mysql_num_rows($hResult); if($iExpected != $iReceived) {