eZ\Publish\Core\FieldType\DateAndTime\Type::validateFieldSettings PHP Method

validateFieldSettings() public method

Validates the fieldSettings of a FieldDefinitionCreateStruct or FieldDefinitionUpdateStruct.
public validateFieldSettings ( mixed $fieldSettings ) : eZ\Publish\SPI\FieldType\ValidationError[]
$fieldSettings mixed
return eZ\Publish\SPI\FieldType\ValidationError[]
    public function validateFieldSettings($fieldSettings)
    {
        $validationErrors = [];
        foreach ($fieldSettings as $name => $value) {
            if (isset($this->settingsSchema[$name])) {
                switch ($name) {
                    case 'useSeconds':
                        if (!is_bool($value)) {
                            $validationErrors[] = new ValidationError("Setting 'Use seconds' value must be of boolean type", null, [], "[{$name}]");
                        }
                        break;
                    case 'defaultType':
                        $definedTypes = [self::DEFAULT_EMPTY, self::DEFAULT_CURRENT_DATE, self::DEFAULT_CURRENT_DATE_ADJUSTED];
                        if (!in_array($value, $definedTypes, true)) {
                            $validationErrors[] = new ValidationError("Setting 'Default value' is of unknown type", null, [], "[{$name}]");
                        }
                        break;
                    case 'dateInterval':
                        if (isset($value)) {
                            if ($value instanceof DateInterval) {
                                // String conversion of $value, because DateInterval objects cannot be compared directly
                                if (isset($fieldSettings['defaultType']) && $fieldSettings['defaultType'] !== self::DEFAULT_CURRENT_DATE_ADJUSTED && $value->format('%y%m%d%h%i%s') !== '000000') {
                                    $validationErrors[] = new ValidationError("Setting 'Current date and time adjusted by' can be used only when setting 'Default value' is set to 'Adjusted current datetime'", null, [], "[{$name}]");
                                }
                            } else {
                                $validationErrors[] = new ValidationError("Setting 'Current date and time adjusted by' value must be an instance of 'DateInterval' class", null, [], "[{$name}]");
                            }
                        }
                        break;
                }
            } else {
                $validationErrors[] = new ValidationError("Setting '%setting%' is unknown", null, ['%setting%' => $name], "[{$name}]");
            }
        }
        return $validationErrors;
    }