From 5ecbec2cff59feeaf4eacc5f74367b93db401002 Mon Sep 17 00:00:00 2001 From: Riccardo Di Dato Date: Fri, 18 Mar 2016 22:47:57 +0100 Subject: [PATCH] Inserito metodo di count per il search --- private/lib/dao/GenericDao.php | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) 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); } }