Ejemplo n.º 1
0
 /**
  * @return array
  */
 public function getColumns()
 {
     /*
      * @var ModuleInterface $module
      */
     //        $module = $this->_module;
     $module_id = $this->_module ? $this->_module->getId() : 0;
     $fields = $this->_em->getRepository('BigfishEavBundle:Module')->getFields($module_id);
     //        var_dump($fields);
     //        exit;
     $aFields = array();
     //        $i = 0;
     //        foreach ($fields as $object) {
     //
     //            $field = $object["field"];
     //
     //
     //            $column = $this->_columnManager->getColumn(ColumnMapperInterface::DB, $field["formType"]);
     //            $cast = $this->_columnManager->getCast($field["formType"]);
     //
     //
     //            if ($column) {
     //                $aFields[$i]['identifier'] = 'tv_'.$field["identifier"];
     //                $aFields[$i]['label'] = $field["name"];
     //                $aFields[$i]['field_id'] = $field["id"];
     //                $aFields[$i]['type'] = $field["formType"];
     //                $aFields[$i]['column'] = $column;
     //                $aFields[$i]['cast'] = $cast;
     //                $i++;
     //            }
     //        }
     $i = 0;
     foreach ($fields as $module) {
         foreach ($module->getModuleHasField() as $koppeling) {
             $field = $koppeling->getField();
             $moduleBelongsTo = $koppeling->getBelongsTo();
             $column = $this->_columnManager->getColumn(ColumnMapperInterface::DB, $field->getFormType());
             $cast = $this->_columnManager->getCast($field->getFormType());
             if ($column) {
                 $aFields[$i]['identifier'] = 'tv_' . $field->getIdentifier();
                 $aFields[$i]['label'] = $field->getName();
                 $aFields[$i]['field_id'] = $field->getId();
                 $aFields[$i]['translate'] = $field->getTranslate();
                 $aFields[$i]['type'] = $field->getFormType();
                 $aFields[$i]['column'] = $column;
                 $aFields[$i]['cast'] = $cast;
                 if ($moduleBelongsTo) {
                     $aFields[$i]['module_belongs_to'] = $moduleBelongsTo->getId();
                 } else {
                     $aFields[$i]['module_belongs_to'] = null;
                 }
                 ++$i;
             }
         }
     }
     return $aFields;
 }
Ejemplo n.º 2
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;
 }