[3.1.0] Implement Duplicate validator, also modify some design things
[htmlpurifier.git] / library / HTMLPurifier / ConfigSchema / InterchangeValidator.php
blob1eed72c7a27c82ffa9d5c007b3cfd953c12b206e
1 <?php
3 /**
4 * Decorator for interchange that performs validations
5 */
6 class HTMLPurifier_ConfigSchema_InterchangeValidator
8 protected $interchange;
9 protected $validators = array();
10 protected $namespaceValidators = array();
11 protected $directiveValidators = array();
13 /**
14 * @param $interchange Instance of HTMLPurifier_ConfigSchema_Interchange
15 * to save changes to.
17 public function __construct($interchange) {
18 $this->interchange = $interchange;
21 /**
22 * Registers a HTMLPurifier_ConfigSchema_Validator to run when adding.
24 public function addValidator($validator) {
25 $this->addNamespaceValidator($validator);
26 $this->addDirectiveValidator($validator);
29 /**
30 * Register validators to be used only on directives
32 public function addDirectiveValidator($validator) {
33 $this->directiveValidators[] = $validator;
36 /**
37 * Register validators to be used only on namespaces
39 public function addNamespaceValidator($validator) {
40 $this->namespaceValidators[] = $validator;
43 /**
44 * Validates and adds a namespace hash
46 public function addNamespace($hash) {
47 foreach ($this->namespaceValidators as $validator) {
48 $validator->validate($hash, $this->interchange);
50 $this->interchange->addNamespace($hash);
53 /**
54 * Validates and adds a directive hash
56 public function addDirective($hash) {
57 foreach ($this->directiveValidators as $validator) {
58 $validator->validate($hash, $this->interchange);
60 $this->interchange->addDirective($hash);