alecpl
2010-01-29 2b35c5d8f6526c86d356913f151af7e6df3c2976
program/include/rcmail.php
@@ -15,7 +15,7 @@
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
 $Id: rcmail.php 328 2006-08-30 17:41:21Z thomasb $
 $Id$
*/
@@ -492,31 +492,35 @@
    if (!($imap_login  = $this->imap->connect($host, $username, $pass, $imap_port, $imap_ssl)))
      return false;
    $this->set_imap_prop();
    // user already registered -> update user's record
    if (is_object($user)) {
      // create default folders on first login
      if (!$user->data['last_login'] && $config['create_default_folders'])
        $this->imap->create_default_folders();
      $user->touch();
    }
    // create new system user
    else if ($config['auto_create_user']) {
      if ($created = rcube_user::create($username, $host)) {
        $user = $created;
        // get existing mailboxes (but why?)
        // $a_mailboxes = $this->imap->list_mailboxes();
        // create default folders on first login
        if ($config['create_default_folders'])
          $this->imap->create_default_folders();
      }
      else {
        raise_error(array(
          'code' => 600,
          'type' => 'php',
          'code' => 600, 'type' => 'php',
     'file' => __FILE__, 'line' => __LINE__,
          'message' => "Failed to create a user record. Maybe aborted by a plugin?"
          ), true, false);
          ), true, false);
      }
    }
    else {
      raise_error(array(
        'code' => 600,
        'type' => 'php',
        'file' => RCMAIL_CONFIG_DIR."/main.inc.php",
        'code' => 600, 'type' => 'php',
        'file' => __FILE__, 'line' => __LINE__,
        'message' => "Acces denied for new user $username. 'auto_create_user' is disabled"
        ), true, false);
    }
@@ -538,11 +542,7 @@
        $_SESSION['timezone'] = floatval($_REQUEST['_timezone']);
      // force reloading complete list of subscribed mailboxes
      $this->set_imap_prop();
      $this->imap->clear_cache('mailboxes');
      if ($config['create_default_folders'])
          $this->imap->create_default_folders();
      return true;
    }
@@ -636,25 +636,14 @@
      $attrib = array('name' => $attrib);
    $nr = is_numeric($attrib['nr']) ? $attrib['nr'] : 1;
    $vars = isset($attrib['vars']) ? $attrib['vars'] : '';
    $name = $attrib['name'] ? $attrib['name'] : '';
    $command_name = !empty($attrib['command']) ? $attrib['command'] : NULL;
    $alias = $attrib['name'] ? $attrib['name'] : ($command_name && $command_label_map[$command_name] ? $command_label_map[$command_name] : '');
    // check for text with domain
    if ($domain && ($text_item = $this->texts[$domain.'.'.$alias]))
    if ($domain && ($text_item = $this->texts[$domain.'.'.$name]))
      ;
    // text does not exist
    else if (!($text_item = $this->texts[$alias])) {
      /*
      raise_error(array(
        'code' => 500,
        'type' => 'php',
        'line' => __LINE__,
        'file' => __FILE__,
        'message' => "Missing localized text for '$alias' in '$sess_user_lang'"), TRUE, FALSE);
      */
      return "[$alias]";
    else if (!($text_item = $this->texts[$name])) {
      return "[$name]";
    }
    // make text item array 
@@ -684,11 +673,8 @@
    // replace vars in text
    if (is_array($attrib['vars'])) {
      foreach ($attrib['vars'] as $var_key => $var_value)
        $a_replace_vars[$var_key{0}=='$' ? substr($var_key, 1) : $var_key] = $var_value;
        $text = str_replace($var_key[0]!='$' ? '$'.$var_key : $var_key, $var_value, $text);
    }
    if ($a_replace_vars)
      $text = preg_replace('/\$\{?([_a-z]{1}[_a-z0-9]*)\}?/ei', '$a_replace_vars["\1"]', $text);
    // format output
    if (($attrib['uppercase'] && strtolower($attrib['uppercase']=='first')) || $attrib['ucfirst'])
@@ -867,6 +853,17 @@
    // before closing the database connection, write session data
    if ($_SERVER['REMOTE_ADDR'])
      session_write_close();
    // write performance stats to logs/console
    if ($this->config->get('devel_mode')) {
      if (function_exists('memory_get_usage'))
        $mem = show_bytes(memory_get_usage());
      if (function_exists('memory_get_peak_usage'))
        $mem .= '/'.show_bytes(memory_get_peak_usage());
      $log = $this->task . ($this->action ? '/'.$this->action : '') . ($mem ? " [$mem]" : '');
      rcube_print_time(RCMAIL_START, $log);
    }
  }
  
  
@@ -961,9 +958,8 @@
    else
    {
      raise_error(array(
        'code' => 500,
        'type' => 'php',
        'file' => __FILE__,
        'code' => 500, 'type' => 'php',
        'file' => __FILE__, 'line' => __LINE__,
        'message' => "Could not perform encryption; make sure Mcrypt is installed or lib/des.inc is available"
      ), true, true);
    }
@@ -1007,9 +1003,8 @@
    else
    {
      raise_error(array(
        'code' => 500,
        'type' => 'php',
        'file' => __FILE__,
        'code' => 500, 'type' => 'php',
        'file' => __FILE__, 'line' => __LINE__,
        'message' => "Could not perform decryption; make sure Mcrypt is installed or lib/des.inc is available"
      ), true, true);
    }
@@ -1061,9 +1056,13 @@
   */
  public static function setcookie($name, $value, $exp = 0)
  {
    if (headers_sent())
      return;
    $cookie = session_get_cookie_params();
    setcookie($name, $value, $exp, $cookie['path'], $cookie['domain'],
      rcube_https_check());
      rcube_https_check(), true);
  }
}