function __construct(View $view, Session $session) { $this->session = $session; $this->criterion = []; $contentType = $view->getContentType(); $rootFieldType = $contentType->getFieldType(); if (!empty($view->getOptions()['categoryFieldPath']) && ($categoryField = $rootFieldType->getChildByPath($view->getOptions()['categoryFieldPath']))) { $dataField = new DataField(); $dataField->setFieldType($categoryField); $this->setCategory($dataField); } $criteriaField = $rootFieldType; if ($view->getOptions()['criteriaMode'] == 'internal') { $criteriaField = $rootFieldType->__get('ems_' . $view->getOptions()['criteriaField']); } else { if ($view->getOptions()['criteriaMode'] == 'another') { } else { throw new \Exception('Should never happen'); } } $fieldPaths = preg_split("/\\r\\n|\\r|\\n/", $view->getOptions()['criteriaFieldPaths']); foreach ($fieldPaths as $path) { $child = $criteriaField->getChildByPath($path); if ($child) { $dataField = new DataField(); $dataField->setFieldType($child); $this->criterion[$child->getName()] = $dataField; } else { $this->session->getFlashBag()->add('warning', 'Field path not found ' . $path); } } }
/** * * {@inheritdoc} * */ public function importData(DataField $dataField, $sourceArray, $isMigration) { $migrationOptions = $dataField->getFieldType()->getMigrationOptions(); if (!$isMigration || empty($migrationOptions) || !$migrationOptions['protected']) { if (!is_array($sourceArray)) { $sourceArray = [$sourceArray]; } foreach ($sourceArray as $idx => $item) { $colItem = new DataField(); $colItem->setOrderKey($idx); $colItem->setFieldType(NULL); // it's a collection item foreach ($dataField->getFieldType()->getChildren() as $childFieldType) { /**@var FieldType $childFieldType */ if (!$childFieldType->getDeleted()) { $grandChild = new DataField(); $grandChild->setOrderKey(0); $grandChild->setParent($colItem); $grandChild->setFieldType($childFieldType); $grandChild->updateDataStructure($childFieldType); $grandChild->updateDataValue($item, $isMigration); $colItem->addChild($grandChild); } } $dataField->addChild($colItem); $colItem->setParent($dataField); } } return [$dataField->getFieldType()->getName()]; }
public function updateDataStructure(FieldType $meta) { //no need to generate the structure for subfields ( $isContainer = true; if (null !== $this->getFieldType()) { $type = $this->getFieldType()->getType(); $datFieldType = new $type(); $isContainer = $datFieldType->isContainer(); } if ($isContainer) { /** @var FieldType $field */ foreach ($meta->getChildren() as $field) { //no need to generate the structure for delete field if (!$field->getDeleted()) { $child = $this->__get('ems_' . $field->getName()); if (null == $child) { $child = new DataField(); $child->setFieldType($field); $child->setOrderKey($field->getOrderKey()); $child->setParent($this); $this->addChild($child); if (isset($field->getDisplayOptions()['defaultValue'])) { $child->setEncodedText($field->getDisplayOptions()['defaultValue']); } } if (strcmp($field->getType(), CollectionFieldType::class) != 0) { $child->updateDataStructure($field); } } } } }
public function loadDataStructure(Revision $revision) { $data = new DataField(); $data->setFieldType($revision->getContentType()->getFieldType()); $data->setOrderKey($revision->getContentType()->getFieldType()->getOrderKey()); $revision->setDataField($data); $revision->getDataField()->updateDataStructure($revision->getContentType()->getFieldType()); $object = $revision->getRawData(); $data->updateDataValue($object); if (count($object) > 0) { $html = DataService::arrayToHtml($object); $this->session->getFlashBag()->add('warning', "Some data of this revision were not consumed by the content type:" . $html); } }