Alexander Nicolaysen Sørnes : browse apps: More options for Wine version filter

Chris Morgan cmorgan at winehq.org
Sun Sep 14 09:10:04 CDT 2008


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

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Tue Aug  5 17:16:22 2008 +0200

browse apps: More options for Wine version filter

---

 include/application.php |   36 ++++++++++++++++++++++++++++++++----
 include/util.php        |   17 +++++++++++++++++
 2 files changed, 49 insertions(+), 4 deletions(-)

diff --git a/include/application.php b/include/application.php
index a7ffa09..1d1fac6 100644
--- a/include/application.php
+++ b/include/application.php
@@ -953,10 +953,24 @@ class Application {
 
         if($sWhereFilter || $aOptions['onlyDownloadable'] == 'true')
         {
-            $sExtraTables = ',appVersion';
+            $sExtraTables = ",appVersion";
+            $sBugzillaQuery = '';
+
+            /* We only query the bugzilla table when necessary; these queries
+               will hide apps without test results */
+            if(strstr($sWhereFilter, 'versions.id'))
+            {
+                $sExtraTables .= ','.BUGZILLA_DB.'.versions';
+                $sBugzillaQuery = ' AND versions.value = appVersion.ratingRelease 
+                                    AND versions.product_id = '.BUGZILLA_PRODUCT_ID.' ';
+            }
+
             if($sWhereFilter)
                 $sWhereFilter = " AND $sWhereFilter";
-            $sWhereFilter = " AND appVersion.state = 'accepted' AND appVersion.appId = appFamily.appId $sWhereFilter";
+            $sWhereFilter = " AND appVersion.state = 'accepted'
+                              AND appVersion.appId = appFamily.appId
+                              $sBugzillaQuery
+                              $sWhereFilter";
         }
 
         if($aOptions['onlyDownloadable'] == 'true')
@@ -1032,9 +1046,10 @@ class Application {
 
         $aLicenses = version::getLicenses();
         $aWineVersions = get_bugzilla_versions();
+        $aWineVersionIds = get_bugzilla_version_ids();
 
         $oFilter->AddFilterInfo('appVersion.rating', 'Rating', array(FILTER_EQUALS), FILTER_VALUES_ENUM, array('Platinum', 'Gold', 'Silver', 'Bronze', 'Garbage'));
-        $oFilter->AddFilterInfo('appVersion.ratingRelease', 'Wine version', array(FILTER_EQUALS), FILTER_VALUES_ENUM, $aWineVersions);
+        $oFilter->AddFilterInfo('versions.id', 'Wine version', array(FILTER_EQUALS,FILTER_LESS_THAN,FILTER_GREATER_THAN), FILTER_VALUES_ENUM, $aWineVersionIds, $aWineVersions);
         $oFilter->AddFilterInfo('appFamily.catId', 'Category', array(FILTER_EQUALS), FILTER_VALUES_ENUM, $aCatIds, $aCatNames);
         $oFilter->AddFilterInfo('appVersion.license', 'License', array(FILTER_EQUALS), FILTER_VALUES_ENUM, $aLicenses);
         $oFilter->AddFilterInfo('appFamily.appName', 'Name', array(FILTER_CONTAINS, FILTER_STARTS_WITH, FILTER_ENDS_WITH), FILTER_VALUES_NORMAL);
@@ -1186,9 +1201,22 @@ class Application {
         if($sWhereFilter || $aOptions['onlyDownloadable'] == 'true')
         {
             $sExtraTables = ',appVersion';
+            $sBugzillaQuery = '';
+
+            /* We only query the bugzilla table when necessary; these queries
+               will hide apps without test results */
+            if(strstr($sWhereFilter, 'versions.id'))
+            {
+                $sExtraTables .= ','.BUGZILLA_DB.'.versions';
+                $sBugzillaQuery = ' AND versions.value = appVersion.ratingRelease 
+                                    AND versions.product_id = '.BUGZILLA_PRODUCT_ID.' ';
+            }
+
             if($sWhereFilter)
                 $sWhereFilter = " AND $sWhereFilter";
-            $sWhereFilter = " AND appVersion.appId = appFamily.appId $sWhereFilter";
+            $sWhereFilter = " AND appVersion.appId = appFamily.appId 
+                              $sBugzillaQuery
+                              $sWhereFilter";
         }
 
         if($aOptions['onlyDownloadable'] == 'true')
diff --git a/include/util.php b/include/util.php
index 3b6453d..028edb6 100644
--- a/include/util.php
+++ b/include/util.php
@@ -184,6 +184,23 @@ function get_bugzilla_versions()
     return $aVersions;
 }
 
+// Returns an array containing the IDs of the Wine versions stored in Bugzilla
+function get_bugzilla_version_ids()
+{
+    $aIds = array();
+    $hResult = query_bugzilladb("SELECT id FROM ".BUGZILLA_DB.".versions WHERE
+                                 product_id = '".BUGZILLA_PRODUCT_ID."'
+                                 ORDER BY id DESC LIMIT 6");
+
+    if(!$hResult)
+        return $aIds;
+
+    while(list($sId) = mysql_fetch_row($hResult))
+        $aIds[] = $sId;
+
+    return $aIds;
+}
+
 // $sVarname - name of the selection array that this function will output
 //             this is the name to use to retrieve the selection on the form postback
 // $sSelectedValue - the currently selected entry




More information about the wine-cvs mailing list