예제 #1
0
 public function findByRelated(Context $context, Field $field, Module $module, Container $container)
 {
     $qb = $this->createQueryBuilder();
     $qb->addSelect('*');
     $qb->from($this->buildEavQuery($module), EavTables::CONTAINER_PREFIX)->join('BigfishEavBundle:Related', 'Related', 'ON', EavTables::CONTAINER_PREFIX . '.container_id = Related.to_container')->where($qb->expr()->eq(EavTables::CONTAINER_PREFIX . '.culture', ':culture'))->setParameter('culture', 'nl')->andwhere($qb->expr()->eq(EavTables::CONTAINER_PREFIX . '.module_id', ':module_id'))->setParameter('module_id', $module->getId())->andWhere($qb->expr()->eq('Related.from_container', ':container_id'))->setParameter('container_id', $container->getId())->andWhere($qb->expr()->isNull(EavTables::CONTAINER_PREFIX . '.deleted'))->andWhere($qb->expr()->eq('Related.field_id', ':field_id'))->setParameter('field_id', $field->getId())->orderBy(EavTables::CONTAINER_PREFIX . '.sequence', 'ASC');
     $qb->orderBy(EavTables::CONTAINER_PREFIX . '.sequence', 'ASC');
     $result = $qb->getQuery()->getResult();
     return $result;
 }
 public function testCreate()
 {
     $aGetFields = $this->getFields();
     $module = $this->em->getRepository('BigfishEavBundle:Module')->find(1);
     $aContent = array();
     foreach ($aGetFields as $field) {
         $aContent[$field['identifier']] = $field['testData'];
     }
     $object = $this->container->get('eav.module.manager');
     $object->setModule($module);
     $container = new Container();
     $container->setModule($module);
     $container->setSequence(999);
     $this->em->persist($container);
     $this->em->flush();
     $container = $object->save($container, $aContent);
     $this->assertNotNull($container);
     $this->assertNotNull($module);
 }
예제 #3
0
 /**
  * createModuleData.
  */
 public function createModuleData()
 {
     $aFields = $this->getFields();
     $aContent = array();
     foreach ($aFields as $field) {
         $aContent[$field['identifier']] = $field['testData'];
     }
     $oModule = new Module();
     $oModule->setName('Test Module');
     $oModule->setDescription('test');
     $sequence = 0;
     foreach ($aFields as $field) {
         $oField = new Field();
         $oField->setName($field['name']);
         $oField->setFormType($field['form']);
         $oField->setIdentifier($field['identifier']);
         $this->em->persist($oField);
         $oModuleHasField = new ModuleHasField();
         $oModuleHasField->setField($oField);
         $oModuleHasField->setModule($oModule);
         $oModuleHasField->setSequence($sequence);
         $this->em->persist($oModuleHasField);
         ++$sequence;
     }
     $this->em->flush();
     for ($i = 0; $i < $this->rows; ++$i) {
         $container = new Container();
         $container->setModule($oModule);
         $container->setSequence(999);
         $this->em->persist($container);
         $this->em->flush();
         $this->container->enterScope('request');
         $this->container->set('request', new Request(), 'request');
         $object = $this->container->get('eav.module.manager');
         $object->setModule($oModule);
         $object->save($container, $aContent);
     }
     $this->em->clear();
 }
예제 #4
0
 /**
  * @param PersisterObjectInterface $object
  * @param ModuleInterface          $module
  *
  * @return Container|mixed
  */
 public function loadModel(ModuleInterface $module, Context $context, PersisterObjectInterface $object = null)
 {
     $container = null;
     if ($object) {
         // find container
         $container = $this->objectManager->getRepository('BigfishEavBundle:Container')->findOneBy(array('id' => $object->getId(), 'module' => $module->getId(), 'context' => $context->getId()));
     }
     // if container is not found, create one
     if (!$container) {
         $container = new Container();
         $container->setDeleted(new \DateTime());
         $container->setExpireTemporaryDate(new \DateTime('+ 3 hour'));
         $container->setModule($module);
         $container->setContext($context);
         $this->objectManager->persist($container);
         return $container;
     }
     return $container;
 }
