Alexander Nicolaysen Sørnes : screenshot : Allow filtering by category when browsing

Alexander Nicolaysen Sørnes asornes at winehq.org
Sun Aug 9 10:53:18 CDT 2009


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

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Sun Aug  9 17:52:54 2009 +0200

screenshot: Allow filtering by category when browsing

---

 include/appData.php    |   41 ++++++++++++++++++++++++++++++++---------
 include/screenshot.php |   27 +++++++++++++++++++++++----
 2 files changed, 55 insertions(+), 13 deletions(-)

diff --git a/include/appData.php b/include/appData.php
index bc3142e..91c0e58 100644
--- a/include/appData.php
+++ b/include/appData.php
@@ -226,13 +226,24 @@ class appData
         return $hResult;
     }
 
-    function objectGetEntriesCount($sState, $sType = null)
+    function objectGetEntriesCount($sState, $sType = null, $oFilters = null)
     {
         /* Not implemented for appData */
         if($sState == 'rejected')
             return FALSE;
 
         $sSelectType = "";
+        $sWhereFilter = '';
+
+        if($oFilters)
+        {
+            $aOptions = $oFilters->getOptions();
+            if($aOptions['appCategory'])
+            {
+                $oCategory =  new category($aOptions['appCategory']);
+                $sWhereFilter .= ' AND ' . $oCategory->getSqlQueryPart();
+            }
+        }
 
         if(($sState != 'accepted') &&
             !$_SESSION['current']->hasPriv("admin"))
@@ -275,7 +286,7 @@ class appData
                 AND
                 appVersion.state = 'accepted'
                 AND
-                appFamily.state = 'accepted'";
+                appFamily.state = 'accepted'$sWhereFilter";
 
             if($sState != 'all')
                 $sQuery .= " AND appData.state = '$sState'";
@@ -307,7 +318,7 @@ class appData
                         appData.versionId = '0'
                     )
                     AND
-                    appFamily.state = 'accepted'$sAppDataQueued$sSelectType) UNION
+                    appFamily.state = 'accepted'$sAppDataQueued$sSelectType$sWhereFilter) UNION
                     (
                     SELECT COUNT(DISTINCT appData.id) as count FROM appData,
                 appFamily, appVersion WHERE
@@ -319,7 +330,7 @@ class appData
                     AND
                     appVersion.state = 'accepted'
                     AND
-                    appFamily.state = 'accepted'$sAppDataQueued$sSelectType)";
+                    appFamily.state = 'accepted'$sAppDataQueued$sSelectType$sWhereFilter)";
 
             if($sType)
                 $hResult = query_parameters($sQuery, $sType, $sType);
@@ -346,7 +357,7 @@ class appData
         return $oTableRow;
     }
 
-    function objectGetEntries($sState, $iRows = 0, $iStart = 0, $sOrderBy = '', $bAscending = true, $sType = null)
+    function objectGetEntries($sState, $iRows = 0, $iStart = 0, $sOrderBy = '', $bAscending = true, $sType = null, $oFilters = null)
     {
         /* Not implemented for appData */
         if($sState == 'rejected')
@@ -354,6 +365,17 @@ class appData
 
         $sSelectType = "";
         $sLimit = "";
+        $sWhereFilter = '';
+
+        if($oFilters)
+        {
+            $aOptions = $oFilters->getOptions();
+            if($aOptions['appCategory'])
+            {
+                $oCategory =  new category($aOptions['appCategory']);
+                $sWhereFilter .= ' AND ' . $oCategory->getSqlQueryPart();
+            }
+        }
 
         if($sState != 'accepted' && !$_SESSION['current']->hasPriv("admin"))
         {
@@ -402,6 +424,7 @@ class appData
                 appData.state = '?'
                 AND
                 appData.type = '?'
+                $sWhereFilter
                 ORDER BY appFamily.appName";
             if(!$iRows && !$iStart)
             {
@@ -410,7 +433,7 @@ class appData
             } else
             {
                 if(!$iRows)
-                    $iRows = appData::objectGetEntriesCount($sState, $sType);
+                    $iRows = appData::objectGetEntriesCount($sState, $sType, $oFilters);
                 $sQuery .= " LIMIT ?,?";
                 $hResult = query_parameters($sQuery, $_SESSION['current']->iUserId,
                                             $sState, $sType,
@@ -435,7 +458,7 @@ class appData
                       AND
                       appData.state = '?'
                       AND
-                      appData.type = '?' ORDER BY appFamily.appName $sLimit
+                      appData.type = '?' $sWhereFilter ORDER BY appFamily.appName $sLimit
                     )
                     UNION
                     (
@@ -453,7 +476,7 @@ class appData
                       AND
                       appData.state = '?'
                       AND
-                      appData.type = '?' ORDER BY appFamily.appName $sLimit
+                      appData.type = '?' $sWhereFilter ORDER BY appFamily.appName $sLimit
                     )";
             if(!$iRows && !$iStart)
             {
@@ -462,7 +485,7 @@ class appData
             } else
             {
                 if(!$iRows)
-                    $iRows = appData::objectGetEntriesCount($sState, $sType);
+                    $iRows = appData::objectGetEntriesCount($sState, $sType, $oFilters);
                 $hResult = query_parameters($sQuery, $sState, $sType,
                                             $iStart, $iRows,
                                             $sState, $sType,
diff --git a/include/screenshot.php b/include/screenshot.php
index 2f542f5..6e2ccf9 100644
--- a/include/screenshot.php
+++ b/include/screenshot.php
@@ -668,15 +668,34 @@ class screenshot
         echo "</tr></table></div><br>\n";
     }
 
-    function objectGetEntries($sState, $iRows = 0, $iStart = 0, $sOrderBy = '', $bAscending = true)
+    public function objectGetFilterInfo()
+    {
+        $oFilter = new filterInterface();
+
+        $aCatNames = array();
+        $aCatIds = array();
+
+        $aCategories = category::getOrderedList();
+        foreach($aCategories as $oCategory)
+        {
+            $aCatNames[] = $oCategory->sName;
+            $aCatIds[] = $oCategory->objectGetId();
+        }
+
+        $oFilter->addFilterInfo('appCategory', 'App category', array(FILTER_OPTION_ENUM), FILTER_VALUES_OPTION_ENUM, $aCatIds, $aCatNames);
+
+        return $oFilter;
+    }
+
+    function objectGetEntries($sState, $iRows = 0, $iStart = 0, $sOrderBy = '', $bAscending = true, $oFilters = true)
     {
         return appData::objectGetEntries($sState, $iRows, $iStart, $sOrderBy, $bAscending,
-                                         'screenshot');
+                                         'screenshot', $oFilters);
     }
 
-    function objectGetEntriesCount($sState)
+    function objectGetEntriesCount($sState, $oFilters = true)
     {
-        return appData::objectGetEntriesCount($sState, 'screenshot');
+        return appData::objectGetEntriesCount($sState, 'screenshot', $oFilters);
     }
 
     function objectGetHeader()




More information about the wine-cvs mailing list