]> git.mxchange.org Git - friendica.git/blob - library/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php
Update HTMLPurifier to v4.7.0
[friendica.git] / library / ezyang / htmlpurifier / library / HTMLPurifier / AttrTransform / TargetBlank.php
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     /**
13      * @type HTMLPurifier_URIParser
14      */
15     private $parser;
16
17     public function __construct()
18     {
19         $this->parser = new HTMLPurifier_URIParser();
20     }
21
22     /**
23      * @param array $attr
24      * @param HTMLPurifier_Config $config
25      * @param HTMLPurifier_Context $context
26      * @return array
27      */
28     public function transform($attr, $config, $context)
29     {
30         if (!isset($attr['href'])) {
31             return $attr;
32         }
33
34         // XXX Kind of inefficient
35         $url = $this->parser->parse($attr['href']);
36         $scheme = $url->getSchemeObj($config, $context);
37
38         if ($scheme->browsable && !$url->isBenign($config, $context)) {
39             $attr['target'] = '_blank';
40         }
41         return $attr;
42     }
43 }
44
45 // vim: et sw=4 sts=4