Aleksander Machniak
2012-08-21 fe2f0be4352ba0bc213a2c6d4dfcbbddea1a551c
program/include/rcmail.php
@@ -453,7 +453,14 @@
    // Convert username to lowercase. If storage backend
    // is case-insensitive we need to store always the same username (#1487113)
    if ($config['login_lc']) {
      $username = mb_strtolower($username);
      if ($config['login_lc'] == 2 || $config['login_lc'] === true) {
        $username = mb_strtolower($username);
      }
      else if (strpos($username, '@')) {
        // lowercase domain name
        list($local, $domain) = explode('@', $username);
        $username = $local . '@' . mb_strtolower($domain);
      }
    }
    // try to resolve email address from virtuser table
@@ -463,17 +470,13 @@
    // Here we need IDNA ASCII
    // Only rcube_contacts class is using domain names in Unicode
    $host = rcube_utils::idn_to_ascii($host);
    if (strpos($username, '@')) {
      // lowercase domain name
      list($local, $domain) = explode('@', $username);
      $username = $local . '@' . mb_strtolower($domain);
      $username = rcube_utils::idn_to_ascii($username);
    }
    $host     = rcube_utils::idn_to_ascii($host);
    $username = rcube_utils::idn_to_ascii($username);
    // user already registered -> overwrite username
    if ($user = rcube_user::query($username, $host))
    if ($user = rcube_user::query($username, $host)) {
      $username = $user->data['username'];
    }
    $storage = $this->get_storage();
@@ -726,8 +729,12 @@
   */
  public function url($p)
  {
    if (!is_array($p))
    if (!is_array($p)) {
      if (strpos($p, 'http') === 0)
        return $p;
      $p = array('_action' => @func_get_arg(0));
    }
    $task = $p['_task'] ? $p['_task'] : ($p['task'] ? $p['task'] : $this->task);
    $p['_task'] = $task;