conf = $conf; $this->recordHelper = $recordHelper; $this->options = $options; $this->app = $app; $this->structureKey = $structureKey; $this->thesaurusKey = $thesaurusKey; $this->populatePermalinks = $conf->get(['main', 'search-engine', 'options', 'populate_permalinks'], false) ; } /** * @param \databox $databox * @param FetcherDelegateInterface $fetcherDelegate * @return Fetcher */ public function createFetcher(\databox $databox, FetcherDelegateInterface $fetcherDelegate = null) { $connection = $databox->get_connection(); $candidateTerms = new CandidateTerms($databox); $fetcher = new Fetcher( $databox, $this->options, [ new CoreHydrator($databox->get_sbas_id(), $databox->get_viewname(), $this->recordHelper), new TitleHydrator($connection, $this->recordHelper), new MetadataHydrator($this->conf, $connection, $this->getStructure(), $this->recordHelper), new FlagHydrator($this->getStructure(), $databox), new ThesaurusHydrator($this->getStructure(), $this->getThesaurus(), $candidateTerms), new SubDefinitionHydrator($this->app, $databox, $this->populatePermalinks) ], $fetcherDelegate ); $fetcher->setBatchSize(200); $fetcher->onDrain(function() use ($candidateTerms) { $candidateTerms->save(); }); return $fetcher; } /** * @return Structure */ private function getStructure() { return $this->app[$this->structureKey]; } /** * @return Thesaurus */ private function getThesaurus() { return $this->app[$this->thesaurusKey]; } }