thomascube
2006-03-03 ea7c46b4f37691702b8e78dea34c3e9a3afb232d
program/include/main.inc
@@ -24,6 +24,12 @@
require_once('lib/utf8.class.php');
// define constannts for input reading
define('RCUBE_INPUT_GET', 0x0101);
define('RCUBE_INPUT_POST', 0x0102);
define('RCUBE_INPUT_GPC', 0x0103);
// register session and connect to server
function rcmail_startup($task='mail')
  {
@@ -79,7 +85,6 @@
  session_start();
  $sess_id = session_id();
  
    $_SESSION['user_lang'] = rcube_language_prop($CONFIG['locale_string']);
  // create session and set session vars
  if (!$_SESSION['client_id'])
    {
@@ -308,11 +313,12 @@
  $OUTPUT->include_script('program/js/common.js');
  $OUTPUT->include_script('program/js/app.js');
  // set locale setting
  rcmail_set_locale($sess_user_lang);
  // set user-selected charset
  if (!empty($CONFIG['charset']))
    $OUTPUT->set_charset($CONFIG['charset']);
  else
    rcmail_set_locale($sess_user_lang);
  // add some basic label to client
  rcube_add_label('loading');
@@ -351,7 +357,7 @@
  if ($MBSTRING && function_exists("mb_language"))
    {
    if (!mb_language(strtok($lang, "_")))
    if (!@mb_language(strtok($lang, "_")))
      $MBSTRING = FALSE;   //  unsupport language
    }
@@ -376,6 +382,8 @@
    $imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? TRUE : FALSE;
    $imap_port = isset($a_host['port']) ? $a_host['port'] : ($imap_ssl ? 993 : $CONFIG['default_port']);
    }
  else
    $imap_port = $CONFIG['default_port'];
  // query if user already registered
  $sql_result = $DB->query("SELECT user_id, username, language, preferences
@@ -470,10 +478,10 @@
  if ($user_id = $DB->insert_id(get_sequence_name('users')))
    {
    if (is_string($CONFIG['mail_domain']))
      $mail_domain = $CONFIG['mail_domain'];
    else if (is_array($CONFIG['mail_domain']) && isset($CONFIG['mail_domain'][$host]))
    if (is_array($CONFIG['mail_domain']) && isset($CONFIG['mail_domain'][$host]))
      $mail_domain = $CONFIG['mail_domain'][$host];
    else if (!empty($CONFIG['mail_domain']))
      $mail_domain = $CONFIG['mail_domain'];
    else
      $mail_domain = $host;
   
@@ -501,14 +509,6 @@
                       
    // get existing mailboxes
    $a_mailboxes = $IMAP->list_mailboxes();
    // check if the configured mailbox for sent messages exists
    if ($CONFIG['sent_mbox'] && !in_array_nocase($CONFIG['sent_mbox'], $a_mailboxes))
      $IMAP->create_mailbox($CONFIG['sent_mbox'], TRUE);
    // check if the configured mailbox for sent messages exists
    if ($CONFIG['trash_mbox'] && !in_array_nocase($CONFIG['trash_mbox'], $a_mailboxes))
      $IMAP->create_mailbox($CONFIG['trash_mbox'], TRUE);
    }
  else
    {
@@ -662,6 +662,7 @@
// send correct response on a remote request
function rcube_remote_response($js_code, $flush=FALSE)
  {
  global $OUTPUT, $CHARSET;
  static $s_header_sent = FALSE;
  
  if (!$s_header_sent)
@@ -673,7 +674,7 @@
    }
  // send response code
  print rcube_charset_convert($js_code, 'UTF-8', $GLOBALS['CHARSET']);
  print rcube_charset_convert($js_code, $CHARSET, $OUTPUT->get_charset());
  if ($flush)  // flush the output buffer
    flush();
@@ -888,7 +889,12 @@
  // encode for javascript use
  if ($enctype=='js')
    {
    if ($OUTPUT->get_charset()!='UTF-8')
      $str = rcube_charset_convert($str, $GLOBALS['CHARSET'], $OUTPUT->get_charset());
    return preg_replace(array("/\r\n/", '/"/', "/([^\\\])'/"), array('\n', '\"', "$1\'"), strtr($str, $js_rep_table));
    }
  // encode for RTF
  if ($enctype=='rtf')
@@ -897,6 +903,49 @@
  // no encoding given -> return original string
  return $str;
  }
/**
 * Read input value and convert it for internal use
 * Performs stripslashes() and charset conversion if necessary
 *
 * @param  string   Field name to read
 * @param  int      Source to get value from (GPC)
 * @param  boolean  Allow HTML tags in field value
 * @param  string   Charset to convert into
 * @return string   Field value or NULL if not available
 */
function get_input_value($fname, $source, $allow_html=FALSE, $charset=NULL)
  {
  global $OUTPUT;
  $value = NULL;
  if ($source==RCUBE_INPUT_GET && isset($_GET[$fname]))
    $value = $_GET[$fname];
  else if ($source==RCUBE_INPUT_POST && isset($_POST[$fname]))
    $value = $_POST[$fname];
  else if ($source==RCUBE_INPUT_GPC)
    {
    if (isset($_GET[$fname]))
      $value = $_GET[$fname];
    else if (isset($_POST[$fname]))
      $value = $_POST[$fname];
    else if (isset($_COOKIE[$fname]))
      $value = $_COOKIE[$fname];
    }
  // strip slashes if magic_quotes enabled
  if ((bool)get_magic_quotes_gpc())
    $value = stripslashes($value);
  // remove HTML tags if not allowed
  if (!$allow_html)
    $value = strip_tags($value);
  // convert to internal charset
  return rcube_charset_convert($value, $OUTPUT->get_charset(), $charset);
  }
@@ -1484,7 +1533,7 @@
  $input_action = new hiddenfield(array('name' => '_action', 'value' => 'login'));
    
  $fields = array();
  $fields['user'] = $input_user->show($_POST['_user']);
  $fields['user'] = $input_user->show(get_input_value('_user', RCUBE_INPUT_POST));
  $fields['pass'] = $input_pass->show();
  $fields['action'] = $input_action->show();
  
@@ -1543,6 +1592,8 @@
function rcmail_charset_selector($attrib)
  {
  global $OUTPUT;
  // pass the following attributes to the form class
  $field_attrib = array('name' => '_charset');
  foreach ($attrib as $attr => $value)
@@ -1571,7 +1622,7 @@
  $select = new select($field_attrib);
  $select->add(array_values($charsets), array_keys($charsets));
  
  $set = $_POST['_charset'] ? $_POST['_charset'] : $GLOBALS['CHARSET'];
  $set = $_POST['_charset'] ? $_POST['_charset'] : $OUTPUT->get_charset();
  return $select->show($set);
  }