Example #1
0
 /**
  * @param HitEvent $event
  */
 public function onHit(HitEvent $event)
 {
     if ($event->getMetadata()->reflection->getName() !== 'Sulu\\Bundle\\EventBundle\\Entity\\Event') {
         return;
     }
     $locale = $this->requestAnalyzer->getCurrentLocalization()->getLocalization();
     $document = $event->getHit()->getDocument();
     $eventApiEntity = $this->eventManager->findByIdAndLocale($document->getId(), $locale);
     if (!$eventApiEntity) {
         return;
     }
     $startDate = $eventApiEntity->getStartDate();
     $endDate = $eventApiEntity->getEndDate();
     $categories = $eventApiEntity->getCategories();
     $categoryTitles = array();
     foreach ($categories as $category) {
         $categoryTitles[] = $category->getName();
     }
     $startDateField = new Field('start_date', $startDate->format('c'), Field::TYPE_STRING);
     $document->addField($startDateField);
     if ($endDate) {
         $endDateField = new Field('end_date', $endDate->format('c'), Field::TYPE_STRING);
         $document->addField($endDateField);
     }
     $categoryTitleField = new Field('category_title', implode(', ', $categoryTitles), Field::TYPE_STRING);
     $document->addField($categoryTitleField);
     $url = $this->router->generate('sulu_events.detail', array('id' => $eventApiEntity->getId(), 'slug' => $eventApiEntity->getSlug()));
     $document->setUrl($url);
 }
Example #2
0
 /**
  * Prefix url of document with current resourcelocator prefix.
  *
  * @param HitEvent $event
  */
 public function onHit(HitEvent $event)
 {
     if (false === $event->getMetadata()->reflection->isSubclassOf('Sulu\\Bundle\\ContentBundle\\Document\\BasePageDocument')) {
         return;
     }
     $document = $event->getHit()->getDocument();
     $url = sprintf('%s/%s', rtrim($this->requestAnalyzer->getResourceLocatorPrefix(), '/'), ltrim($document->getUrl(), '/'));
     $document->setUrl($url);
 }
 /**
  * Map the changer and created from the field data to
  * the search document (we don't include the field data in the search result API).
  *
  * @param HitEvent $event
  */
 public function handleBlameTimestampHitMapping(HitEvent $event)
 {
     $document = $event->getHit()->getDocument();
     $this->doHandleBlameTimestampHitMapping($document);
 }