From 044fc9c8ebaa307656eeb297e2bdbb57138b5019 Mon Sep 17 00:00:00 2001 From: Neil Blakey-Milner Date: Tue, 11 Jul 2006 13:34:59 +0000 Subject: [PATCH] Add getUnitsForFolder, which lists all the units that a folder may be in (in case a unit is contained in another one). --- lib/unitmanagement/Unit.inc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+), 0 deletions(-) diff --git a/lib/unitmanagement/Unit.inc b/lib/unitmanagement/Unit.inc index b58d058..5448734 100644 --- a/lib/unitmanagement/Unit.inc +++ b/lib/unitmanagement/Unit.inc @@ -68,6 +68,28 @@ class Unit extends KTEntity { require_once(KT_LIB_DIR . '/foldermanagement/Folder.inc'); return Folder::get($this->iFolderId); } + + function getUnitsForFolder($oFolder) { + $oFolder =& KTUtil::getObject('Folder', $oFolder); + $sUnitTable = KTUtil::getTableName('units'); + if (PEAR::isError($oFolder)) { // can't be admin for a non-existant folder. + return false; + } + $sFolderIds = $oFolder->getParentFolderIds(); + $aFolderIds = split(",", $sFolderIds); + $aFolderIds[] = $oFolder->getId(); + + $sParams = DBUtil::paramArray($aFolderIds); + $aParams = $aFolderIds; + $sQuery = "SELECT id FROM $sUnitTable WHERE folder_id IN ($sParams)"; + $aUnitIds = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'id'); + + $aRet = array(); + foreach ($aUnitIds as $iId) { + $aRet[] = Unit::get($iId); + } + return $aRet; + } } ?> -- libgit2 0.21.4