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