コード例 #1
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);
                 }
             }
         }
     }
 }
コード例 #2
0
 /**
  * Try to find (recursively) if there is a container where subfields must be reordered in the content type
  *
  * @param array $formArray
  * @param FieldType $fieldType
  */
 private function reorderFields(array $formArray, FieldType $fieldType)
 {
     if (array_key_exists('reorder', $formArray)) {
         $keys = array_keys($formArray);
         /** @var FieldType $child */
         foreach ($fieldType->getChildren() as $child) {
             if (!$child->getDeleted()) {
                 $child->setOrderKey(array_search('ems_' . $child->getName(), $keys));
             }
         }
         $this->addFlash('notice', 'Subfields in ' . $fieldType->getName() . ' has been prepared to be reordered');
         return true;
     } else {
         /** @var FieldType $child */
         foreach ($fieldType->getChildren() as $child) {
             if (!$child->getDeleted() && $this->reorderFields($formArray['ems_' . $child->getName()], $child)) {
                 return true;
             }
         }
     }
     return false;
 }
コード例 #3
0
 private function getMultipleField(FieldType $criteriaFieldType)
 {
     /**@var FieldType $criteria*/
     foreach ($criteriaFieldType->getChildren() as $criteria) {
         if (!$criteria->getDeleted()) {
             if ($criteria->getType() == ContainerFieldType::class) {
                 $out = $this->getMultipleField($criteria);
                 if ($out) {
                     return $out;
                 }
             } else {
                 if (isset($criteria->getDisplayOptions()['multiple']) && $criteria->getDisplayOptions()['multiple']) {
                     return $criteria->getName();
                 }
             }
         }
     }
     return false;
 }