| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | <?php// must be called POST validation/** * Adds rel="nofollow" to all outbound links.  This transform is * only attached if Attr.Nofollow is TRUE. */class HTMLPurifier_AttrTransform_Nofollow extends HTMLPurifier_AttrTransform{    /**     * @type HTMLPurifier_URIParser     */    private $parser;    public function __construct()    {        $this->parser = new HTMLPurifier_URIParser();    }    /**     * @param array $attr     * @param HTMLPurifier_Config $config     * @param HTMLPurifier_Context $context     * @return array     */    public function transform($attr, $config, $context)    {        if (!isset($attr['href'])) {            return $attr;        }        // XXX Kind of inefficient        $url = $this->parser->parse($attr['href']);        $scheme = $url->getSchemeObj($config, $context);        if ($scheme->browsable && !$url->isLocal($config, $context)) {            if (isset($attr['rel'])) {                $rels = explode(' ', $attr['rel']);                if (!in_array('nofollow', $rels)) {                    $rels[] = 'nofollow';                }                $attr['rel'] = implode(' ', $rels);            } else {                $attr['rel'] = 'nofollow';            }        }        return $attr;    }}// vim: et sw=4 sts=4
 |