From 2965a981b7ec22866fbdf2d567d87e2d068d3617 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Fri, 31 Jul 2015 16:04:08 -0400
Subject: [PATCH] Allow to search and import missing PGP pubkeys from keyservers using Publickey.js

---
 program/lib/Roundcube/rcube_base_replacer.php |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/program/lib/Roundcube/rcube_base_replacer.php b/program/lib/Roundcube/rcube_base_replacer.php
index fcd85c2..a306086 100644
--- a/program/lib/Roundcube/rcube_base_replacer.php
+++ b/program/lib/Roundcube/rcube_base_replacer.php
@@ -21,7 +21,7 @@
  * using a predefined base
  *
  * @package    Framework
- * @subpackage Core
+ * @subpackage Utils
  * @author     Thomas Bruederli <roundcube@gmail.com>
  */
 class rcube_base_replacer
@@ -44,8 +44,8 @@
     public function replace($body)
     {
         return preg_replace_callback(array(
-            '/(src|background|href)=(["\']?)([^"\'\s]+)(\2|\s|>)/Ui',
-            '/(url\s*\()(["\']?)([^"\'\)\s]+)(\2)\)/Ui',
+            '/(src|background|href)=(["\']?)([^"\'\s>]+)(\2|\s|>)/i',
+            '/(url\s*\()(["\']?)([^"\'\)\s]+)(\2)\)/i',
         ),
         array($this, 'callback'), $body);
     }
@@ -61,9 +61,6 @@
      */
     public static function absolute_url($path, $base_url)
     {
-        $host_url = $base_url;
-        $abs_path = $path;
-
         // check if path is an absolute URL
         if (preg_match('/^[fhtps]+:\/\//', $path)) {
             return $path;
@@ -73,6 +70,9 @@
         if (strpos($path, 'cid:') === 0) {
             return $path;
         }
+
+        $host_url = $base_url;
+        $abs_path = $path;
 
         // cut base_url to the last directory
         if (strrpos($base_url, '/') > 7) {
@@ -89,9 +89,10 @@
             $path = preg_replace('/^\.\//', '', $path);
 
             if (preg_match_all('/\.\.\//', $path, $matches, PREG_SET_ORDER)) {
-                foreach ($matches as $a_match) {
-                    if (strrpos($base_url, '/')) {
-                        $base_url = substr($base_url, 0, strrpos($base_url, '/'));
+                $cnt = count($matches);
+                while ($cnt--) {
+                    if ($pos = strrpos($base_url, '/')) {
+                        $base_url = substr($base_url, 0, $pos);
                     }
                     $path = substr($path, 3);
                 }

--
Gitblit v1.9.1