diff options
Diffstat (limited to 'program/lib/Roundcube/rcube_string_replacer.php')
-rw-r--r-- | program/lib/Roundcube/rcube_string_replacer.php | 54 |
1 files changed, 7 insertions, 47 deletions
diff --git a/program/lib/Roundcube/rcube_string_replacer.php b/program/lib/Roundcube/rcube_string_replacer.php index 77b91d18b..bd26f8e7d 100644 --- a/program/lib/Roundcube/rcube_string_replacer.php +++ b/program/lib/Roundcube/rcube_string_replacer.php @@ -24,19 +24,13 @@ */ class rcube_string_replacer { - public static $pattern = '/##str_replacement_(\d+)##/'; + public static $pattern = '/##str_replacement\[([0-9]+)\]##/'; public $mailto_pattern; public $link_pattern; - public $linkref_index; - public $linkref_pattern; - private $values = array(); - private $options = array(); - private $linkrefs = array(); - private $urls = array(); - function __construct($options = array()) + function __construct() { // Simplified domain expression for UTF8 characters handling // Support unicode/punycode in top-level domain part @@ -50,10 +44,6 @@ class rcube_string_replacer ."@$utf_domain" // domain-part ."(\?[$url1$url2]+)?" // e.g. ?subject=test... .")/"; - $this->linkref_index = '/\[([^\]#]+)\](:?\s*##str_replacement_(\d+)##)/'; - $this->linkref_pattern = '/\[([^\]#]+)\]/'; - - $this->options = $options; } /** @@ -74,7 +64,7 @@ class rcube_string_replacer */ public function get_replacement($i) { - return '##str_replacement_' . $i . '##'; + return '##str_replacement['.$i.']##'; } /** @@ -99,11 +89,10 @@ class rcube_string_replacer if ($url) { $suffix = $this->parse_url_brackets($url); - $attrib = (array)$this->options['link_attribs']; - $attrib['href'] = $url_prefix . $url; - - $i = $this->add(html::a($attrib, rcube::Q($url)) . $suffix); - $this->urls[$i] = $attrib['href']; + $i = $this->add(html::a(array( + 'href' => $url_prefix . $url, + 'target' => '_blank' + ), rcube::Q($url)) . $suffix); } // Return valid link for recognized schemes, otherwise @@ -112,32 +101,6 @@ class rcube_string_replacer } /** - * Callback to add an entry to the link index - */ - public function linkref_addindex($matches) - { - $key = $matches[1]; - $this->linkrefs[$key] = $this->urls[$matches[3]]; - - return $this->get_replacement($this->add('['.$key.']')) . $matches[2]; - } - - /** - * Callback to replace link references with real links - */ - public function linkref_callback($matches) - { - $i = 0; - if ($url = $this->linkrefs[$matches[1]]) { - $attrib = (array)$this->options['link_attribs']; - $attrib['href'] = $url; - $i = $this->add(html::a($attrib, rcube::Q($matches[1]))); - } - - return $i > 0 ? '['.$this->get_replacement($i).']' : $matches[0]; - } - - /** * Callback function used to build mailto: links around e-mail strings * * @param array Matches result from preg_replace_callback @@ -176,9 +139,6 @@ class rcube_string_replacer // search for patterns like links and e-mail addresses $str = preg_replace_callback($this->link_pattern, array($this, 'link_callback'), $str); $str = preg_replace_callback($this->mailto_pattern, array($this, 'mailto_callback'), $str); - // resolve link references - $str = preg_replace_callback($this->linkref_index, array($this, 'linkref_addindex'), $str); - $str = preg_replace_callback($this->linkref_pattern, array($this, 'linkref_callback'), $str); return $str; } |