/** * @param CarewEvent $event */ public function onIndexes(CarewEvent $event) { /** @var array|Document[] $index */ $indexes = $event->getSubject(); $docs = $this->getDocumentsFromIndexes($indexes); foreach ($docs as $doc) { $data = $doc->getMetadatas(); if (isset($data['author'])) { $author = $this->authors->getAuthor($data['author']); $author->addDocument($doc); $data['author'] = $author; $doc->setMetadatas($data); } } $authorsEvent = new CarewEvent(array()); $event->getDispatcher()->dispatch(AuthorEvents::AUTHORS, $authorsEvent); $event->setSubject(array_merge($indexes, $authorsEvent->getSubject())); }