Ejemplo n.º 1
0
 /**
  * @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);
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }
Ejemplo n.º 3
0
 /**
  * @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()))));
 }
Ejemplo n.º 4
0
 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;
     }
 }
Ejemplo n.º 5
0
 /**
  * @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;
 }