Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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
 
37
        // Ignore invalid schemes (e.g. `javascript:`)
38
        if (!($scheme = $url->getSchemeObj($config, $context))) {
39
            return $attr;
40
        }
41
 
42
        if ($scheme->browsable && !$url->isBenign($config, $context)) {
43
            $attr['target'] = '_blank';
44
        }
45
        return $attr;
46
    }
47
}
48
 
49
// vim: et sw=4 sts=4