/**
  * Test the getters and setters
  */
 public function testGettersAndSetters()
 {
     $this->indexItem = new IndexItem($this->defaultData['objectType'], $this->defaultData['otherId'], $this->defaultData['field'], $this->defaultData['value']);
     $this->assertEquals($this->defaultData['objectType'], $this->indexItem->getObjectType());
     $this->assertEquals($this->defaultData['otherId'], $this->indexItem->getOtherId());
     $this->assertEquals($this->defaultData['field'], $this->indexItem->getField());
     $this->assertEquals($this->defaultData['value'], $this->indexItem->getValue());
 }
 public function testCreateMultipleObjectsBasedOnPropertiesFromObject()
 {
     $properties = array('name' => 'John', 'surname' => 'Doe');
     $object = new Person('John', 'Doe');
     $indexItems = IndexItem::createMultipleObjectsBasedOnProperties($this->defaultData['objectType'], $this->defaultData['otherId'], array_keys($properties), $object);
     foreach ($indexItems as $index) {
         /** @var SumoCoders\FrameworkSearchBundle\Entity\IndexItem $index*/
         $this->assertInstanceOf('\\SumoCoders\\FrameworkSearchBundle\\Entity\\IndexItem', $index);
         $this->assertEquals($properties[$index->getField()], $index->getValue());
     }
 }
 /**
  * Edit a user
  *
  * @Route("/{id}/edit", requirements={"id"= "\d+"})
  * @Method({"GET|POST"})
  * @Template()
  *
  * @param Request $request
  * @param int     $id
  * @return array
  */
 public function editAction(Request $request, $id)
 {
     // fix the breadCrumb
     $this->get('framework.breadcrumb_builder')->extractItemsBasedOnUri($this->generateUrl('sumocoders_frameworkuser_user_index'), $request->getLocale())->addSimpleItem('user.breadcrumb.edit', $this->generateUrl('sumocoders_frameworkuser_user_edit', array('id' => $id)));
     $csrfProvider = $this->get('security.csrf.token_manager');
     /** @var \Symfony\Component\HttpFoundation\Session\Session $session */
     $session = $this->get('session');
     /** @var \Symfony\Bundle\FrameworkBundle\Translation\Translator $translator */
     $translator = $this->get('translator');
     /** @var \SumoCoders\FrameworkUserBundle\Model\FrameworkUserManager $userManager */
     $userManager = $this->container->get('fos_user.user_manager');
     /** @var \SumoCoders\FrameworkUserBundle\Entity\User $user */
     $user = $userManager->findUserBy(array('id' => $id));
     /** @var \SumoCoders\FrameworkUserBundle\Entity\User $currentUser */
     $currentUser = $this->get('security.context')->getToken()->getUser();
     // validate the user
     if (!$user) {
         throw new NotFoundHttpException($translator->trans('core.errors.notFound'));
     }
     // if the current user is editing itself it should see the password field
     if ($currentUser->getId() == $user->getId()) {
         $type = new OwnUserType('\\SumoCoders\\FrameworkUserBundle\\Entity\\User');
     } else {
         $type = new OtherUserType('\\SumoCoders\\FrameworkUserBundle\\Entity\\User');
     }
     $form = $this->createForm($type, $user);
     $form->add('roles', 'choice', array('choices' => $this->getExistingRoles(), 'data' => $user->getRoles(), 'label' => 'Roles', 'expanded' => true, 'multiple' => true));
     $form->handleRequest($request);
     if ($form->isValid()) {
         $user = $form->getData();
         $userManager->updateUser($user);
         if (array_key_exists('SumoCodersFrameworkSearchBundle', $this->container->getParameter('kernel.bundles'))) {
             $searchIndexItems = \SumoCoders\FrameworkSearchBundle\Entity\IndexItem::createMultipleObjectsBasedOnProperties('SumoCoders\\FrameworkUserBundle\\Entity\\User', $user->getId(), array('username', 'email'), $user);
             $event = new \SumoCoders\FrameworkSearchBundle\Event\IndexUpdateEvent();
             $event->setObjects($searchIndexItems);
             $this->get('event_dispatcher')->dispatch('framework_search.index_update', $event);
         }
         $session->getFlashBag()->add('success', $translator->trans('user.flash.success.edit', array('%username%' => $user->getUsername())));
         return $this->redirect($this->generateUrl('sumocoders_frameworkuser_user_index'));
     }
     if ($user->isEnabled()) {
         $blockUnblockForm = $this->createBlockUnblockForm($user, 'block');
     } else {
         $blockUnblockForm = $this->createBlockUnblockForm($user, 'unblock');
     }
     return array('form' => $form->createView(), 'token' => $csrfProvider->generateCsrfToken('block_unblock'), 'user' => $user, 'form_block_unblock' => $blockUnblockForm->createView());
 }