1 <?php 2 3 /** 4 * Fluent interface for validating the contents of member variables. 5 * This should be immutable. See HTMLPurifier_ConfigSchema_Validator for 6 * use-cases. We name this an 'atom' because it's ONLY for validations that 7 * are independent and usually scalar. 8 */ 9 class HTMLPurifier_ConfigSchema_ValidatorAtom 10 { 11 /** 12 * @type string 13 */ 14 protected $context; 15 16 /** 17 * @type object 18 */ 19 protected $obj; 20 21 /** 22 * @type string 23 */ 24 protected $member; 25 26 /** 27 * @type mixed 28 */ 29 protected $contents; 30 31 public function __construct($context, $obj, $member) 32 { 33 $this->context = $context; 34 $this->obj = $obj; 35 $this->member = $member; 36 $this->contents =& $obj->$member; 37 } 38 39 /** 40 * @return HTMLPurifier_ConfigSchema_ValidatorAtom 41 */ 42 public function assertIsString() 43 { 44 if (!is_string($this->contents)) { 45 $this->error('must be a string'); 46 } 47 return $this; 48 } 49 50 /** 51 * @return HTMLPurifier_ConfigSchema_ValidatorAtom 52 */ 53 public function assertIsBool() 54 { 55 if (!is_bool($this->contents)) { 56 $this->error('must be a boolean'); 57 } 58 return $this; 59 } 60 61 /** 62 * @return HTMLPurifier_ConfigSchema_ValidatorAtom 63 */ 64 public function assertIsArray() 65 { 66 if (!is_array($this->contents)) { 67 $this->error('must be an array'); 68 } 69 return $this; 70 } 71 72 /** 73 * @return HTMLPurifier_ConfigSchema_ValidatorAtom 74 */ 75 public function assertNotNull() 76 { 77 if ($this->contents === null) { 78 $this->error('must not be null'); 79 } 80 return $this; 81 } 82 83 /** 84 * @return HTMLPurifier_ConfigSchema_ValidatorAtom 85 */ 86 public function assertAlnum() 87 { 88 $this->assertIsString(); 89 if (!ctype_alnum($this->contents)) { 90 $this->error('must be alphanumeric'); 91 } 92 return $this; 93 } 94 95 /** 96 * @return HTMLPurifier_ConfigSchema_ValidatorAtom 97 */ 98 public function assertNotEmpty() 99 { 100 if (empty($this->contents)) { 101 $this->error('must not be empty'); 102 } 103 return $this; 104 } 105 106 /** 107 * @return HTMLPurifier_ConfigSchema_ValidatorAtom 108 */ 109 public function assertIsLookup() 110 { 111 $this->assertIsArray(); 112 foreach ($this->contents as $v) { 113 if ($v !== true) { 114 $this->error('must be a lookup array'); 115 } 116 } 117 return $this; 118 } 119 120 /** 121 * @param string $msg 122 * @throws HTMLPurifier_ConfigSchema_Exception 123 */ 124 protected function error($msg) 125 { 126 throw new HTMLPurifier_ConfigSchema_Exception(ucfirst($this->member) . ' in ' . $this->context . ' ' . $msg); 127 } 128 } 129 130 // vim: et sw=4 sts=4
title
Description
Body
title
Description
Body
title
Description
Body
title
Body