]>
Commit | Line | Data |
---|---|---|
dd205fba MK |
1 | <?php |
2 | ||
3 | // must be called POST validation | |
4 | ||
5 | /** | |
6 | * Adds target="blank" to all outbound links. This transform is | |
7 | * only attached if Attr.TargetBlank is TRUE. This works regardless | |
8 | * of whether or not Attr.AllowedFrameTargets | |
9 | */ | |
10 | class HTMLPurifier_AttrTransform_TargetBlank extends HTMLPurifier_AttrTransform | |
11 | { | |
12 | private $parser; | |
13 | ||
14 | public function __construct() { | |
15 | $this->parser = new HTMLPurifier_URIParser(); | |
16 | } | |
17 | ||
18 | public function transform($attr, $config, $context) { | |
19 | ||
20 | if (!isset($attr['href'])) { | |
21 | return $attr; | |
22 | } | |
23 | ||
24 | // XXX Kind of inefficient | |
25 | $url = $this->parser->parse($attr['href']); | |
26 | $scheme = $url->getSchemeObj($config, $context); | |
27 | ||
28 | if ($scheme->browsable && !$url->isBenign($config, $context)) { | |
29 | $attr['target'] = 'blank'; | |
30 | } | |
31 | ||
32 | return $attr; | |
33 | ||
34 | } | |
35 | ||
36 | } | |
37 | ||
38 | // vim: et sw=4 sts=4 |