/** * @param string $websiteId * * @return \Cms\Data\Page[] */ private function getAllPages($websiteId) { $allPages = array(); $allIds = $this->service->getIdsByWebsiteId($websiteId); foreach ($allIds as $pageId) { $allPages[$pageId] = $this->service->getById($pageId, $websiteId); } return $allPages; }
/** * @param string $websiteId * @return string */ public function indexWebsite($websiteId) { $websiteService = new Website('Website'); if (!$websiteService->existsWebsiteAlready($websiteId)) { throw new CmsException('602', __METHOD__, __LINE__); } // Zum Rendern muss die Business-Schicht verwendet werden $renderBusiness = new BusinessRender('Render'); $modulService = new Modul('Modul'); $pageService = new Page('Page'); $allPageIds = $pageService->getIdsByWebsiteId($websiteId); $indexFileOfWebsite = $this->getIndexFileForWebsite($websiteId); if (is_array($allPageIds) && count($allPageIds) > 0) { if (file_exists($indexFileOfWebsite)) { $index = \Zend_Search_Lucene::open($indexFileOfWebsite); $numberOfIndexedDocuments = $index->numDocs(); for ($id = 0; $id < $numberOfIndexedDocuments; ++$id) { if (!$index->isDeleted($id)) { $document = $index->delete($id); } } } else { $index = \Zend_Search_Lucene::create($indexFileOfWebsite); } foreach ($allPageIds as $pageId) { $pageContent = $this->getPageContent($websiteId, $pageId); if ($this->isStoreContentEnabled()) { $document = \Zend_Search_Lucene_Document_Html::loadHTML($pageContent, true, 'UTF-8'); } else { $document = \Zend_Search_Lucene_Document_Html::loadHTML($pageContent, false, 'UTF-8'); } $document->addField(\Zend_Search_Lucene_Field::unIndexed('md5', md5($pageContent))); $document->addField(\Zend_Search_Lucene_Field::unIndexed('pageId', $pageId)); $index->addDocument($document); } $index->commit(); $index->optimize(); unset($index); } return $indexFileOfWebsite; }