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 rel="nofollow" to all outbound links.  This transform is
7
 * only attached if Attr.Nofollow is TRUE.
8
 */
9
class HTMLPurifier_AttrTransform_Nofollow extends HTMLPurifier_AttrTransform
10
{
11
    /**
12
     * @type HTMLPurifier_URIParser
13
     */
14
    private $parser;
15
 
16
    public function __construct()
17
    {
18
        $this->parser = new HTMLPurifier_URIParser();
19
    }
20
 
21
    /**
22
     * @param array $attr
23
     * @param HTMLPurifier_Config $config
24
     * @param HTMLPurifier_Context $context
25
     * @return array
26
     */
27
    public function transform($attr, $config, $context)
28
    {
29
        if (!isset($attr['href'])) {
30
            return $attr;
31
        }
32
 
33
        // XXX Kind of inefficient
34
        $url = $this->parser->parse($attr['href']);
35
        $scheme = $url->getSchemeObj($config, $context);
36
 
37
        if ($scheme->browsable && !$url->isLocal($config, $context)) {
38
            if (isset($attr['rel'])) {
39
                $rels = explode(' ', $attr['rel']);
40
                if (!in_array('nofollow', $rels)) {
41
                    $rels[] = 'nofollow';
42
                }
43
                $attr['rel'] = implode(' ', $rels);
44
            } else {
45
                $attr['rel'] = 'nofollow';
46
            }
47
        }
48
        return $attr;
49
    }
50
}
51
 
52
// vim: et sw=4 sts=4