/**
  *
  * {@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()];
 }
Example #2
0
 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);
                 }
             }
         }
     }
 }
Example #3
0
 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);
     }
 }