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,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 |