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,13 +220,19 @@ class KTEntity {
220 } 220 }
221 221
222 class KTEntityUtil { 222 class KTEntityUtil {
223 - function &getList2($sClassName, $sWhereClause = null) { 223 + function &getList2($sClassName, $sWhereClause = null, $aOptions = null) {
224 $sTable = call_user_func(array($sClassName, "_table")); 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 $aParams = array(); 236 $aParams = array();
231 if (!is_null($sWhereClause)) { 237 if (!is_null($sWhereClause)) {
232 if (is_string($sWhereClause)) { 238 if (is_string($sWhereClause)) {
@@ -248,7 +254,12 @@ class KTEntityUtil { @@ -248,7 +254,12 @@ class KTEntityUtil {
248 return new PEAR_Error('Weird WhereClause passed'); 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 $aRet = array(); 263 $aRet = array();
253 foreach ($aIDs as $iID) { 264 foreach ($aIDs as $iID) {
254 $aRet[] =& call_user_func(array($sClassName, 'get'), $iID); 265 $aRet[] =& call_user_func(array($sClassName, 'get'), $iID);
@@ -295,7 +306,11 @@ class KTEntityUtil { @@ -295,7 +306,11 @@ class KTEntityUtil {
295 return $oObject; 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 if (is_string($aField)) { 314 if (is_string($aField)) {
300 $sWhereClause = array("$aField = ?", array($mValue)); 315 $sWhereClause = array("$aField = ?", array($mValue));
301 } else { 316 } else {
@@ -305,7 +320,7 @@ class KTEntityUtil { @@ -305,7 +320,7 @@ class KTEntityUtil {
305 } 320 }
306 $sWhereClause = KTUtil::whereToString($aWhere); 321 $sWhereClause = KTUtil::whereToString($aWhere);
307 } 322 }
308 - $aObjects =& KTEntityUtil::getList2($sClassName, $sWhereClause); 323 + $aObjects =& KTEntityUtil::getList2($sClassName, $sWhereClause, $aOptions);
309 if (PEAR::isError($aObjects)) { 324 if (PEAR::isError($aObjects)) {
310 return $aObjects; 325 return $aObjects;
311 } 326 }
@@ -322,9 +337,8 @@ class KTEntityUtil { @@ -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