]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - inc/3rdparty/htmlpurifier/HTMLPurifier/AttrTransform/TargetBlank.php
[add] HTML Purifier added to clean code
[github/wallabag/wallabag.git] / inc / 3rdparty / htmlpurifier / HTMLPurifier / AttrTransform / TargetBlank.php
diff --git a/inc/3rdparty/htmlpurifier/HTMLPurifier/AttrTransform/TargetBlank.php b/inc/3rdparty/htmlpurifier/HTMLPurifier/AttrTransform/TargetBlank.php
new file mode 100644 (file)
index 0000000..f66dcf8
--- /dev/null
@@ -0,0 +1,45 @@
+<?php\r
+\r
+// must be called POST validation\r
+\r
+/**\r
+ * Adds target="blank" to all outbound links.  This transform is\r
+ * only attached if Attr.TargetBlank is TRUE.  This works regardless\r
+ * of whether or not Attr.AllowedFrameTargets\r
+ */\r
+class HTMLPurifier_AttrTransform_TargetBlank extends HTMLPurifier_AttrTransform\r
+{\r
+    /**\r
+     * @type HTMLPurifier_URIParser\r
+     */\r
+    private $parser;\r
+\r
+    public function __construct()\r
+    {\r
+        $this->parser = new HTMLPurifier_URIParser();\r
+    }\r
+\r
+    /**\r
+     * @param array $attr\r
+     * @param HTMLPurifier_Config $config\r
+     * @param HTMLPurifier_Context $context\r
+     * @return array\r
+     */\r
+    public function transform($attr, $config, $context)\r
+    {\r
+        if (!isset($attr['href'])) {\r
+            return $attr;\r
+        }\r
+\r
+        // XXX Kind of inefficient\r
+        $url = $this->parser->parse($attr['href']);\r
+        $scheme = $url->getSchemeObj($config, $context);\r
+\r
+        if ($scheme->browsable && !$url->isBenign($config, $context)) {\r
+            $attr['target'] = '_blank';\r
+        }\r
+        return $attr;\r
+    }\r
+}\r
+\r
+// vim: et sw=4 sts=4\r