- performance fix: don't check mbstring functions existence too often
| | |
| | | |
| | | // 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)) |
| | |
| | | $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 |
| | |
| | | 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 |
| | |
| | | return $var ? '1' : '0'; |
| | | else |
| | | return "'".JQ($var)."'"; |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | */ |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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)) { |
| | |
| | | |
| | | return $hdrs[$key]; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 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; |
| | | } |
| | | |
| | | |
| | | /** |
| | |
| | | return $ts; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 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. |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | ?> |
| | |
| | | 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)) |
| | |
| | | foreach ($a_cc as $addr) |
| | | { |
| | | if (!empty($addr['mailto'])) |
| | | $a_recipients[] = rc_strtolower($addr['mailto']); |
| | | $a_recipients[] = mb_strtolower($addr['mailto']); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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']; |
| | | } |
| | | } |
| | |
| | | $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; |
| | | } |
| | |
| | | $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) |