From ee258ce15870e6cb4b733087368a062b5fd66b52 Mon Sep 17 00:00:00 2001 From: alecpl Date: Thu, 23 Jul 2009 12:12:27 +0000 Subject: - performance fix: don't check mbstring functions existence too often --- program/include/rcmail.php | 2 +- program/include/rcube_imap.php | 10 +-- program/include/rcube_shared.inc | 171 +++++++++++++++--------------------- program/steps/mail/compose.inc | 6 +- program/steps/mail/show.inc | 2 +- program/steps/mail/spell_pspell.inc | 4 +- 6 files changed, 85 insertions(+), 110 deletions(-) (limited to 'program') 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)) { @@ -478,30 +407,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 */ @@ -579,6 +484,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. * @@ -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 = ''; +$out = ''; $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) -- cgit v1.2.3