コード例 #1
0
 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);
         }
     }
 }
コード例 #2
0
 /**
  *
  * {@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()];
 }
コード例 #3
0
ファイル: DataField.php プロジェクト: theus77/ElasticMS
 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);
                 }
             }
         }
     }
 }
コード例 #4
0
ファイル: DataService.php プロジェクト: theus77/ElasticMS
 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);
     }
 }