1c3437056SNickeau<?php 2c3437056SNickeau 3c3437056SNickeau 4c3437056SNickeaunamespace ComboStrap; 5c3437056SNickeau 6c3437056SNickeau/** 7c3437056SNickeau * Class MetadataFormStore 8c3437056SNickeau * @package ComboStrap 9c3437056SNickeau * Represents a data array of a post from an HTML form 10c3437056SNickeau * ie formData 11c3437056SNickeau */ 12c3437056SNickeauclass MetadataFormDataStore extends MetadataSingleArrayStore 13c3437056SNickeau{ 14c3437056SNickeau 15c3437056SNickeau 16c3437056SNickeau public static function getOrCreateFromResource(ResourceCombo $resourceCombo, array $formData = []): MetadataStore 17c3437056SNickeau { 18c3437056SNickeau return new MetadataFormDataStore($resourceCombo, $formData); 19c3437056SNickeau } 20c3437056SNickeau 21c3437056SNickeau 22c3437056SNickeau public function get(Metadata $metadata, $default = null) 23c3437056SNickeau { 24c3437056SNickeau $this->checkResource($metadata->getResource()); 25*0e43c1dbSgerardnico 26*0e43c1dbSgerardnico $type = $metadata->getDataType(); 27*0e43c1dbSgerardnico switch ($type) { 28*0e43c1dbSgerardnico case DataType::TABULAR_TYPE_VALUE: 29*0e43c1dbSgerardnico /** 30*0e43c1dbSgerardnico * In a tabular, the children name are 31*0e43c1dbSgerardnico */ 32*0e43c1dbSgerardnico $value = null; 33*0e43c1dbSgerardnico foreach ($metadata->getChildrenObject() as $childrenObject) { 34*0e43c1dbSgerardnico $childrenValue = $this->data[$childrenObject::getName()]; 35*0e43c1dbSgerardnico if ($childrenValue !== null) { 36*0e43c1dbSgerardnico $value[$childrenObject::getPersistentName()] = $childrenValue; 37*0e43c1dbSgerardnico } 38*0e43c1dbSgerardnico } 39*0e43c1dbSgerardnico if ($value !== null) { 40*0e43c1dbSgerardnico return $value; 41*0e43c1dbSgerardnico } 42*0e43c1dbSgerardnico break; 43*0e43c1dbSgerardnico default: 44c3437056SNickeau /** 45c3437056SNickeau * In a form, the name is send, not the {@link Metadata::getPersistentName()} 46*0e43c1dbSgerardnico * but with the name 47c3437056SNickeau */ 48c3437056SNickeau $value = $this->data[$metadata::getName()]; 49c3437056SNickeau if ($value !== null) { 50c3437056SNickeau return $value; 51c3437056SNickeau } 52*0e43c1dbSgerardnico } 53*0e43c1dbSgerardnico 54c3437056SNickeau return $default; 55c3437056SNickeau } 56c3437056SNickeau 57c3437056SNickeau 58c3437056SNickeau} 59