/**
  * Will be executed when the search.search-event is triggered
  *
  * @param SearchEvent $event
  */
 public function onSearch(SearchEvent $event)
 {
     $ids = $event->getFoundIdsForClass('SumoCoders\\FrameworkUserBundle\\Entity\\User');
     /** @var \Symfony\Bundle\FrameworkBundle\Routing\Router $router */
     $router = $this->container->get('router');
     /** @var $userManager \SumoCoders\FrameworkUserBundle\Model\FrameworkUserManager */
     $userManager = $this->container->get('fos_user.user_manager');
     $users = $userManager->findActiveByIds($ids);
     if (!empty($users)) {
         foreach ($users as $user) {
             /** @var $user \SumoCoders\FrameworkUserBundle\Entity\User */
             $result = new SearchResult('SumoCoders\\FrameworkUserBundle\\Entity\\User', $user->getId(), 'users', $user->getUsername(), $router->generate('sumocoders_frameworkuser_user_edit', array('id' => $user->getId())));
             $event->addResult($result);
         }
     }
 }
 /**
  * Executes the real search
  */
 public function search()
 {
     // grab the ids and their number of occurence from the search index
     $idsAndWeightsPerClass = (array) $this->repository->search($this->term);
     // process the results, and sort them by weight/class
     $foundItems = array();
     foreach ($idsAndWeightsPerClass as $class => &$row) {
         arsort($row);
         $foundItems[$class] = array_keys($row);
     }
     // create the event, and add our findings
     $event = new SearchEvent();
     $event->setFoundItems($foundItems);
     $this->eventDispatcher->dispatch('framework_search.search', $event);
     // sort the results based on their weights
     $results = $event->getResults();
     return $this->sortResults($idsAndWeightsPerClass, $results);
 }