1c3437056SNickeau<?php 2c3437056SNickeau 3c3437056SNickeau 4c3437056SNickeaunamespace ComboStrap; 5c3437056SNickeau 604fd306cSNickeauuse ComboStrap\Meta\Api\Metadata; 704fd306cSNickeauuse ComboStrap\Meta\Api\MetadataStore; 804fd306cSNickeau 9c3437056SNickeau/** 10c3437056SNickeau * Class MetadataFormStore 11c3437056SNickeau * @package ComboStrap 12c3437056SNickeau * Represents a data array of a post from an HTML form 13c3437056SNickeau * ie formData 14c3437056SNickeau */ 15c3437056SNickeauclass MetadataFormDataStore extends MetadataSingleArrayStore 16c3437056SNickeau{ 17c3437056SNickeau 18c3437056SNickeau 19c3437056SNickeau public static function getOrCreateFromResource(ResourceCombo $resourceCombo, array $formData = []): MetadataStore 20c3437056SNickeau { 21c3437056SNickeau return new MetadataFormDataStore($resourceCombo, $formData); 22c3437056SNickeau } 23c3437056SNickeau 24c3437056SNickeau 25c3437056SNickeau public function get(Metadata $metadata, $default = null) 26c3437056SNickeau { 27c3437056SNickeau $this->checkResource($metadata->getResource()); 280e43c1dbSgerardnico 290e43c1dbSgerardnico $type = $metadata->getDataType(); 300e43c1dbSgerardnico switch ($type) { 310e43c1dbSgerardnico case DataType::TABULAR_TYPE_VALUE: 320e43c1dbSgerardnico /** 330e43c1dbSgerardnico * In a tabular, the children name are 340e43c1dbSgerardnico */ 350e43c1dbSgerardnico $value = null; 360e43c1dbSgerardnico foreach ($metadata->getChildrenObject() as $childrenObject) { 370e43c1dbSgerardnico $childrenValue = $this->data[$childrenObject::getName()]; 380e43c1dbSgerardnico if ($childrenValue !== null) { 390e43c1dbSgerardnico $value[$childrenObject::getPersistentName()] = $childrenValue; 400e43c1dbSgerardnico } 410e43c1dbSgerardnico } 420e43c1dbSgerardnico if ($value !== null) { 430e43c1dbSgerardnico return $value; 440e43c1dbSgerardnico } 450e43c1dbSgerardnico break; 460e43c1dbSgerardnico default: 47c3437056SNickeau /** 48c3437056SNickeau * In a form, the name is send, not the {@link Metadata::getPersistentName()} 490e43c1dbSgerardnico * but with the name 50c3437056SNickeau */ 51*70bbd7f1Sgerardnico $value = $this->data[$metadata::getName()] ?? null; 52c3437056SNickeau if ($value !== null) { 53c3437056SNickeau return $value; 54c3437056SNickeau } 550e43c1dbSgerardnico } 560e43c1dbSgerardnico 57c3437056SNickeau return $default; 58c3437056SNickeau } 59c3437056SNickeau 6004fd306cSNickeau public function isHierarchicalTextBased(): bool 6104fd306cSNickeau { 6204fd306cSNickeau /** 6304fd306cSNickeau * It's a list of field that is not hiearchical 6404fd306cSNickeau */ 6504fd306cSNickeau return false; 6604fd306cSNickeau } 67c3437056SNickeau 68c3437056SNickeau} 69