Aleksander Machniak
2013-03-19 1e32540839683c1309db012c4d5b9aff35ec6ae3
program/lib/Roundcube/rcube_string_replacer.php
@@ -28,13 +28,14 @@
    public $mailto_pattern;
    public $link_pattern;
    private $values = array();
    private $options = array();
    function __construct()
    function __construct($options = array())
    {
        // Simplified domain expression for UTF8 characters handling
        // Support unicode/punycode in top-level domain part
        $utf_domain = '[^?&@"\'\\/()\s\r\t\n]+\\.?([^\\x00-\\x2f\\x3b-\\x40\\x5b-\\x60\\x7b-\\x7f]{2,}|xn--[a-zA-Z0-9]{2,})';
        $utf_domain = '[^?&@"\'\\/()<>\s\r\t\n]+\\.?([^\\x00-\\x2f\\x3b-\\x40\\x5b-\\x60\\x7b-\\x7f]{2,}|xn--[a-zA-Z0-9]{2,})';
        $url1       = '.:;,';
        $url2       = 'a-zA-Z0-9%=#$@+?!&\\/_~\\[\\]\\(\\){}\*-';
@@ -44,6 +45,8 @@
            ."@$utf_domain"                                                 // domain-part
            ."(\?[$url1$url2]+)?"                                           // e.g. ?subject=test...
            .")/";
        $this->options = $options;
    }
    /**
@@ -89,10 +92,10 @@
        if ($url) {
            $suffix = $this->parse_url_brackets($url);
            $i = $this->add($prefix . html::a(array(
                'href'   => $url_prefix . $url,
                'target' => '_blank'
            ), rcube::Q($url)) . $suffix);
            $attrib = (array)$this->options['link_attribs'];
            $attrib['href'] = $url_prefix . $url;
            $i = $this->add($prefix . html::a($attrib, rcube::Q($url)) . $suffix);
        }
        // Return valid link for recognized schemes, otherwise