Commit 283bb87269264b374bfbd89039e1100257e8c0d1
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 | ... | ... |