diff --git a/engine/classes/MapperORM.class.php b/engine/classes/MapperORM.class.php index bfe0a942..2cd64cf5 100644 --- a/engine/classes/MapperORM.class.php +++ b/engine/classes/MapperORM.class.php @@ -196,6 +196,26 @@ class MapperORM extends Mapper { return $aItems; } + public function GetCountItemsByArray($aFilter,$sEntityFull) { + $sTableName = self::GetTableName($sEntityFull); + + $aFilterFields=$aFilter; + + $sFilterFields=''; + if (count($aFilterFields)) { + $sFilterFields=' and '.implode(' IN ( ?a ) and ',array_keys($aFilterFields)).' IN ( ?a ) '; + } + + $sql = "SELECT count(*) as c FROM ".$sTableName." WHERE 1=1 {$sFilterFields} "; + $aQueryParams=array_merge(array($sql),array_values($aFilterFields)); + + $aItems=array(); + if($aRow=call_user_func_array(array($this->oDb,'selectRow'),$aQueryParams)) { + return $aRow['c']; + } + return 0; + } + public function GetItemsByJoinTable($aData,$sEntityFull) { if(empty($aData)) { return null; diff --git a/engine/classes/ModuleORM.class.php b/engine/classes/ModuleORM.class.php index 1fd00fae..91ccb991 100644 --- a/engine/classes/ModuleORM.class.php +++ b/engine/classes/ModuleORM.class.php @@ -322,6 +322,17 @@ abstract class ModuleORM extends Module { return $aEntities; } + public function GetCountItemsByArray($aFilter=array(),$sEntityFull=null) { + if (is_null($sEntityFull)) { + $sEntityFull=Engine::GetPluginPrefix($this).'Module'.Engine::GetModuleName($this).'_Entity'.Engine::GetModuleName(get_class($this)); + } elseif (!substr_count($sEntityFull,'_')) { + $sEntityFull=Engine::GetPluginPrefix($this).'Module'.Engine::GetModuleName($this).'_Entity'.$sEntityFull; + } + + $iCount=$this->oMapperORM->GetCountItemsByArray($aFilter,$sEntityFull); + + return $iCount; + } public function GetItemsByJoinTable($aJoinData=array(),$sEntityFull=null) { if (is_null($sEntityFull)) { $sEntityFull=Engine::GetPluginPrefix($this).'Module'.Engine::GetModuleName($this).'_Entity'.Engine::GetModuleName(get_class($this));