예제 #5
0
 /**
  * Remove all related containers.
  *
  * @param Container $container
  * @param Field     $field
  */
 public function removeRelatedContainers(Container $container, Field $field)
 {
     $findRelated = $this->getEntityManager()->getRepository('BigfishEavBundle:Related')->findBy(array('field' => $field, 'fromContainer' => $container->getId()));
     $flush = false;
     foreach ($findRelated as $delete) {
         $this->getEntityManager()->remove($delete);
         $flush = true;
     }
     if ($flush) {
         $this->getEntityManager()->flush();
     }
 }
예제 #6
0
 /**
  * @param Module    $module
  * @param Container $container
  * @param array     $data
  *
  * @return Container
  */
 public function save(Container $container = null, array $data)
 {
     if (null == $this->module) {
         throw new \Exception('First set a module');
     }
     if (!$container) {
         $container = new Container();
         $container->setModule($this->module);
         $container->setSequence(1);
         $this->em->persist($container);
     }
     foreach ($data as $input => $value) {
         $field = $this->em->getRepository('BigfishEavBundle:Field')->findOneBy(array('identifier' => $input));
         if (!$field) {
             continue;
         }
         if ($field->getTranslate()) {
             $content = $this->em->getRepository('BigfishEavBundle:Content')->findOneBy(array('field' => $field, 'container' => $container, 'language' => $this->language));
         } else {
             $content = $this->em->getRepository('BigfishEavBundle:Content')->findOneBy(array('field' => $field, 'container' => $container));
         }
         if ($field) {
             if (!$content) {
                 $content = new Content();
                 $content->setContainer($container);
                 $content->setField($field);
             }
             if ($this->columnMapper->getColumn(ColumnMapperInterface::SETTER, $field->getFormType())) {
                 $column = $this->columnMapper->getColumn(ColumnMapperInterface::SETTER, $field->getFormType());
                 $content->{$column}($value);
             }
             // if field has to be translated
             if ($field->getTranslate()) {
                 $content->setLanguage($this->language);
             }
             $this->em->persist($content);
             $this->em->flush();
             // execute event when exists
             if ($field->getEvent()) {
                 $event = new FieldEvent($container, $field, $this->language, $value, $content);
                 $this->eventDispatcher->dispatch($field->getEvent(), $event);
             }
         }
     }
     return $container;
 }
예제 #7
0
 /**
  * @param Resource $resource
  * @param Module $module
  * @return Container
  */
 public function loadModel(ModuleInterface $module, PersisterObjectInterface $object = null)
 {
     $context = $this->contextLanguageMediator->getContextManager()->getContext();
     // find container
     $container = $this->objectManager->getRepository("BigfishEavBundle:Container")->findOneByResource($object->getId(), $module->getId(), $context->getId());
     // if container is not found, create one
     if (!$container) {
         $container = new Container();
         $container->setContext($context);
         $container->setResource($object);
         $container->setModule($module);
         $this->objectManager->persist($container);
         return $container;
     }
     return $container;
 }
 /**
  * @Route("/module/grid/item/delete/{module}/{container}/{fromField}/{fromContainer}", name="module_grid_item_delete")
  */
 public function deleteAction(Request $request, Module $module, Container $container, Field $fromField, Container $fromContainer)
 {
     $form = $this->createForm(new DeleteContainerType($container, $module));
     if ($this->formHandler->handleDelete($form, $request, $container)) {
         $url = $this->generateUrl('module_grid_item_index', array('container' => $container->getId(), 'module' => $module->getId(), 'fromField' => $fromField->getId(), 'fromContainer' => $fromContainer->getId()));
         return new JsonResponse(array('success' => true, 'url' => $url));
     }
     return $this->render('BigfishEavBundle:Default:delete.html.twig', array('form' => $form->createView(), 'actionUrl' => $this->generateUrl('module_grid_item_delete', array('container' => $container->getId(), 'module' => $module->getId(), 'fromField' => $fromField->getId(), 'fromContainer' => $fromContainer->getId()))));
 }