| 1: | <?php
|
| 2: |
|
| 3: |
|
| 4: |
|
| 5: | |
| 6: | |
| 7: | |
| 8: | |
| 9: |
|
| 10: | class HTMLPurifier_AttrTransform_TargetBlank extends HTMLPurifier_AttrTransform
|
| 11: | {
|
| 12: | |
| 13: | |
| 14: |
|
| 15: | private $parser;
|
| 16: |
|
| 17: | public function __construct()
|
| 18: | {
|
| 19: | $this->parser = new HTMLPurifier_URIParser();
|
| 20: | }
|
| 21: |
|
| 22: | |
| 23: | |
| 24: | |
| 25: | |
| 26: | |
| 27: |
|
| 28: | public function transform($attr, $config, $context)
|
| 29: | {
|
| 30: | if (!isset($attr['href'])) {
|
| 31: | return $attr;
|
| 32: | }
|
| 33: |
|
| 34: |
|
| 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: |
|
| 46: | |