From ed1d212ae2daea5e4bd043417610177093e99f19 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sat, 16 Jan 2016 03:03:51 -0500
Subject: [PATCH] Improved SVG cleanup code
---
program/lib/Roundcube/bootstrap.php | 116 +++++++++++++++++++++-------------------------------------
1 files changed, 42 insertions(+), 74 deletions(-)
diff --git a/program/lib/Roundcube/bootstrap.php b/program/lib/Roundcube/bootstrap.php
index ba7954e..94e628b 100644
--- a/program/lib/Roundcube/bootstrap.php
+++ b/program/lib/Roundcube/bootstrap.php
@@ -1,6 +1,6 @@
<?php
-/*
+/**
+-----------------------------------------------------------------------+
| This file is part of the Roundcube PHP suite |
| Copyright (C) 2005-2015, The Roundcube Dev Team |
@@ -16,7 +16,6 @@
| Author: Aleksander Machniak <alec@alec.pl> |
+-----------------------------------------------------------------------+
*/
-
/**
* Roundcube Framework Initialization
@@ -46,8 +45,10 @@
foreach ($config as $optname => $optval) {
$ini_optval = filter_var(ini_get($optname), is_bool($optval) ? FILTER_VALIDATE_BOOLEAN : FILTER_VALIDATE_INT);
if ($optval != $ini_optval && @ini_set($optname, $optval) === false) {
- $error = "ERROR: Wrong '$optname' option value and it wasn't possible to set it to required value ($optval).\n"
+ $optval = !is_bool($optval) ? $optval : ($optval ? 'On' : 'Off');
+ $error = "ERROR: Wrong '$optname' option value and it wasn't possible to set it to required value ($optval).\n"
. "Check your PHP configuration (including php_admin_flag).";
+
if (defined('STDERR')) fwrite(STDERR, $error); else echo $error;
exit(1);
}
@@ -99,35 +100,45 @@
spl_autoload_register('rcube_autoload');
// set PEAR error handling (will also load the PEAR main class)
-@PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'rcube_pear_error');
-
+if (class_exists('PEAR')) {
+ @PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'rcube_pear_error');
+}
/**
- * Similar function as in_array() but case-insensitive
+ * Similar function as in_array() but case-insensitive with multibyte support.
*
- * @param string $needle Needle value
- * @param array $heystack Array to search in
+ * @param string $needle Needle value
+ * @param array $heystack Array to search in
*
* @return boolean True if found, False if not
*/
function in_array_nocase($needle, $haystack)
{
- $needle = mb_strtolower($needle);
- foreach ((array)$haystack as $value) {
- if ($needle === mb_strtolower($value)) {
- return true;
+ // use much faster method for ascii
+ if (is_ascii($needle)) {
+ foreach ((array) $haystack as $value) {
+ if (strcasecmp($value, $needle) === 0) {
+ return true;
+ }
+ }
+ }
+ else {
+ $needle = mb_strtolower($needle);
+ foreach ((array) $haystack as $value) {
+ if ($needle === mb_strtolower($value)) {
+ return true;
+ }
}
}
return false;
}
-
/**
* Parse a human readable string for a number of bytes.
*
- * @param string $str Input string
+ * @param string $str Input string
*
* @return float Number of bytes
*/
@@ -158,7 +169,6 @@
return floatval($bytes);
}
-
/**
* Make sure the string ends with a slash
*/
@@ -166,7 +176,6 @@
{
return unslashify($str).'/';
}
-
/**
* Remove slashes at the end of the string
@@ -176,11 +185,10 @@
return preg_replace('/\/+$/', '', $str);
}
-
/**
* Returns number of seconds for a specified offset string.
*
- * @param string $str String representation of the offset (e.g. 20min, 5h, 2days, 1week)
+ * @param string $str String representation of the offset (e.g. 20min, 5h, 2days, 1week)
*
* @return int Number of seconds
*/
@@ -209,20 +217,18 @@
return $amount;
}
-
/**
* Create a unix timestamp with a specified offset from now.
*
- * @param string $offset_str String representation of the offset (e.g. 20min, 5h, 2days)
- * @param int $factor Factor to multiply with the offset
+ * @param string $offset_str String representation of the offset (e.g. 20min, 5h, 2days)
+ * @param int $factor Factor to multiply with the offset
*
* @return int Unix timestamp
*/
-function get_offset_time($offset_str, $factor=1)
+function get_offset_time($offset_str, $factor = 1)
{
return time() + get_offset_sec($offset_str) * $factor;
}
-
/**
* Truncate string if it is longer than the allowed length.
@@ -235,7 +241,7 @@
*
* @return string Abbreviated string
*/
-function abbreviate_string($str, $maxlength, $placeholder='...', $ending=false)
+function abbreviate_string($str, $maxlength, $placeholder = '...', $ending = false)
{
$length = mb_strlen($str);
@@ -248,17 +254,18 @@
$first_part_length = floor(($maxlength - $placeholder_length)/2);
$second_starting_location = $length - $maxlength + $first_part_length + $placeholder_length;
- $str = mb_substr($str, 0, $first_part_length) . $placeholder . mb_substr($str, $second_starting_location);
+ $prefix = mb_substr($str, 0, $first_part_length);
+ $suffix = mb_substr($str, $second_starting_location);
+ $str = $prefix . $placeholder . $suffix;
}
return $str;
}
-
/**
* Get all keys from array (recursive).
*
- * @param array $array Input array
+ * @param array $array Input array
*
* @return array List of array keys
*/
@@ -278,7 +285,6 @@
return $keys;
}
-
/**
* Remove all non-ascii and non-word chars except ., -, _
*/
@@ -287,7 +293,6 @@
$allowed = 'a-z0-9\_\-' . (!$css_id ? '\.' : '');
return preg_replace("/[^$allowed]/i", $replace_with, $str);
}
-
/**
* Check if a string contains only ascii characters
@@ -303,12 +308,11 @@
return preg_match($regexp, $str) ? false : true;
}
-
/**
* Compose a valid representation of name and e-mail address
*
- * @param string $email E-mail address
- * @param string $name Person name
+ * @param string $email E-mail address
+ * @param string $name Person name
*
* @return string Formatted string
*/
@@ -327,7 +331,6 @@
return $email;
}
-
/**
* Format e-mail address
@@ -351,7 +354,6 @@
return $email;
}
-
/**
* Fix version number so it can be used correctly in version_compare()
*
@@ -364,44 +366,8 @@
return str_replace(
array('-stable', '-git'),
array('.0', '.99'),
- $version);
-}
-
-
-/**
- * mbstring replacement functions
- */
-if (!extension_loaded('mbstring'))
-{
- function mb_strlen($str)
- {
- return strlen($str);
- }
-
- function mb_strtolower($str)
- {
- return strtolower($str);
- }
-
- function mb_strtoupper($str)
- {
- return strtoupper($str);
- }
-
- function mb_substr($str, $start, $len=null)
- {
- return substr($str, $start, $len);
- }
-
- function mb_strpos($haystack, $needle, $offset=0)
- {
- return strpos($haystack, $needle, $offset);
- }
-
- function mb_strrpos($haystack, $needle, $offset=0)
- {
- return strrpos($haystack, $needle, $offset);
- }
+ $version
+ );
}
/**
@@ -415,7 +381,7 @@
static $idn, $loaded;
if (!$loaded) {
- $idn = new Net_IDNA2();
+ $idn = new Net_IDNA2();
$loaded = true;
}
@@ -426,6 +392,7 @@
catch (Exception $e) {
}
}
+
return $domain;
}
}
@@ -437,7 +404,7 @@
static $idn, $loaded;
if (!$loaded) {
- $idn = new Net_IDNA2();
+ $idn = new Net_IDNA2();
$loaded = true;
}
@@ -448,6 +415,7 @@
catch (Exception $e) {
}
}
+
return $domain;
}
}
--
Gitblit v1.9.1