/** * @param Module $module * @param Container $container * * @return array */ public function find(Container $container) { if (null == $this->module) { throw new \Exception('First set a module'); } $data = $this->em->getRepository('BigfishEavBundle:Container')->getFormData($container->getId(), $this->module->getId(), $this->language); return $this->columnMapper->map($data); }
/** * Generate new table and fill it with data. * * @param Module $module * @param bool $force * * @return Module */ public function generate(Module $module, $force = false) { $this->module = $module; $this->eavColumns->setModule($module); if (!$force) { $flatIsGenerated = $this->module->getFlatIsGenerated(); $generateFlat = $this->module->getGenerateFlat(); if (!empty($flatIsGenerated) || !$generateFlat) { return; } } $moduleId = $this->module->getId(); $tableName = '_flat_module_' . $moduleId; $this->createTable($tableName); $this->fillTable($tableName); $this->module->setFlatIsGenerated(new \DateTime('now')); $this->objectManager->persist($this->module); $this->objectManager->flush(); return $this->module; }
/** * {@inheritDoc} */ public function load(ObjectManager $manager) { /** * Create module "employees". */ $module = new Module(); $module->setCategory($this->getReference('category-module')); $module->setName('Employees'); $module->setDescription('This is an automatic generated example.'); $module->setGenerateFlat(true); $manager->persist($module); $manager->flush(); $this->addReference('module-employees', $module); $configuration = new Configuration(); $configuration->setActive(true); $configuration->setClassName(get_class($module)); $configuration->setIdentifier("grid_fields"); $configuration->setDeleted(false); $configuration->setData(array("tv_title")); $configuration->setClassPropertyValue($module->getId()); $manager->persist($configuration); $manager->flush(); }
/** * 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 Request $request * @param Module $module * @param Container $container * * @return JsonResponse|\Symfony\Component\HttpFoundation\Response */ public function deleteAction(Request $request, Module $module, Container $container) { $form = $this->createForm(new DeleteContainerType($container, $module)); if ($this->formHandler->handleDelete($form, $request, $container)) { $url = $this->generateUrl('module_item_index', array('module' => $module->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_item_delete', array('module' => $module->getId(), 'container' => $container->getId())))); }
public function buildEavQuery(\Bigfish\Bundle\EavBundle\Entity\Module $module, $skipFlat = false) { if ($module && $module->getFlatIsGenerated() && $module->getGenerateFlat() && !$skipFlat) { return '_flat_module_' . $module->getId(); } $unions = array(); $languages = $this->languageManager->getLanguages(); foreach ($languages as $lang) { $qb = $this->createQueryBuilder(); $qb->addSelect('_container.*'); $qb->addSelect('"' . $lang . '" as culture'); $qb->addSelect($this->getInvokeColumns()->setModule($module)->setLanguage($lang)->getSql()); $qb->from('eav_container', EavTables::CONTAINER_PREFIX); if ($module) { $qb->where($qb->expr()->eq(EavTables::CONTAINER_PREFIX . '.module_id', ':module_id')); } $unions[] = $qb->getSQL(); } if (count($unions) > 0) { $sql = implode(' UNION ', $unions); return '( ' . $sql . ' ) '; } else { return; } }
/** * @param Module $module * @param array $options * * @return \Symfony\Component\Form\FormBuilderInterface */ public function createFormBuilder(Module $module, array $options = array(), $formOptions = array(), FormBuilderInterface $parentForm = null) { $modules = $this->objectManager->getRepository('BigfishEavBundle:Module')->getFields($module->getId()); $formOptions = array_merge_recursive($formOptions, array('cascade_validation' => true, 'error_bubbling' => true, 'required' => true)); // build new form /** @var $formBuilder \Symfony\Component\Form\FormBuilder **/ $formBuilder = $parentForm ? $parentForm : $this->formFactory->createBuilder('form', null, $formOptions); $prepareBuilder = array(); $sortedFields = array(); foreach ($modules as $module) { foreach ($module->getField() as $field) { $formData = $this->fieldChain->getField($field, $module, $options); if ($formData) { $contstraints = $this->constraintChain->getConstraints($field->getConstraints()); $required = false; foreach ($contstraints as $constraint) { if ($constraint instanceof NotBlank) { $required = true; } } $formData['formAttributes']['constraints'] = $contstraints; $formData['formAttributes']['required'] = $required; $sortedFields[] = $formData['identifier']; $formBuilder->add($formData['identifier'], $formData['formType'], $formData['formAttributes']); } } } foreach ($formBuilder->all() as $builder) { $type = $builder->getType()->getName(); if ($type == 'fieldset') { // var_dump($builder->getType()); $options = $builder->getOptions(); $aChildFields = $options['childFields']; // remove unused childs and maintain order $newFields = array_filter($sortedFields, function ($key) use($aChildFields) { return in_array($key, $aChildFields); }); $subForm = array(); foreach ($newFields as $childField) { if ($formBuilder->has($childField)) { if (($key = array_search($childField, $sortedFields)) !== false) { unset($sortedFields[$key]); } // echo "<hr>"; // var_dump($formBuilder->get($childField)->getName()); // var_dump($formBuilder->get($childField)->getRequired()); // echo "</hr>"; $field = $formBuilder->get($childField); $subForm[] = $field; $formBuilder->remove($childField); } } $elem = $formBuilder->get($builder->getName()); $formBuilder->remove($builder->getName()); $formBuilder->add($elem->getName(), $type, array('subforms' => $subForm, 'label' => false, 'required' => false, 'mapped' => false, 'title' => $elem->getOption('title'), 'description' => $elem->getOption('description'), 'fieldsetId' => $elem->getOption('fieldsetId'))); } } $this->reorder($formBuilder, $sortedFields); // rebuild form foreach ($formBuilder->all() as $element) { if ($formBuilder->has($element->getName())) { $holdElement = $formBuilder->get($element->getName()); $formBuilder->remove($element->getName()); $formBuilder->add($holdElement); foreach ($holdElement->all() as $child) { if ($element->has($child->getName())) { $formBuilder->add($element->get($child->getName())); $element->remove($child->getName()); } } } } return $formBuilder; }