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;
}