Commit 283bb87269264b374bfbd89039e1100257e8c0d1

Authored by nbm
1 parent af4f6e7e

Allow options for KTEntityUtil::get* to return ids instead of objects,

and to return multiple objects/ids if requested.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3488 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 24 additions and 10 deletions
lib/ktentity.inc
... ... @@ -220,13 +220,19 @@ class KTEntity {
220 220 }
221 221  
222 222 class KTEntityUtil {
223   - function &getList2($sClassName, $sWhereClause = null) {
  223 + function &getList2($sClassName, $sWhereClause = null, $aOptions = null) {
224 224 $sTable = call_user_func(array($sClassName, "_table"));
225   - return KTEntityUtil::getList($sTable, $sClassName, $sWhereClause);
  225 + return KTEntityUtil::getList($sTable, $sClassName, $sWhereClause, $aOptions);
226 226 }
227 227  
228   - function &getList($sTable, $sClassName, $sWhereClause = null) {
229   - $sQuery = "SELECT id FROM " . $sTable;/*ok*/
  228 + function &getList($sTable, $sClassName, $sWhereClause = null, $aOptions = null) {
  229 + $bIDs = false;
  230 + $sIDField = 'id';
  231 + if (is_array($aOptions)) {
  232 + $bIDs = KTUtil::arrayGet($aOptions, "ids", false);
  233 + $sIDField = KTUtil::arrayGet($aOptions, "idfield", 'id');
  234 + }
  235 + $sQuery = "SELECT $sIDField FROM " . $sTable;/*ok*/
230 236 $aParams = array();
231 237 if (!is_null($sWhereClause)) {
232 238 if (is_string($sWhereClause)) {
... ... @@ -248,7 +254,12 @@ class KTEntityUtil {
248 254 return new PEAR_Error('Weird WhereClause passed');
249 255 }
250 256 }
251   - $aIDs = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'id');
  257 + $aIDs = DBUtil::getResultArrayKey(array($sQuery, $aParams), $sIDField);
  258 +
  259 + if ($bIDs === true) {
  260 + return $aIDs;
  261 + }
  262 +
252 263 $aRet = array();
253 264 foreach ($aIDs as $iID) {
254 265 $aRet[] =& call_user_func(array($sClassName, 'get'), $iID);
... ... @@ -295,7 +306,11 @@ class KTEntityUtil {
295 306 return $oObject;
296 307 }
297 308  
298   - function &getBy($sClassName, $aField, $mValue, $bMulti = false) {
  309 + function &getBy($sClassName, $aField, $mValue, $aOptions = null) {
  310 + $bMulti = false;
  311 + if (is_array($aOptions)) {
  312 + $bMulti = KTUtil::arrayGet($aOptions, 'multi', false);
  313 + }
299 314 if (is_string($aField)) {
300 315 $sWhereClause = array("$aField = ?", array($mValue));
301 316 } else {
... ... @@ -305,7 +320,7 @@ class KTEntityUtil {
305 320 }
306 321 $sWhereClause = KTUtil::whereToString($aWhere);
307 322 }
308   - $aObjects =& KTEntityUtil::getList2($sClassName, $sWhereClause);
  323 + $aObjects =& KTEntityUtil::getList2($sClassName, $sWhereClause, $aOptions);
309 324 if (PEAR::isError($aObjects)) {
310 325 return $aObjects;
311 326 }
... ... @@ -322,9 +337,8 @@ class KTEntityUtil {
322 337 }
323 338 }
324 339  
325   - function &getByDict($sClassName, $aDict, $bMulti = false) {
326   - return KTEntityUtil::getBy($sClassName, array_keys($aDict), array_values($aDict), $bMulti);
327   -
  340 + function &getByDict($sClassName, $aDict, $aOptions = null) {
  341 + return KTEntityUtil::getBy($sClassName, array_keys($aDict), array_values($aDict), $aOptions);
328 342 }
329 343 }
330 344  
... ...