diff --git a/private/lib/dao/GenericDao.php b/private/lib/dao/GenericDao.php index cbf3c61..4708322 100644 --- a/private/lib/dao/GenericDao.php +++ b/private/lib/dao/GenericDao.php @@ -311,7 +311,35 @@ class GenericDao{ } public function searchCount($modelClass, $searchWord, array $filter = array(), array $options = array()){ - return sizeof($this->search($modelClass, $searchWord,$filter,$options)); + if (!is_null($modelClass)){ + if (!is_subclass_of($modelClass, "DaoSaveable", true)){ + throw new CoreException("Invalid return class passed to GenericDao::query ($modelClass)"); + } + } + + $collectionName = $modelClass::getCollectionName(); + $collection = $this->database->$collectionName; + + $useFilter = $filter; + $useFilter['$text'] = array('$search'=>$searchWord); + + if (!array_key_exists("deleted",$useFilter)){ + $useFilter["deleted"] = false; + } + + if (array_key_exists("id",$useFilter)){ + $useFilter["_id"] = $useFilter["id"]; + unset($useFilter["id"]); + } + + if (array_key_exists("_id",$useFilter) && is_string($useFilter["_id"])){ + $useFilter["_id"] = new MongoId($useFilter["_id"]); + } + + $cursor = $collection->find($useFilter,array('score' => array('$meta' => 'textScore'))); + + + return $cursor->count(true); } }