Alexander Nicolaysen Sørnes : testData: Allow admins to only show entries for versions they maintain

Alexander Nicolaysen Sørnes asornes at winehq.org
Tue Nov 17 17:35:46 CST 2009


Module: appdb
Branch: master
Commit: 038a0da4cf575be3d7da6addf27451c021705e76
URL:    http://source.winehq.org/git/appdb.git/?a=commit;h=038a0da4cf575be3d7da6addf27451c021705e76

Author: Alexander Nicolaysen Sørnes <alexander at linux-xqqm.(none)>
Date:   Sun Nov 15 19:45:17 2009 +0100

testData: Allow admins to only show entries for versions they maintain

---

 include/testData.php |   57 +++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 45 insertions(+), 12 deletions(-)

diff --git a/include/testData.php b/include/testData.php
index 1a6762f..879e363 100644
--- a/include/testData.php
+++ b/include/testData.php
@@ -1175,27 +1175,46 @@ class testData{
     {
         $oFilter = new FilterInterface();
         $oFilter->AddFilterInfo('onlyWithoutMaintainers', 'Only show test data for versions without maintainers', array(FILTER_OPTION_BOOL), FILTER_VALUES_OPTION_BOOL, array('false','true'));
+
+        /* Allow admins to only show entries for apps they maintain */
+        if($_SESSION['current']->hasPriv('admin'))
+            $oFilter->AddFilterInfo('onlyMyMaintainedEntries', 'Only show test data for versions you maintain', array(FILTER_OPTION_BOOL), FILTER_VALUES_OPTION_BOOL, array('false','true'));
+
         return $oFilter;
     }
 
     function objectGetEntriesCount($sState, $oFilters = null)
     {
         $sExtraTables = '';
-        $aOptions = $oFilters ? $oFilters->getOptions() : array('onlyWithoutMaintainers' => 'false');
+        $aOptions = $oFilters ? $oFilters->getOptions() : array('onlyWithoutMaintainers' => 'false', 'onlyMyMaintainedEntries' => 'false');
         $sWhereFilter = '';
+        $bOnlyMyMaintainedEntries = false;
+
+        $oTest = new testData();
+
+        if(getInput('onlyMyMaintainedEntries', $aOptions) == 'true'
+           || ($sState != 'accepted' && !$oTest->canEdit()))
+        {
+            $bOnlyMyMaintainedEntries = true;
+        }
+
+        /* This combination doesn't make sense */
+        if(getInput('onlyWithoutMaintainers', $aOptions) == 'true'
+           && getInput('onlyMyMaintainedEntries', $aOptions) == 'true')
+        {
+            return false;
+        }
 
-        if($aOptions['onlyWithoutMaintainers'] == 'true')
+        if(getInput('onlyWithoutMaintainers', $aOptions) == 'true')
         {
             $sExtraTables = ',appVersion';
 
             $sWhereFilter .= " AND appVersion.hasMaintainer = 'false' AND appVersion.versionId = testResults.versionId";
         }
 
-        $oTest = new testData();
-
-        if($sState != 'accepted' && !$oTest->canEdit())
+        if($bOnlyMyMaintainedEntries)
         {
-            if($sState == 'rejected')
+            if(!$oTest->canEdit() && $sState == 'rejected')
             {
                 $sQuery = "SELECT COUNT(testingId) AS count FROM
                         testResults$sExtraTables WHERE
@@ -1255,18 +1274,32 @@ class testData{
     function objectGetEntries($sState, $iRows = 0, $iStart = 0, $sOrderBy = "testingId", $bAscending = true, $oFilters = null)
     {
         $sExtraTables = '';
-        $aOptions = $oFilters ? $oFilters->getOptions() : array('onlyWithoutMaintainers' => 'false');
+        $aOptions = $oFilters ? $oFilters->getOptions() : array('onlyWithoutMaintainers' => 'false', 'onlyMyMaintainedEntries' => 'false');
         $sWhereFilter = '';
+        $bOnlyMyMaintainedEntries = false;
+
+        $oTest = new testData();
+
+        if(getInput('onlyMyMaintainedEntries', $aOptions) == 'true'
+           || ($sState != 'accepted' && !$oTest->canEdit()))
+        {
+            $bOnlyMyMaintainedEntries = true;
+        }
 
-        if($aOptions['onlyWithoutMaintainers'] == 'true')
+        /* This combination doesn't make sense */
+        if(getInput('onlyWithoutMaintainers', $aOptions) == 'true'
+           && getInput('onlyMyMaintainedEntries', $aOptions) == 'true')
+        {
+            return false;
+        }
+
+        if(getInput('onlyWithoutMaintainers', $aOptions) == 'true')
         {
             $sExtraTables = ',appVersion';
 
             $sWhereFilter .= " AND appVersion.hasMaintainer = 'false' AND appVersion.versionId = testResults.versionId";
         }
 
-        $oTest = new testData();
-
         $sLimit = "";
 
         /* Should we add a limit clause to the query? */
@@ -1280,9 +1313,9 @@ class testData{
                 $iRows = testData::objectGetEntriesCount($sState);
         }
 
-        if($sState != 'accepted' && !$oTest->canEdit())
+        if($bOnlyMyMaintainedEntries)
         {
-            if($sState == 'rejected')
+            if(!$oTest->canEdit() && $sState == 'rejected')
             {
                 $sQuery = "SELECT testResults.* FROM testResults$sExtraTables WHERE
                         testResults.submitterId = '?'




More information about the wine-cvs mailing list