56 lines
1.7 KiB
PHP
56 lines
1.7 KiB
PHP
<?php declare(strict_types = 1);
|
|
|
|
namespace MailPoet\Validator\Schema;
|
|
|
|
if (!defined('ABSPATH')) exit;
|
|
|
|
|
|
use MailPoet\Validator\Schema;
|
|
|
|
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#objects
|
|
class ObjectSchema extends Schema {
|
|
protected $schema = [
|
|
'type' => 'object',
|
|
];
|
|
|
|
/** @param array<string, Schema> $properties */
|
|
public function properties(array $properties): self {
|
|
return $this->updateSchemaProperty('properties', array_map(
|
|
function (Schema $property) {
|
|
return $property->toArray();
|
|
},
|
|
$properties
|
|
));
|
|
}
|
|
|
|
public function additionalProperties(Schema $schema): self {
|
|
return $this->updateSchemaProperty('additionalProperties', $schema->toArray());
|
|
}
|
|
|
|
public function disableAdditionalProperties(): self {
|
|
return $this->updateSchemaProperty('additionalProperties', false);
|
|
}
|
|
|
|
/**
|
|
* Keys of $properties are regular expressions without leading/trailing delimiters.
|
|
* See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#patternproperties
|
|
*
|
|
* @param array<string, Schema> $properties
|
|
*/
|
|
public function patternProperties(array $properties): self {
|
|
$patternProperties = [];
|
|
foreach ($properties as $key => $value) {
|
|
$this->validatePattern($key);
|
|
$patternProperties[$key] = $value->toArray();
|
|
}
|
|
return $this->updateSchemaProperty('patternProperties', $patternProperties);
|
|
}
|
|
|
|
public function minProperties(int $value): self {
|
|
return $this->updateSchemaProperty('minProperties', $value);
|
|
}
|
|
|
|
public function maxProperties(int $value): self {
|
|
return $this->updateSchemaProperty('maxProperties', $value);
|
|
}
|
|
}
|