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