diff options
author | Aleksander Machniak <alec@alec.pl> | 2012-11-21 19:52:03 +0100 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2012-11-21 19:52:03 +0100 |
commit | ba6f21caeb405c7e8512a09941fefbc97286e45f (patch) | |
tree | 4a0e8f6fbab3260d37bf85cbf0bc9f506e627678 /program/include/rcube_base_replacer.php | |
parent | f707fec0001d7dc7d46be114c42b37e49a052660 (diff) |
Framework files moved to lib/Roundcube
Diffstat (limited to 'program/include/rcube_base_replacer.php')
-rw-r--r-- | program/include/rcube_base_replacer.php | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/program/include/rcube_base_replacer.php b/program/include/rcube_base_replacer.php deleted file mode 100644 index b2a0fc13c..000000000 --- a/program/include/rcube_base_replacer.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php - -/* - +-----------------------------------------------------------------------+ - | program/include/rcube_base_replacer.php | - | | - | This file is part of the Roundcube Webmail client | - | Copyright (C) 2005-2012, The Roundcube Dev Team | - | | - | Licensed under the GNU General Public License version 3 or | - | any later version with exceptions for skins & plugins. | - | See the README file for a full license statement. | - | | - | PURPOSE: | - | Provide basic functions for base URL replacement | - | | - +-----------------------------------------------------------------------+ - | Author: Thomas Bruederli <roundcube@gmail.com> | - +-----------------------------------------------------------------------+ -*/ - -/** - * Helper class to turn relative urls into absolute ones - * using a predefined base - * - * @package Framework - * @subpackage Core - * @author Thomas Bruederli <roundcube@gmail.com> - */ -class rcube_base_replacer -{ - private $base_url; - - - public function __construct($base) - { - $this->base_url = $base; - } - - - public function callback($matches) - { - return $matches[1] . '="' . self::absolute_url($matches[3], $this->base_url) . '"'; - } - - - public function replace($body) - { - return preg_replace_callback(array( - '/(src|background|href)=(["\']?)([^"\'\s]+)(\2|\s|>)/Ui', - '/(url\s*\()(["\']?)([^"\'\)\s]+)(\2)\)/Ui', - ), - array($this, 'callback'), $body); - } - - - /** - * Convert paths like ../xxx to an absolute path using a base url - * - * @param string $path Relative path - * @param string $base_url Base URL - * - * @return string Absolute URL - */ - 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; - } - - // check if path is a content-id scheme - if (strpos($path, 'cid:') === 0) { - return $path; - } - - // cut base_url to the last directory - if (strrpos($base_url, '/') > 7) { - $host_url = substr($base_url, 0, strpos($base_url, '/', 7)); - $base_url = substr($base_url, 0, strrpos($base_url, '/')); - } - - // $path is absolute - if ($path[0] == '/') { - $abs_path = $host_url.$path; - } - else { - // strip './' because its the same as '' - $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, '/')); - } - $path = substr($path, 3); - } - } - - $abs_path = $base_url.'/'.$path; - } - - return $abs_path; - } -} |