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,6 +220,11 @@ class KTEntity {
220 } 220 }
221 221
222 class KTEntityUtil { 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 function &getList($sTable, $sClassName, $sWhereClause = null) { 228 function &getList($sTable, $sClassName, $sWhereClause = null) {
224 $sQuery = "SELECT id FROM " . $sTable;/*ok*/ 229 $sQuery = "SELECT id FROM " . $sTable;/*ok*/
225 $aParams = array(); 230 $aParams = array();
@@ -290,20 +295,36 @@ class KTEntityUtil { @@ -290,20 +295,36 @@ class KTEntityUtil {
290 return $oObject; 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 if (PEAR::isError($aObjects)) { 309 if (PEAR::isError($aObjects)) {
298 return $aObjects; 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