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); }
/** * 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(); }
/** * @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; }
/** * 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(); } }
/** * @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; }
/** * @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())))); }