diff --git a/include/application.php b/include/application.php index 75f1bb5..256afa1 100644 --- a/include/application.php +++ b/include/application.php @@ -1022,14 +1022,7 @@ class Application { if($aOptions['appCategory']) { $oCategory = new Category($aOptions['appCategory']); - $aSubCats = $oCategory->getSubCatList(); - $sWhereFilter .= " AND ( catId = '{$aOptions['appCategory']}' "; - foreach($aSubCats as $oCat) - { - $iCatId = $oCat->objectGetId(); - $sWhereFilter .= " OR catId = '$iCatId' "; - } - $sWhereFilter .= ") "; + $sWhereFilter .= ' AND ' . $oCategory->getSqlQueryPart(); } /* Should we add a limit clause to the query? */ if($iRows || $iStart) @@ -1278,14 +1271,7 @@ class Application { if($aOptions['appCategory']) { $oCategory = new Category($aOptions['appCategory']); - $aSubCats = $oCategory->getSubCatList(); - $sWhereFilter .= " AND ( catId = '{$aOptions['appCategory']}' "; - foreach($aSubCats as $oCat) - { - $iCatId = $oCat->objectGetId(); - $sWhereFilter .= " OR catId = '$iCatId' "; - } - $sWhereFilter .= ") "; + $sWhereFilter .= ' AND ' . $oCategory->getSqlQueryPart(); } if($sState != 'accepted' && !application::canEdit()) diff --git a/include/category.php b/include/category.php index daab5be..6156d1a 100644 --- a/include/category.php +++ b/include/category.php @@ -176,6 +176,23 @@ class Category { return $aCats; } + /* Returns an SQL statement that will match items in the current category + and all sub-categories */ + public function getSqlQueryPart() + { + $sRet = ''; + $aSubCats = $this->getSubCatList(); + $sRet .= " ( catId = '{$this->iCatId}' "; + foreach($aSubCats as $oCat) + { + $iCatId = $oCat->objectGetId(); + $sRet .= " OR catId = '$iCatId' "; + } + $sRet .= ") "; + + return $sRet; + } + function objectGetMail($sAction, $bMailSubmitter, $bParentAction) { /* We don't send notification mails */