value => [ 'strftime', 'option', 'appendAge', ], self::Int->value => [ 'base', ], self::Float->value => [ 'precision', ], self::Number->value => [ 'option', ], self::Filesize->value => [ 'appendByteSize', ], self::User->value => [ 'userFunc', ], ]; public static function fromTcaConfiguration(array $configuration): self { if (isset($configuration['config'])) { $configuration = $configuration['config']; } if (isset($configuration['format'])) { return match ($configuration['format']) { 'date' => self::Date, 'datetime' => self::Datetime, 'time' => self::Time, 'timesec' => self::Timesec, 'datetimesec' => self::Datetimesec, 'year' => self::Year, 'int' => self::Int, 'float' => self::Float, 'number' => self::Number, 'md5' => self::Md5, 'filesize' => self::Filesize, 'user' => self::User, default => throw new \UnexpectedValueException('Invalid format: ' . $configuration['format'], 1724744407), }; } return self::Undefined; } public function getFormatConfiguration(array $configuration): array { if (isset($configuration['config'])) { $configuration = $configuration['config']; } if (!isset(self::FORMAT_CONFIGURATION[$this->value]) || !is_array($configuration['format.'] ?? false) || $configuration['format.'] === [] ) { return []; } return array_filter($configuration['format.'], fn(string $option): bool => in_array($option, self::FORMAT_CONFIGURATION[$this->value], true), ARRAY_FILTER_USE_KEY); } }