summaryrefslogtreecommitdiff
path: root/program/lib/Roundcube/rcube_string_replacer.php
diff options
context:
space:
mode:
Diffstat (limited to 'program/lib/Roundcube/rcube_string_replacer.php')
-rw-r--r--program/lib/Roundcube/rcube_string_replacer.php54
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;
}