Commit ae2490d8eb1371ce5740fb2969e904a352bed8d7

Authored by nbm
1 parent d65209c9

KTEntityUtil::getList2 doesn't need the table passed.

KTEntityUTil::getByDict can be passed a dictionary of fields to values
to look up.

KTEntityUtil::getBy{,Dict} can be asked to return multiple results.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3484 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 31 additions and 10 deletions
lib/ktentity.inc
... ... @@ -220,6 +220,11 @@ class KTEntity {
220 220 }
221 221  
222 222 class KTEntityUtil {
  223 + function &getList2($sClassName, $sWhereClause = null) {
  224 + $sTable = call_user_func(array($sClassName, "_table"));
  225 + return KTEntityUtil::getList($sTable, $sClassName, $sWhereClause);
  226 + }
  227 +
223 228 function &getList($sTable, $sClassName, $sWhereClause = null) {
224 229 $sQuery = "SELECT id FROM " . $sTable;/*ok*/
225 230 $aParams = array();
... ... @@ -290,20 +295,36 @@ class KTEntityUtil {
290 295 return $oObject;
291 296 }
292 297  
293   - function &getBy($sClassName, $sField, $mValue) {
294   - $sTable = call_user_func(array($sClassName, "_table"));
295   - $sWhereClause = array("$sField = ?", array($mValue));
296   - $aObjects =& KTEntityUtil::getList($sTable, $sClassName, $sWhereClause);
  298 + function &getBy($sClassName, $aField, $mValue, $bMulti = false) {
  299 + if (is_string($aField)) {
  300 + $sWhereClause = array("$aField = ?", array($mValue));
  301 + } else {
  302 + $aWhere = array();
  303 + foreach ($aField as $k => $sField) {
  304 + $aWhere[] = array("$sField = ?", array($mValue[$k]));
  305 + }
  306 + $sWhereClause = KTUtil::whereToString($aWhere);
  307 + }
  308 + $aObjects =& KTEntityUtil::getList2($sClassName, $sWhereClause);
297 309 if (PEAR::isError($aObjects)) {
298 310 return $aObjects;
299 311 }
300   - if (count($aObjects) === 0) {
301   - return PEAR::raiseError("No objects returned");
302   - }
303   - if (count($aObjects) > 1) {
304   - return PEAR::raiseError("Multiple objects returned");
  312 + if ($bMulti === false) {
  313 + if (count($aObjects) === 0) {
  314 + return PEAR::raiseError("No objects returned");
  315 + }
  316 + if (count($aObjects) > 1) {
  317 + return PEAR::raiseError("Multiple objects returned");
  318 + }
  319 + return $aObjects[0];
  320 + } else {
  321 + return $aObjects;
305 322 }
306   - return $aObjects[0];
  323 + }
  324 +
  325 + function &getByDict($sClassName, $aDict, $bMulti = false) {
  326 + return KTEntityUtil::getBy($sClassName, array_keys($aDict), array_values($aDict), $bMulti);
  327 +
307 328 }
308 329 }
309 330  
... ...