From e1c758a94d76549b9b35e9e880e36fd5cd8eb3ae Mon Sep 17 00:00:00 2001 From: Riccardo Di Dato Date: Fri, 11 Mar 2016 13:59:00 +0100 Subject: [PATCH] Inserita funzione di ricerca full text --- private/lib/PipelineHelper.php | 1 + private/lib/dao/GenericDao.php | 56 +++++++++++++++++++ .../lib/media/mediaRenderers/MediaYoutube.php | 3 +- 3 files changed, 58 insertions(+), 2 deletions(-) diff --git a/private/lib/PipelineHelper.php b/private/lib/PipelineHelper.php index c3436b9..29e4172 100644 --- a/private/lib/PipelineHelper.php +++ b/private/lib/PipelineHelper.php @@ -161,6 +161,7 @@ class PipelineHelper { return $rval; } + } ?> \ No newline at end of file diff --git a/private/lib/dao/GenericDao.php b/private/lib/dao/GenericDao.php index 3578357..76ccaa6 100644 --- a/private/lib/dao/GenericDao.php +++ b/private/lib/dao/GenericDao.php @@ -246,6 +246,62 @@ class GenericDao{ // var_dump($resultArray); return $rval; } + + + /** + * Ritorna la lista dei notizia model ordinati per pertinenza + * @param string $searchStr + */ + public function search($modelClass, $searchWord, array $filter = array(), array $options = array()){ + 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'))); + + $sortArray = array('score' => array('$meta' => 'textScore')); + if (array_key_exists("sort",$options)){ + $sortArray = array_merge($sortArray,$options["sort"]); + } + $cursor->sort($sortArray); + if (array_key_exists("skip",$options)){ + $cursor->skip($options["skip"]); + } + if (array_key_exists("limit",$options)){ + $cursor->limit($options["limit"]); + } + + $rval = array(); + foreach ($cursor as $element){ + unset($element->score); + $rval[] = $modelClass::buildFromSaveableObj($element); + } + + return $rval; + + + } } ?> \ No newline at end of file diff --git a/private/lib/media/mediaRenderers/MediaYoutube.php b/private/lib/media/mediaRenderers/MediaYoutube.php index c6159c9..af851c5 100644 --- a/private/lib/media/mediaRenderers/MediaYoutube.php +++ b/private/lib/media/mediaRenderers/MediaYoutube.php @@ -9,8 +9,7 @@ class MediaYoutube extends MediaRenderer{ public function asText(array $opt = array()){ // return $this->link; - return ''; + return ''; // return ''; }