/** * Search nodes sources by using Solr search engine * and a specific translation. * * @param string $query Solr query string (for example: `text:Lorem Ipsum`) * @param Translation $translation Current translation * * @return ArrayCollection | null */ public function findBySearchQueryAndTranslation($query, Translation $translation) { // Update Solr Serach engine if setup if (true === Kernel::getService('solr.ready')) { $service = Kernel::getService('solr'); $queryObj = $service->createSelect(); $queryObj->setQuery('collection_txt:' . $query); // create a filterquery $queryObj->createFilterQuery('translation')->setQuery('locale_s:' . $translation->getLocale()); $queryObj->addSort('score', $queryObj::SORT_DESC); // this executes the query and returns the result $resultset = $service->select($queryObj); if (0 === $resultset->getNumFound()) { return null; } else { $sources = new ArrayCollection(); foreach ($resultset as $document) { $sources->add($this->_em->find('RZ\\Roadiz\\Core\\Entities\\NodesSources', $document['node_source_id_i'])); } return $sources; } } return null; }
/** * @return void */ protected function installDefaultTranslation() { $existing = $this->entityManager->getRepository('RZ\\Roadiz\\Core\\Entities\\Translation')->findOneBy(['defaultTranslation' => true, 'available' => true]); if (null === $existing) { $translation = new Translation(); /* * Create a translation according to * current language */ if (null !== $this->request) { $translation->setLocale($this->request->getLocale()); } else { $translation->setLocale('en'); } $translation->setDefaultTranslation(true); $translation->setName(Translation::$availableLocales[$translation->getLocale()]); $translation->setAvailable(true); $this->entityManager->persist($translation); } }