From 26bc46d9b671ea069fc779ecb8b4ac90323c2291 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 07 Sep 2011 02:59:48 -0400
Subject: [PATCH] - Move two entries from 0.6-rc to trunk's changelog part
---
program/include/rcube_shared.inc | 103 ++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 89 insertions(+), 14 deletions(-)
diff --git a/program/include/rcube_shared.inc b/program/include/rcube_shared.inc
index 845230d..68f3fe4 100644
--- a/program/include/rcube_shared.inc
+++ b/program/include/rcube_shared.inc
@@ -5,7 +5,7 @@
| rcube_shared.inc |
| |
| This file is part of the Roundcube PHP suite |
- | Copyright (C) 2005-2007, Roundcube Dev. - Switzerland |
+ | Copyright (C) 2005-2007, The Roundcube Dev Team |
| Licensed under the GNU GPL |
| |
| CONTENTS: |
@@ -140,7 +140,7 @@
function get_boolean($str)
{
$str = strtolower($str);
- if (in_array($str, array('false', '0', 'no', 'nein', ''), TRUE))
+ if (in_array($str, array('false', '0', 'no', 'off', 'nein', ''), TRUE))
return FALSE;
else
return TRUE;
@@ -180,7 +180,7 @@
return floatval($bytes);
}
-
+
/**
* Create a human readable string for a number of bytes
*
@@ -189,24 +189,23 @@
*/
function show_bytes($bytes)
{
- if ($bytes > 1073741824)
+ if ($bytes >= 1073741824)
{
$gb = $bytes/1073741824;
$str = sprintf($gb>=10 ? "%d " : "%.1f ", $gb) . rcube_label('GB');
}
- else if ($bytes > 1048576)
+ else if ($bytes >= 1048576)
{
$mb = $bytes/1048576;
$str = sprintf($mb>=10 ? "%d " : "%.1f ", $mb) . rcube_label('MB');
}
- else if ($bytes > 1024)
+ else if ($bytes >= 1024)
$str = sprintf("%d ", round($bytes/1024)) . rcube_label('KB');
else
$str = sprintf('%d ', $bytes) . rcube_label('B');
return $str;
}
-
/**
* Convert paths like ../xxx to an absolute path using a base url
@@ -227,12 +226,12 @@
// cut base_url to the last directory
if (strrpos($base_url, '/')>7)
{
- $host_url = substr($base_url, 0, strpos($base_url, '/'));
+ $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}=='/')
+ if ($path[0] == '/')
$abs_path = $host_url.$path;
else
{
@@ -244,13 +243,13 @@
{
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;
}
@@ -407,20 +406,24 @@
/**
- * Replace the middle part of a string with ...
- * if it is longer than the allowed length
+ * Truncate string if it is longer than the allowed length
+ * Replace the middle or the ending part of a string with a placeholder
*
* @param string Input string
* @param int Max. length
* @param string Replace removed chars with this
+ * @param bool Set to True if string should be truncated from the end
* @return string Abbreviated string
*/
-function abbreviate_string($str, $maxlength, $place_holder='...')
+function abbreviate_string($str, $maxlength, $place_holder='...', $ending=false)
{
$length = mb_strlen($str);
if ($length > $maxlength)
{
+ if ($ending)
+ return mb_substr($str, 0, $maxlength) . $place_holder;
+
$place_holder_length = mb_strlen($place_holder);
$first_part_length = floor(($maxlength - $place_holder_length)/2);
$second_starting_location = $length - $maxlength + $first_part_length + $place_holder_length;
@@ -472,9 +475,33 @@
if (!$mime_type) {
$mime_type = $failover;
}
+ else {
+ // Sometimes (PHP-5.3?) content-type contains charset definition,
+ // Remove it (#1487122) also "charset=binary" is useless
+ $mime_type = array_shift(preg_split('/[; ]/', $mime_type));
+ }
return $mime_type;
}
+
+
+/**
+ * Detect image type of the given binary data by checking magic numbers
+ *
+ * @param string Binary file content
+ * @return string Detected mime-type or jpeg as fallback
+ */
+function rc_image_content_type($data)
+{
+ $type = 'jpeg';
+ if (preg_match('/^\x89\x50\x4E\x47/', $data)) $type = 'png';
+ else if (preg_match('/^\x47\x49\x46\x38/', $data)) $type = 'gif';
+ else if (preg_match('/^\x00\x00\x01\x00/', $data)) $type = 'ico';
+// else if (preg_match('/^\xFF\xD8\xFF\xE0/', $data)) $type = 'jpeg';
+
+ return 'image/' . $type;
+}
+
/**
* A method to guess encoding of a string.
@@ -676,3 +703,51 @@
}
}
+/**
+ * intl replacement functions
+ */
+
+if (!function_exists('idn_to_utf8'))
+{
+ function idn_to_utf8($domain, $flags=null)
+ {
+ static $idn, $loaded;
+
+ if (!$loaded) {
+ $idn = new Net_IDNA2();
+ $loaded = true;
+ }
+
+ if ($idn && $domain && preg_match('/(^|\.)xn--/i', $domain)) {
+ try {
+ $domain = $idn->decode($domain);
+ }
+ catch (Exception $e) {
+ }
+ }
+ return $domain;
+ }
+}
+
+if (!function_exists('idn_to_ascii'))
+{
+ function idn_to_ascii($domain, $flags=null)
+ {
+ static $idn, $loaded;
+
+ if (!$loaded) {
+ $idn = new Net_IDNA2();
+ $loaded = true;
+ }
+
+ if ($idn && $domain && preg_match('/[^\x20-\x7E]/', $domain)) {
+ try {
+ $domain = $idn->encode($domain);
+ }
+ catch (Exception $e) {
+ }
+ }
+ return $domain;
+ }
+}
+
--
Gitblit v1.9.1