1 <?php 2 3 /** 4 * Injector that converts configuration directive syntax %Namespace.Directive 5 * to links 6 */ 7 class HTMLPurifier_Injector_PurifierLinkify extends HTMLPurifier_Injector 8 { 9 /** 10 * @type string 11 */ 12 public $name = 'PurifierLinkify'; 13 14 /** 15 * @type string 16 */ 17 public $docURL; 18 19 /** 20 * @type array 21 */ 22 public $needed = array('a' => array('href')); 23 24 /** 25 * @param HTMLPurifier_Config $config 26 * @param HTMLPurifier_Context $context 27 * @return string 28 */ 29 public function prepare($config, $context) 30 { 31 $this->docURL = $config->get('AutoFormat.PurifierLinkify.DocURL'); 32 return parent::prepare($config, $context); 33 } 34 35 /** 36 * @param HTMLPurifier_Token $token 37 */ 38 public function handleText(&$token) 39 { 40 if (!$this->allowsElement('a')) { 41 return; 42 } 43 if (strpos($token->data, '%') === false) { 44 return; 45 } 46 47 $bits = preg_split('#%([a-z0-9]+\.[a-z0-9]+)#Si', $token->data, -1, PREG_SPLIT_DELIM_CAPTURE); 48 $token = array(); 49 50 // $i = index 51 // $c = count 52 // $l = is link 53 for ($i = 0, $c = count($bits), $l = false; $i < $c; $i++, $l = !$l) { 54 if (!$l) { 55 if ($bits[$i] === '') { 56 continue; 57 } 58 $token[] = new HTMLPurifier_Token_Text($bits[$i]); 59 } else { 60 $token[] = new HTMLPurifier_Token_Start( 61 'a', 62 array('href' => str_replace('%s', $bits[$i], $this->docURL)) 63 ); 64 $token[] = new HTMLPurifier_Token_Text('%' . $bits[$i]); 65 $token[] = new HTMLPurifier_Token_End('a'); 66 } 67 } 68 } 69 } 70 71 // vim: et sw=4 sts=4
title
Description
Body
title
Description
Body
title
Description
Body
title
Body