diff options
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/src/Schema/SchemaValidator.php')
-rw-r--r-- | www/wiki/extensions/SemanticMediaWiki/src/Schema/SchemaValidator.php | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/src/Schema/SchemaValidator.php b/www/wiki/extensions/SemanticMediaWiki/src/Schema/SchemaValidator.php new file mode 100644 index 00000000..a37094f8 --- /dev/null +++ b/www/wiki/extensions/SemanticMediaWiki/src/Schema/SchemaValidator.php @@ -0,0 +1,54 @@ +<?php + +namespace SMW\Schema; + +use SMW\Utils\JsonSchemaValidator; + +/** + * @license GNU GPL v2+ + * @since 3.0 + * + * @author mwjames + */ +class SchemaValidator { + + /** + * @var JsonSchemaValidator + */ + private $validator; + + /** + * @since 3.0 + * + * @param JsonSchemaValidator $validator + */ + public function __construct( JsonSchemaValidator $validator ) { + $this->validator = $validator; + } + + /** + * @since 3.0 + * + * @param Schema|null $schema + * + * @return [] + */ + public function validate( Schema $schema = null ) { + + if ( $schema === null || !is_string( $schema->getValidationSchema() ) ) { + return []; + } + + $this->validator->validate( + $schema, + $schema->getValidationSchema() + ); + + if ( $this->validator->isValid() ) { + return []; + } + + return $this->validator->getErrors(); + } + +} |