Copy Validator to email-editor package
Because the email-editor package should be independent. We copy Validator to the package, at least for now. [MAILPOET-6216]
This commit is contained in:
@ -0,0 +1,37 @@
|
||||
<?php declare(strict_types = 1);
|
||||
|
||||
namespace MailPoet\EmailEditor\Validator\Schema;
|
||||
|
||||
use MailPoet\EmailEditor\Validator\Schema;
|
||||
|
||||
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#oneof-and-anyof
|
||||
class AnyOfSchema extends Schema {
|
||||
protected $schema = [
|
||||
'anyOf' => [],
|
||||
];
|
||||
|
||||
/** @param Schema[] $schemas */
|
||||
public function __construct(
|
||||
array $schemas
|
||||
) {
|
||||
foreach ($schemas as $schema) {
|
||||
$this->schema['anyOf'][] = $schema->toArray();
|
||||
}
|
||||
}
|
||||
|
||||
public function nullable(): self {
|
||||
$null = ['type' => 'null'];
|
||||
$anyOf = $this->schema['anyOf'];
|
||||
$value = in_array($null, $anyOf, true) ? $anyOf : array_merge($anyOf, [$null]);
|
||||
return $this->updateSchemaProperty('anyOf', $value);
|
||||
}
|
||||
|
||||
public function nonNullable(): self {
|
||||
$null = ['type' => 'null'];
|
||||
$anyOf = $this->schema['anyOf'];
|
||||
$value = array_filter($anyOf, function ($item) use ($null) {
|
||||
return $item !== $null;
|
||||
});
|
||||
return $this->updateSchemaProperty('anyOf', $value);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user