Alexander Nicolaysen Sørnes : screenshot : Allow admins to only show unmaintained entries or their own maintained ones

Alexander Nicolaysen Sørnes asornes at winehq.org
Sun Dec 6 07:41:12 CST 2009


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

Author: Alexander Nicolaysen Sørnes <alexander at linux-xqqm.(none)>
Date:   Fri Dec  4 21:54:11 2009 +0100

screenshot: Allow admins to only show unmaintained entries or their own maintained ones

---

 include/appData.php    |   80 ++++++++++++++++++++++++++++++++++++------------
 include/screenshot.php |    8 +++++
 2 files changed, 68 insertions(+), 20 deletions(-)

diff --git a/include/appData.php b/include/appData.php
index 198aca7..caaa827 100644
--- a/include/appData.php
+++ b/include/appData.php
@@ -233,20 +233,39 @@ class appData
             return FALSE;
 
         $sSelectType = "";
+
+        $aOptions = $oFilters ? $oFilters->getOptions() : array('onlyWithoutMaintainers' => 'false', 'onlyMyMaintainedEntries' => 'false');
         $sWhereFilter = '';
+        $sVersionWhereFilter = '';
+        $bOnlyMyMaintainedEntries = false;
+
+        $oAppData = new appData();
 
-        if($oFilters)
+        if(getInput('onlyMyMaintainedVersionEntries', $aOptions) == 'true'
+           || ($sState != 'accepted' && !$oAppData->canEdit()))
         {
-            $aOptions = $oFilters->getOptions();
-            if($aOptions['appCategory'])
-            {
-                $oCategory =  new category($aOptions['appCategory']);
-                $sWhereFilter .= ' AND ' . $oCategory->getSqlQueryPart();
-            }
+            $bOnlyMyMaintainedEntries = true;
+        }
+
+        /* This combination doesn't make sense */
+        if(getInput('onlyWithoutVersionMaintainers', $aOptions) == 'true'
+           && getInput('onlyMyMaintainedVersionEntries', $aOptions) == 'true')
+        {
+            return false;
         }
 
-        if(($sState != 'accepted') &&
-            !$_SESSION['current']->hasPriv("admin"))
+        if(getInput('onlyWithoutVersionMaintainers', $aOptions) == 'true')
+        {
+            $sVersionWhereFilter .= " AND appVersion.hasMaintainer = 'false' AND appVersion.versionId = appData.versionId";
+        }
+
+        if(getInput('appCategory', $aOptions))
+        {
+            $oCategory =  new category($aOptions['appCategory']);
+            $sWhereFilter .= ' AND ' . $oCategory->getSqlQueryPart();
+        }
+
+        if($bOnlyMyMaintainedEntries)
         {
            $sQuery = "SELECT COUNT(DISTINCT appData.id) as count FROM appData,
            appMaintainers, appVersion, appFamily WHERE
@@ -286,7 +305,7 @@ class appData
                 AND
                 appVersion.state = 'accepted'
                 AND
-                appFamily.state = 'accepted'$sWhereFilter";
+                appFamily.state = 'accepted'$sVersionWhereFilter$sWhereFilter";
 
             if($sState != 'all')
                 $sQuery .= " AND appData.state = '$sState'";
@@ -330,7 +349,7 @@ class appData
                     AND
                     appVersion.state = 'accepted'
                     AND
-                    appFamily.state = 'accepted'$sAppDataQueued$sSelectType$sWhereFilter)";
+                    appFamily.state = 'accepted'$sVersionWhereFilter$sAppDataQueued$sSelectType$sWhereFilter)";
 
             if($sType)
                 $hResult = query_parameters($sQuery, $sType, $sType);
@@ -366,19 +385,39 @@ class appData
 
         $sSelectType = "";
         $sLimit = "";
+
+        $aOptions = $oFilters ? $oFilters->getOptions() : array('onlyWithoutMaintainers' => 'false', 'onlyMyMaintainedEntries' => 'false');
         $sWhereFilter = '';
+        $sVersionWhereFilter = '';
+        $bOnlyMyMaintainedEntries = false;
 
-        if($oFilters)
+        $oAppData = new appData();
+
+        if(getInput('onlyMyMaintainedVersionEntries', $aOptions) == 'true'
+           || ($sState != 'accepted' && !$oAppData->canEdit()))
         {
-            $aOptions = $oFilters->getOptions();
-            if($aOptions['appCategory'])
-            {
-                $oCategory =  new category($aOptions['appCategory']);
-                $sWhereFilter .= ' AND ' . $oCategory->getSqlQueryPart();
-            }
+            $bOnlyMyMaintainedEntries = true;
+        }
+
+        /* This combination doesn't make sense */
+        if(getInput('onlyWithoutVersionMaintainers', $aOptions) == 'true'
+           && getInput('onlyMyMaintainedVersionEntries', $aOptions) == 'true')
+        {
+            return false;
         }
 
-        if($sState != 'accepted' && !$_SESSION['current']->hasPriv("admin"))
+        if(getInput('onlyWithoutVersionMaintainers', $aOptions) == 'true')
+        {
+            $sVersionWhereFilter .= " AND appVersion.hasMaintainer = 'false' AND appVersion.versionId = appData.versionId";
+        }
+
+        if(getInput('appCategory', $aOptions))
+        {
+            $oCategory =  new category($aOptions['appCategory']);
+            $sWhereFilter .= ' AND ' . $oCategory->getSqlQueryPart();
+        }
+
+        if($bOnlyMyMaintainedEntries)
         {
             $sQuery = "SELECT DISTINCT appData.* FROM appData, appMaintainers,
                 appVersion, appFamily WHERE
@@ -426,6 +465,7 @@ class appData
                 AND
                 appData.type = '?'
                 $sWhereFilter
+                $sVersionWhereFilter
                 ORDER BY appFamily.appName";
             if(!$iRows && !$iStart)
             {
@@ -477,7 +517,7 @@ class appData
                       AND
                       appData.state = '?'
                       AND
-                      appData.type = '?' $sWhereFilter ORDER BY appFamily.appName $sLimit
+                      appData.type = '?' $sVersionWhereFilter$sWhereFilter ORDER BY appFamily.appName $sLimit
                     )";
             if(!$iRows && !$iStart)
             {
diff --git a/include/screenshot.php b/include/screenshot.php
index 886682a..dc49935 100644
--- a/include/screenshot.php
+++ b/include/screenshot.php
@@ -692,6 +692,14 @@ class screenshot
 
         $oFilter->addFilterInfo('appCategory', 'App category', array(FILTER_OPTION_ENUM), FILTER_VALUES_OPTION_ENUM, $aCatIds, $aCatNames);
 
+        /* The following filters are only useful for admins */
+        if(!$_SESSION['current']->hasPriv('admin'))
+            return $oFilter;
+
+        $oFilter->AddFilterInfo('onlyWithoutVersionMaintainers', 'Only show screenshots for versions without maintainers', array(FILTER_OPTION_BOOL), FILTER_VALUES_OPTION_BOOL, array('false','true'));
+
+        $oFilter->AddFilterInfo('onlyMyMaintainedVersionEntries', 'Only show screenshots for versions you maintain', array(FILTER_OPTION_BOOL), FILTER_VALUES_OPTION_BOOL, array('false','true'));
+
         return $oFilter;
     }
 




More information about the wine-cvs mailing list