public function execute($request) { if (!isset($request->limit)) { $request->limit = sfConfig::get('app_hits_per_page'); } $this->resource = $this->getRoute()->resource; // Check that this isn't the root if (!isset($this->resource->parent)) { $this->forward404(); } $search = new QubitSearch(); $query = new Zend_Search_Lucene_Search_Query_Boolean(); $query->addSubquery(new Zend_Search_Lucene_Search_Query_Term(new Zend_Search_Lucene_Index_Term($this->resource->id, 'parentId')), true); if (isset($request->query)) { $query = $request->query; } $query = QubitAcl::searchFilterByRepository($query, 'read'); $query = QubitAcl::searchFilterDrafts($query); $this->pager = new QubitArrayPager(); $this->pager->hits = $search->getEngine()->getIndex()->find($query); $this->pager->setMaxPerPage($request->limit); $this->pager->setPage($request->page); $ids = array(); foreach ($this->pager->getResults() as $hit) { $ids[] = $hit->getDocument()->id; } $criteria = new Criteria(); $criteria->add(QubitInformationObject::ID, $ids, Criteria::IN); $this->informationObjects = QubitInformationObject::get($criteria); }
/** * Delete an existing document from the index * * @param integer $id object identifier * @param string $language ISO-639-1 code * @return void */ public static function deleteByIdLanguage($id, $language) { // have to use another search object to perform the querying $querier = new QubitSearch(); $query = new Zend_Search_Lucene_Search_Query_MultiTerm(); $query->addTerm(new Zend_Search_Lucene_Index_Term($id, 'id'), true); $query->addTerm(new Zend_Search_Lucene_Index_Term($language, 'culture'), true); foreach ($querier->getEngine()->getIndex()->find($query) as $hit) { self::getInstance()->getEngine()->getIndex()->delete($hit->id); } }