Module: appdb Branch: master Commit: 5475ef97f15cd94e1e12c85588b55f4297042566 URL: http://source.winehq.org/git/appdb.git/?a=commit;h=5475ef97f15cd94e1e12c8558...
Author: Alexander Nicolaysen Sørnes <alexander@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; }