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 */ 10class 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 $scheme = $url->getSchemeObj($config, $context); 37 38 if ($scheme->browsable && !$url->isBenign($config, $context)) { 39 $attr['target'] = '_blank'; 40 } 41 return $attr; 42 } 43} 44 45// vim: et sw=4 sts=4 46