|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 00003 // OUT OF DATE, NEEDS UPDATING! 00004 // USE XMLWRITER! 00005 00006 class HTMLPurifier_Printer 00007 { 00008 00012 protected $generator; 00013 00017 protected $config; 00018 00022 public function __construct() { 00023 } 00024 00028 public function prepareGenerator($config) { 00029 $all = $config->getAll(); 00030 $context = new HTMLPurifier_Context(); 00031 $this->generator = new HTMLPurifier_Generator($config, $context); 00032 } 00033 00038 // function render() {} 00039 00045 protected function start($tag, $attr = array()) { 00046 return $this->generator->generateFromToken( 00047 new HTMLPurifier_Token_Start($tag, $attr ? $attr : array()) 00048 ); 00049 } 00050 00055 protected function end($tag) { 00056 return $this->generator->generateFromToken( 00057 new HTMLPurifier_Token_End($tag) 00058 ); 00059 } 00060 00068 protected function element($tag, $contents, $attr = array(), $escape = true) { 00069 return $this->start($tag, $attr) . 00070 ($escape ? $this->escape($contents) : $contents) . 00071 $this->end($tag); 00072 } 00073 00074 protected function elementEmpty($tag, $attr = array()) { 00075 return $this->generator->generateFromToken( 00076 new HTMLPurifier_Token_Empty($tag, $attr) 00077 ); 00078 } 00079 00080 protected function text($text) { 00081 return $this->generator->generateFromToken( 00082 new HTMLPurifier_Token_Text($text) 00083 ); 00084 } 00085 00091 protected function row($name, $value) { 00092 if (is_bool($value)) $value = $value ? 'On' : 'Off'; 00093 return 00094 $this->start('tr') . "\n" . 00095 $this->element('th', $name) . "\n" . 00096 $this->element('td', $value) . "\n" . 00097 $this->end('tr') 00098 ; 00099 } 00100 00105 protected function escape($string) { 00106 $string = HTMLPurifier_Encoder::cleanUTF8($string); 00107 $string = htmlspecialchars($string, ENT_COMPAT, 'UTF-8'); 00108 return $string; 00109 } 00110 00116 protected function listify($array, $polite = false) { 00117 if (empty($array)) return 'None'; 00118 $ret = ''; 00119 $i = count($array); 00120 foreach ($array as $value) { 00121 $i--; 00122 $ret .= $value; 00123 if ($i > 0 && !($polite && $i == 1)) $ret .= ', '; 00124 if ($polite && $i == 1) $ret .= 'and '; 00125 } 00126 return $ret; 00127 } 00128 00134 protected function getClass($obj, $sec_prefix = '') { 00135 static $five = null; 00136 if ($five === null) $five = version_compare(PHP_VERSION, '5', '>='); 00137 $prefix = 'HTMLPurifier_' . $sec_prefix; 00138 if (!$five) $prefix = strtolower($prefix); 00139 $class = str_replace($prefix, '', get_class($obj)); 00140 $lclass = strtolower($class); 00141 $class .= '('; 00142 switch ($lclass) { 00143 case 'enum': 00144 $values = array(); 00145 foreach ($obj->valid_values as $value => $bool) { 00146 $values[] = $value; 00147 } 00148 $class .= implode(', ', $values); 00149 break; 00150 case 'css_composite': 00151 $values = array(); 00152 foreach ($obj->defs as $def) { 00153 $values[] = $this->getClass($def, $sec_prefix); 00154 } 00155 $class .= implode(', ', $values); 00156 break; 00157 case 'css_multiple': 00158 $class .= $this->getClass($obj->single, $sec_prefix) . ', '; 00159 $class .= $obj->max; 00160 break; 00161 case 'css_denyelementdecorator': 00162 $class .= $this->getClass($obj->def, $sec_prefix) . ', '; 00163 $class .= $obj->element; 00164 break; 00165 case 'css_importantdecorator': 00166 $class .= $this->getClass($obj->def, $sec_prefix); 00167 if ($obj->allow) $class .= ', !important'; 00168 break; 00169 } 00170 $class .= ')'; 00171 return $class; 00172 } 00173 00174 } 00175 00176 // vim: et sw=4 sts=4