2 namespace sfjp\Wiki\Processor;
3 if (!function_exists("kses"))
4 require_once("kses.php");
6 class HTML extends Base {
7 static public $allowed = array(
8 'h1' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
9 'h2' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
10 'h3' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
11 'h4' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
12 'h5' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
13 'h6' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
14 'div' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
15 'span' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
16 'address' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
17 'em' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
18 'strong' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
19 'dfn' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
20 'code' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
21 'samp' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
22 'kbd' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
23 'var' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
24 'abbr' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
25 'acronym' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
26 'blockquote' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'cite' => 1),
27 'q' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'cite' => 1),
28 'sub' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
29 'sup' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
30 'p' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1),
31 'br' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'clear' => 1),
32 'pre' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'width' => 1),
33 'ins' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'cite' => 1, 'datetime' => 1),
34 'del' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'cite' => 1, 'datetime' => 1),
35 'ul' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'type' => 1),
36 'ol' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'type' => 1, 'start' => 1),
37 'li' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'type' => 1, 'value' => 1),
38 'dl' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
39 'dt' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
40 'dd' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
41 'table' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'width' => 1, 'summary' => 1, 'border' => 1, 'cellspacing' => 1, 'cellpadding' => 1, 'align' => 1, 'valign' => 1, 'bgcolor' => 1),
42 'tbody' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1, 'valign' => 1),
43 'thead' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1, 'valign' => 1),
44 'tfoot' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1, 'valign' => 1),
45 'colgroup' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'width' => 1, 'span' => 1, 'align' => 1, 'valign' => 1),
46 'col' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'width' => 1, 'span' => 1, 'align' => 1, 'valign' => 1),
47 'tr' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1, 'valign' => 1, 'bgcolor' => 1),
48 'th' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1, 'valign' => 1, 'abbr' => 1, 'axis' => 1, 'headers' => 1, 'scope' => 1, 'rowspan' => 1, 'colspan' => 1, 'bgcolor' => 1),
49 'td' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'align' => 1, 'valign' => 1, 'abbr' => 1, 'axis' => 1, 'headers' => 1, 'scope' => 1, 'rowspan' => 1, 'colspan' => 1, 'bgcolor' => 1),
50 'a' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'href' => 1, 'name' => 1, 'rel' => 1, 'rev' => 1, 'accesskey' => 1, 'tabindex' => 1, 'title' => 1),
51 'img' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'src' => 1, 'alt' => 1, 'name' => 1, 'height' => 1, 'width' => 1, 'border' => 1, 'title' => 1, 'align' => 1),
52 'tt' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
53 'i' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
54 'b' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
55 'big' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
56 'small' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
57 's' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
58 'u' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
59 'font' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'size' => 1, 'color' => 1, 'face' => 1),
60 'hr' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1), 'noshade' => 1, 'align' => 1, 'size' => 1, 'width' => 1),
61 'wbr' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
62 'nobr' => array('id' => 1, 'class' => 1, 'style' => array('cssfilter' => 1)),
65 public function __construct($args = null) {
66 parent::__construct();
69 public function process($text) {
70 $this->formatted_text = $this->getFormatter()->raw_node(kses($text, self::$allowed, array('http', 'https', 'ftp')));