thomascube
2007-09-05 0d1dd7c80c5ab8a3879294e6e6bb4c20f7054241
program/include/main.inc
@@ -299,13 +299,16 @@
 */
function rcmail_shutdown()
  {
  global $IMAP;
  global $IMAP, $CONTACTS;
  
  if (is_object($IMAP))
    {
    $IMAP->close();
    $IMAP->write_cache();
    }
  if (is_object($CONTACTS))
    $CONTACTS->close();
    
  // before closing the database connection, write session data
  session_write_close();
@@ -472,19 +475,11 @@
  static $s_mbstring_loaded = NULL;
  
  // settings for mbstring module (by Tadashi Jokagi)
  if (is_null($s_mbstring_loaded) && ($s_mbstring_loaded = extension_loaded("mbstring")))
  {
    $MBSTRING = array();
    foreach (mb_list_encodings() as $charset)
      $MBSTRING[strtoupper($charset)] = strtoupper($charset);
    // add some alias charsets
    $MBSTRING['UTF-7'] = "UTF7-IMAP";
    $MBSTRING['WINDOWS-1257'] = "ISO-8859-13";
  }
  else if (is_null($s_mbstring_loaded))
  if (is_null($s_mbstring_loaded))
    $MBSTRING = $s_mbstring_loaded = extension_loaded("mbstring");
  else
    $MBSTRING = $s_mbstring_loaded = FALSE;
  if ($MBSTRING)
    mb_internal_encoding(RCMAIL_CHARSET);
@@ -577,7 +572,7 @@
     Inspired by Marco <P0L0_notspam_binware.org>
  */
  // Check if we need to add domain
  if (!empty($CONFIG['username_domain']) && !strstr($user, '@'))
  if (!empty($CONFIG['username_domain']) && !strpos($user, '@'))
    {
    if (is_array($CONFIG['username_domain']) && isset($CONFIG['username_domain'][$host]))
      $user .= '@'.$CONFIG['username_domain'][$host];
@@ -585,6 +580,9 @@
      $user .= '@'.$CONFIG['username_domain'];
    }
  // lowercase username if it's an e-mail address (#1484473)
  if (strpos($user, '@'))
    $user = strtolower($user);
  // query if user already registered
  $sql_result = $DB->query("SELECT user_id, username, language, preferences
@@ -602,7 +600,7 @@
    }
  // try to resolve email address from virtuser table    
  if (!empty($CONFIG['virtuser_file']) && strstr($user, '@'))
  if (!empty($CONFIG['virtuser_file']) && strpos($user, '@'))
    $user = rcmail_email2user($user);
@@ -675,7 +673,7 @@
  $user_email = '';
  // try to resolve user in virtusertable
  if (!empty($CONFIG['virtuser_file']) && strstr($user, '@')==FALSE)
  if (!empty($CONFIG['virtuser_file']) && !strpos($user, '@'))
    $user_email = rcmail_user2email($user);
  $DB->query("INSERT INTO ".get_table_name('users')."
@@ -691,7 +689,7 @@
    $mail_domain = rcmail_mail_domain($host);
   
    if ($user_email=='')
      $user_email = strstr($user, '@') ? $user : sprintf('%s@%s', $user, $mail_domain);
      $user_email = strpos($user, '@') ? $user : sprintf('%s@%s', $user, $mail_domain);
    $user_name = $user!=$user_email ? $user : '';
@@ -1057,7 +1055,6 @@
function rcube_charset_convert($str, $from, $to=NULL)
  {
  global $MBSTRING;
  static $mb_encodings;
  $from = strtoupper($from);
  $to = $to==NULL ? strtoupper(RCMAIL_CHARSET) : strtoupper($to);
@@ -1070,10 +1067,13 @@
    return iconv($from, $to . "//IGNORE", $str);
  // convert charset using mbstring module  
  if ($MBSTRING && ($mbfrom = $MBSTRING[$from]) && ($mbto = $MBSTRING[$to]))
  if ($MBSTRING)
    {
    $to = $to=="UTF-7" ? "UTF7-IMAP" : $to;
    $from = $from=="UTF-7" ? "UTF7-IMAP": $from;
    // return if convert succeeded
    if (($out = mb_convert_encoding($str, $mbto, $mbfrom)) != '')
    if (($out = mb_convert_encoding($str, $to, $from)) != '')
      return $out;
    }