summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2009-07-23 12:12:27 +0000
committeralecpl <alec@alec.pl>2009-07-23 12:12:27 +0000
commitee258ce15870e6cb4b733087368a062b5fd66b52 (patch)
tree9b52d654f3abdbcba90db483a7970c5d9c308b44
parenta01b3bf9aee82b142724eb769a40a4d6df5d9e26 (diff)
- performance fix: don't check mbstring functions existence too often
-rw-r--r--program/include/rcmail.php2
-rw-r--r--program/include/rcube_imap.php10
-rw-r--r--program/include/rcube_shared.inc171
-rw-r--r--program/steps/mail/compose.inc6
-rw-r--r--program/steps/mail/show.inc2
-rw-r--r--program/steps/mail/spell_pspell.inc4
6 files changed, 85 insertions, 110 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 1721410eb..4624ee194 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -481,7 +481,7 @@ class rcmail
// lowercase username if it's an e-mail address (#1484473)
if (strpos($username, '@'))
- $username = rc_strtolower($username);
+ $username = mb_strtolower($username);
// user already registered -> overwrite username
if ($user = rcube_user::query($username, $host))
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index fba30de0b..5b5a98ceb 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -2397,10 +2397,10 @@ class rcube_imap
$key,
$index,
$headers->uid,
- (string)rc_substr($this->db->encode($this->decode_header($headers->subject, TRUE)), 0, 128),
- (string)rc_substr($this->db->encode($this->decode_header($headers->from, TRUE)), 0, 128),
- (string)rc_substr($this->db->encode($this->decode_header($headers->to, TRUE)), 0, 128),
- (string)rc_substr($this->db->encode($this->decode_header($headers->cc, TRUE)), 0, 128),
+ (string)mb_substr($this->db->encode($this->decode_header($headers->subject, TRUE)), 0, 128),
+ (string)mb_substr($this->db->encode($this->decode_header($headers->from, TRUE)), 0, 128),
+ (string)mb_substr($this->db->encode($this->decode_header($headers->to, TRUE)), 0, 128),
+ (string)mb_substr($this->db->encode($this->decode_header($headers->cc, TRUE)), 0, 128),
(int)$headers->size,
serialize($this->db->encode(clone $headers)),
is_object($struct) ? serialize($this->db->encode(clone $struct)) : NULL
@@ -2788,7 +2788,7 @@ class rcube_imap
if (($p = array_search(strtolower($folder), $this->default_folders_lc)) !== false && !$a_defaults[$p])
$a_defaults[$p] = $folder;
else
- $folders[$folder] = rc_strtolower(rcube_charset_convert($folder, 'UTF7-IMAP'));
+ $folders[$folder] = mb_strtolower(rcube_charset_convert($folder, 'UTF7-IMAP'));
}
// sort folders and place defaults on the top
diff --git a/program/include/rcube_shared.inc b/program/include/rcube_shared.inc
index 1b2fe970f..d5f930aaf 100644
--- a/program/include/rcube_shared.inc
+++ b/program/include/rcube_shared.inc
@@ -185,7 +185,6 @@ function json_serialize($var)
return $var ? '1' : '0';
else
return "'".JQ($var)."'";
-
}
@@ -209,9 +208,9 @@ function array2js($arr, $type='')
*/
function in_array_nocase($needle, $haystack)
{
- $needle = rc_strtolower($needle);
+ $needle = mb_strtolower($needle);
foreach ($haystack as $value)
- if ($needle===rc_strtolower($value))
+ if ($needle===mb_strtolower($value))
return true;
return false;
@@ -227,7 +226,7 @@ function in_array_nocase($needle, $haystack)
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', 'nein', ''), TRUE))
return FALSE;
else
return TRUE;
@@ -338,81 +337,11 @@ function make_absolute_url($path, $base_url)
return $abs_path;
}
-
-/**
- * Wrapper function for strlen
- */
-function rc_strlen($str)
-{
- if (function_exists('mb_strlen'))
- return mb_strlen($str);
- else
- return strlen($str);
-}
-
-/**
- * Wrapper function for strtolower
- */
-function rc_strtolower($str)
-{
- if (function_exists('mb_strtolower'))
- return mb_strtolower($str);
- else
- return strtolower($str);
-}
-
-/**
- * Wrapper function for strtoupper
- */
-function rc_strtoupper($str)
-{
- if (function_exists('mb_strtoupper'))
- return mb_strtoupper($str);
- else
- return strtoupper($str);
-}
-
-/**
- * Wrapper function for substr
- */
-function rc_substr($str, $start, $len=null)
-{
- if (function_exists('mb_substr'))
- return mb_substr($str, $start, $len);
- else
- return substr($str, $start, $len);
-}
-
-/**
- * Wrapper function for strpos
- */
-function rc_strpos($haystack, $needle, $offset=0)
-{
- if (function_exists('mb_strpos'))
- return mb_strpos($haystack, $needle, $offset);
- else
- return strpos($haystack, $needle, $offset);
-}
-
-/**
- * Wrapper function for strrpos
- */
-function rc_strrpos($haystack, $needle, $offset=0)
-{
- if (function_exists('mb_strrpos'))
- return mb_strrpos($haystack, $needle, $offset);
- else
- return strrpos($haystack, $needle, $offset);
-}
-
/**
* Wrapper function for wordwrap
*/
function rc_wordwrap($string, $width=75, $break="\n", $cut=false)
{
- if (!function_exists('mb_substr') || !function_exists('mb_strlen'))
- return wordwrap($string, $width, $break, $cut);
-
$para = explode($break, $string);
$string = '';
while (count($para)) {
@@ -479,30 +408,6 @@ function rc_request_header($name)
/**
- * Replace the middle part of a string with ...
- * if it is longer than the allowed length
- *
- * @param string Input string
- * @param int Max. length
- * @param string Replace removed chars with this
- * @return string Abbreviated string
- */
-function abbreviate_string($str, $maxlength, $place_holder='...')
-{
- $length = rc_strlen($str);
- $first_part_length = floor($maxlength/2) - rc_strlen($place_holder);
-
- if ($length > $maxlength)
- {
- $second_starting_location = $length - $maxlength + $first_part_length + 1;
- $str = rc_substr($str, 0, $first_part_length) . $place_holder . rc_substr($str, $second_starting_location, $length);
- }
-
- return $str;
-}
-
-
-/**
* Make sure the string ends with a slash
*/
function slashify($str)
@@ -580,6 +485,29 @@ function get_offset_time($offset_str, $factor=1)
/**
+ * Replace the middle part of a string with ...
+ * if it is longer than the allowed length
+ *
+ * @param string Input string
+ * @param int Max. length
+ * @param string Replace removed chars with this
+ * @return string Abbreviated string
+ */
+function abbreviate_string($str, $maxlength, $place_holder='...')
+{
+ $length = mb_strlen($str);
+ $first_part_length = floor($maxlength/2) - mb_strlen($place_holder);
+
+ if ($length > $maxlength)
+ {
+ $second_starting_location = $length - $maxlength + $first_part_length + 1;
+ $str = mb_substr($str, 0, $first_part_length) . $place_holder . mb_substr($str, $second_starting_location, $length);
+ }
+
+ return $str;
+}
+
+/**
* A method to guess the mime_type of an attachment.
*
* @param string $path Path to the file.
@@ -683,4 +611,51 @@ function rcube_explode_quoted_string($delimiter, $string)
return $result;
}
+
+/**
+ * mbstring replacement functions
+ */
+
+if (!function_exists('mb_strlen')) {
+ function mb_strlen($str)
+ {
+ return strlen($str);
+ }
+}
+
+if (!function_exists('mb_strtolower')) {
+ function mb_strtolower($str)
+ {
+ return strtolower($str);
+ }
+}
+
+if (!function_exists('mb_strtoupper')) {
+ function mb_strtoupper($str)
+ {
+ return strtoupper($str);
+ }
+}
+
+if (!function_exists('mb_substr')) {
+ function mb_substr($str, $start, $len=null)
+ {
+ return substr($str, $start, $len);
+ }
+}
+
+if (!function_exists('mb_strpos')) {
+ function mb_strpos($haystack, $needle, $offset=0)
+ {
+ return strpos($haystack, $needle, $offset);
+ }
+}
+
+if (!function_exists('mb_strrpos')) {
+ function mb_strrpos($haystack, $needle, $offset=0)
+ {
+ return strrpos($haystack, $needle, $offset);
+ }
+}
+
?>
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 1e05c435a..d17840104 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -267,7 +267,7 @@ function rcmail_compose_header_from($attrib)
foreach ($a_to as $addr)
{
if (!empty($addr['mailto']))
- $a_recipients[] = rc_strtolower($addr['mailto']);
+ $a_recipients[] = mb_strtolower($addr['mailto']);
}
if (!empty($MESSAGE->headers->cc))
@@ -276,7 +276,7 @@ function rcmail_compose_header_from($attrib)
foreach ($a_cc as $addr)
{
if (!empty($addr['mailto']))
- $a_recipients[] = rc_strtolower($addr['mailto']);
+ $a_recipients[] = mb_strtolower($addr['mailto']);
}
}
}
@@ -318,7 +318,7 @@ function rcmail_compose_header_from($attrib)
if ($compose_mode == RCUBE_COMPOSE_DRAFT && strstr($MESSAGE->headers->from, $sql_arr['email']))
$from_id = $sql_arr['identity_id'];
// set identity if it's one of the reply-message recipients (with prio for default identity)
- else if (in_array(rc_strtolower($sql_arr['email']), $a_recipients) && (empty($from_id) || $sql_arr['standard']))
+ else if (in_array(mb_strtolower($sql_arr['email']), $a_recipients) && (empty($from_id) || $sql_arr['standard']))
$from_id = $sql_arr['identity_id'];
}
}
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc
index ffd569d21..068ccbcd7 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -162,7 +162,7 @@ function rcmail_message_attachments($attrib)
$ol .= html::tag('li', null, sprintf("%s (%s)", Q($attach_prop->filename), Q(show_bytes($attach_prop->size))));
}
else {
- if (rc_strlen($attach_prop->filename) > 50) {
+ if (mb_strlen($attach_prop->filename) > 50) {
$filename = abbreviate_string($attach_prop->filename, 50);
$title = $attach_prop->filename;
}
diff --git a/program/steps/mail/spell_pspell.inc b/program/steps/mail/spell_pspell.inc
index 8e574a62d..717b92ee5 100644
--- a/program/steps/mail/spell_pspell.inc
+++ b/program/steps/mail/spell_pspell.inc
@@ -49,13 +49,13 @@ $words = preg_split('/[ !"#$%&()*+\\,-.\/\n:;<=>?@\[\]^_{|}]+/', $text, NULL, P
$plink = pspell_new(get_input_value('lang', RCUBE_INPUT_GET), null, null, RCMAIL_CHARSET, PSPELL_FAST);
// send output
-$out = '<?xml version="1.0" encoding="'.RCMAIL_CHARSET.'"?><spellresult charschecked="'.rc_strlen($text).'">';
+$out = '<?xml version="1.0" encoding="'.RCMAIL_CHARSET.'"?><spellresult charschecked="'.mb_strlen($text).'">';
$diff = 0;
foreach ($words as $w) {
$word = trim($w[0]);
$pos = $w[1] - $diff;
- $len = rc_strlen($word);
+ $len = mb_strlen($word);
if ($word && $plink && !pspell_check($plink, $word)) {
$suggestions = pspell_suggest($plink, $word);
if (sizeof($suggestions)>10)