]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - inc/3rdparty/htmlpurifier/HTMLPurifier/AttrDef/HTML/LinkTypes.php
[add] HTML Purifier added to clean code
[github/wallabag/wallabag.git] / inc / 3rdparty / htmlpurifier / HTMLPurifier / AttrDef / HTML / LinkTypes.php
diff --git a/inc/3rdparty/htmlpurifier/HTMLPurifier/AttrDef/HTML/LinkTypes.php b/inc/3rdparty/htmlpurifier/HTMLPurifier/AttrDef/HTML/LinkTypes.php
new file mode 100644 (file)
index 0000000..3f56934
--- /dev/null
@@ -0,0 +1,72 @@
+<?php\r
+\r
+/**\r
+ * Validates a rel/rev link attribute against a directive of allowed values\r
+ * @note We cannot use Enum because link types allow multiple\r
+ *       values.\r
+ * @note Assumes link types are ASCII text\r
+ */\r
+class HTMLPurifier_AttrDef_HTML_LinkTypes extends HTMLPurifier_AttrDef\r
+{\r
+\r
+    /**\r
+     * Name config attribute to pull.\r
+     * @type string\r
+     */\r
+    protected $name;\r
+\r
+    /**\r
+     * @param string $name\r
+     */\r
+    public function __construct($name)\r
+    {\r
+        $configLookup = array(\r
+            'rel' => 'AllowedRel',\r
+            'rev' => 'AllowedRev'\r
+        );\r
+        if (!isset($configLookup[$name])) {\r
+            trigger_error(\r
+                'Unrecognized attribute name for link ' .\r
+                'relationship.',\r
+                E_USER_ERROR\r
+            );\r
+            return;\r
+        }\r
+        $this->name = $configLookup[$name];\r
+    }\r
+\r
+    /**\r
+     * @param string $string\r
+     * @param HTMLPurifier_Config $config\r
+     * @param HTMLPurifier_Context $context\r
+     * @return bool|string\r
+     */\r
+    public function validate($string, $config, $context)\r
+    {\r
+        $allowed = $config->get('Attr.' . $this->name);\r
+        if (empty($allowed)) {\r
+            return false;\r
+        }\r
+\r
+        $string = $this->parseCDATA($string);\r
+        $parts = explode(' ', $string);\r
+\r
+        // lookup to prevent duplicates\r
+        $ret_lookup = array();\r
+        foreach ($parts as $part) {\r
+            $part = strtolower(trim($part));\r
+            if (!isset($allowed[$part])) {\r
+                continue;\r
+            }\r
+            $ret_lookup[$part] = true;\r
+        }\r
+\r
+        if (empty($ret_lookup)) {\r
+            return false;\r
+        }\r
+        $string = implode(' ', array_keys($ret_lookup));\r
+        return $string;\r
+    }\r
+}\r
+\r
+// vim: et sw=4 sts=4\r