thomascube
2008-09-06 7f22f297acb9de8a9b1bc0d22d1e9a07cb6177e6
program/include/main.inc
@@ -76,9 +76,8 @@
  if (!empty($opt))
    {
    $db = &rcmail::get_instance()->db;
    $dbclass = 'rcube_mdb2';
    
    if ($db->db_provider=='pgsql' && ($db instanceof $dbclass))
    if ($db->db_provider=='pgsql')
      {
      $db->db_handle->setOption('disable_smart_seqname', true);
      $db->db_handle->setOption('seqname_format', '%s');
@@ -318,7 +317,7 @@
    $is_iso_8859_1 = true;
  }
  if (!$enctype)
    $enctype = $GLOBALS['OUTPUT_TYPE'];
    $enctype = $OUTPUT->type;
  // encode for plaintext
  if ($enctype=='text')
@@ -707,9 +706,13 @@
    return '';
   
  // get user's timezone
  $tz = $CONFIG['timezone'];
  if ($CONFIG['dst_active'])
    $tz++;
  if ($CONFIG['timezone'] === 'auto')
    $tz = isset($_SESSION['timezone']) ? $_SESSION['timezone'] : date('Z')/3600;
  else {
    $tz = $CONFIG['timezone'];
    if ($CONFIG['dst_active'])
      $tz++;
  }
  // convert time to user's timezone
  $timestamp = $ts - date('Z', $ts) + ($tz * 3600);
@@ -793,19 +796,20 @@
 *
 * @param mixed Debug message or data
 */
function console($msg)
function console()
  {
  if (!is_string($msg))
    $msg = var_export($msg, true);
  $msg = array();
  foreach (func_get_args() as $arg)
    $msg[] = !is_string($arg) ? var_export($arg, true) : $arg;
  if (!($GLOBALS['CONFIG']['debug_level'] & 4))
    write_log('console', $msg);
    write_log('console', join(";\n", $msg));
  else if ($GLOBALS['OUTPUT']->ajax_call)
    print "/*\n $msg \n*/\n";
    print "/*\n " . join(";\n", $msg) . " \n*/\n";
  else
    {
    print '<div style="background:#eee; border:1px solid #ccc; margin-bottom:3px; padding:6px"><pre>';
    print $msg;
    print join(";<br/>\n", $msg);
    print "</pre></div>\n";
    }
  }
@@ -829,16 +833,24 @@
                 date("d-M-Y H:i:s O", mktime()),
                 $line);
                 
  if (empty($CONFIG['log_dir']))
    $CONFIG['log_dir'] = INSTALL_PATH.'logs';
  if ($CONFIG['log_driver'] == 'syslog') {
    if ($name == 'errors')
      $prio = LOG_ERR;
    else
      $prio = LOG_INFO;
    syslog($prio, $log_entry);
  } else {
    // log_driver == 'file' is assumed here
    if (empty($CONFIG['log_dir']))
      $CONFIG['log_dir'] = INSTALL_PATH.'logs';
      
  // try to open specific log file for writing
  if ($fp = @fopen($CONFIG['log_dir'].'/'.$name, 'a'))
    {
    fwrite($fp, $log_entry);
    fclose($fp);
    // try to open specific log file for writing
    if ($fp = @fopen($CONFIG['log_dir'].'/'.$name, 'a')) {
      fwrite($fp, $log_entry);
      fclose($fp);
    }
  }
}
/**
@@ -877,8 +889,10 @@
 */
function rcmail_mailbox_list($attrib)
{
  global $IMAP, $OUTPUT;
  global $RCMAIL;
  static $a_mailboxes;
  $attrib += array('maxlength' => 100, 'relanames' => false);
  // add some labels to client
  rcube_add_label('purgefolderconfirm');
@@ -891,13 +905,13 @@
    $attrib['id'] = 'rcmboxlist';
  // get mailbox list
  $mbox_name = $IMAP->get_mailbox_name();
  $mbox_name = $RCMAIL->imap->get_mailbox_name();
  
  // build the folders tree
  if (empty($a_mailboxes)) {
    // get mailbox list
    $a_folders = $IMAP->list_mailboxes();
    $delimiter = $IMAP->get_hierarchy_delimiter();
    $a_folders = $RCMAIL->imap->list_mailboxes();
    $delimiter = $RCMAIL->imap->get_hierarchy_delimiter();
    $a_mailboxes = array();
    foreach ($a_folders as $folder)
@@ -911,15 +925,17 @@
    if ($attrib['noselection'])
      $select->add(rcube_label($attrib['noselection']), '0');
    
    rcmail_render_folder_tree_select($a_mailboxes, $mbox_name, $attrib['maxlength'], $select);
    rcmail_render_folder_tree_select($a_mailboxes, $mbox_name, $attrib['maxlength'], $select, $attrib['realnames']);
    $out = $select->show();
  }
  else {
    $out = html::tag('ul', $attrib, rcmail_render_folder_tree_html($a_mailboxes, $mbox_name, $attrib['maxlength']), html::$common_attrib);
    $out = html::tag('ul', $attrib, rcmail_render_folder_tree_html($a_mailboxes, $mbox_name, $attrib['maxlength'], $attrib['realnames']), html::$common_attrib);
  }
  if ($type=='ul')
    $OUTPUT->add_gui_object('mailboxlist', $attrib['id']);
  if ($type=='ul') {
    $RCMAIL->output->add_gui_object('mailboxlist', $attrib['id']);
    $RCMAIL->output->set_env('collapsed_folders', $RCMAIL->config->get('collapsed_folders'));
  }
  return $out;
}
@@ -935,7 +951,7 @@
{
  global $RCMAIL;
  
  $p += array('maxlength' => 100);
  $p += array('maxlength' => 100, 'relanames' => false);
  $a_mailboxes = array();
  
  foreach ($RCMAIL->imap->list_mailboxes() as $folder)
@@ -946,7 +962,7 @@
  if ($p['noselection'])
    $select->add($p['noselection'], '');
    
  rcmail_render_folder_tree_select($a_mailboxes, $mbox, $p['maxlength'], $select);
  rcmail_render_folder_tree_select($a_mailboxes, $mbox, $p['maxlength'], $select, $p['realnames']);
  
  return $select;
}
@@ -989,9 +1005,9 @@
 * Return html for a structured list &lt;ul&gt; for the mailbox tree
 * @access private
 */
function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, $maxlength, $nestLevel=0)
function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, $maxlength, $realnames=false, $nestLevel=0)
  {
  global $COMM_PATH, $IMAP, $CONFIG, $OUTPUT;
  global $RCMAIL, $CONFIG;
  $idx = 0;
  $out = '';
@@ -1000,7 +1016,7 @@
    $zebra_class = (($nestLevel+1)*$idx) % 2 == 0 ? 'even' : 'odd';
    $title = null;
    if ($folder_class = rcmail_folder_classname($folder['id']))
    if (($folder_class = rcmail_folder_classname($folder['id'])) && !$realnames)
      $foldername = rcube_label($folder_class);
    else
      {
@@ -1037,6 +1053,8 @@
    if ($folder['id'] == $mbox_name)
      $classes[] = 'selected';
    $collapsed = preg_match('/&'.rawurlencode($folder['id']).'&/', $RCMAIL->config->get('collapsed_folders'));
    $js_name = JQ($folder['id']);
    $out .= html::tag('li', array(
        'id' => "rcmli".$folder_id,
@@ -1049,10 +1067,15 @@
        'onmouseout' => sprintf("return %s.unfocus_folder('%s')", JS_OBJECT_NAME, $js_name),
        'onmouseup' => sprintf("return %s.folder_mouse_up('%s')", JS_OBJECT_NAME, $js_name),
        'title' => $title,
      ), Q($foldername)));
      ), Q($foldername)) .
      (!empty($folder['folders']) ? html::div(array(
        'class' => ($collapsed ? 'collapsed' : 'expanded'),
        'style' => "position:absolute",
        'onclick' => sprintf("%s.command('collapse-folder', '%s')", JS_OBJECT_NAME, $js_name)
      ), '&nbsp;') : ''));
    
    if (!empty($folder['folders']))
      $out .= "\n<ul>\n" . rcmail_render_folder_tree_html($folder['folders'], $mbox_name, $maxlength, $nestLevel+1) . "</ul>\n";
      $out .= "\n<ul" . ($collapsed ? " style=\"display: none;\"" : "") . ">\n" . rcmail_render_folder_tree_html($folder['folders'], $mbox_name, $maxlength, $realnames, $nestLevel+1) . "</ul>\n";
    $out .= "</li>\n";
    $idx++;
@@ -1066,15 +1089,13 @@
 * Return html for a flat list <select> for the mailbox tree
 * @access private
 */
function rcmail_render_folder_tree_select(&$arrFolders, &$mbox_name, $maxlength, &$select, $nestLevel=0)
function rcmail_render_folder_tree_select(&$arrFolders, &$mbox_name, $maxlength, &$select, $realnames=false, $nestLevel=0)
  {
  global $IMAP, $OUTPUT;
  $idx = 0;
  $out = '';
  foreach ($arrFolders as $key=>$folder)
    {
    if ($folder_class = rcmail_folder_classname($folder['id']))
    if (!$realnames && ($folder_class = rcmail_folder_classname($folder['id'])))
      $foldername = rcube_label($folder_class);
    else
      {
@@ -1088,7 +1109,7 @@
    $select->add(str_repeat('&nbsp;', $nestLevel*4) . $foldername, $folder['id']);
    if (!empty($folder['folders']))
      $out .= rcmail_render_folder_tree_select($folder['folders'], $mbox_name, $maxlength, $select, $nestLevel+1);
      $out .= rcmail_render_folder_tree_select($folder['folders'], $mbox_name, $maxlength, $select, $realnames, $nestLevel+1);
    $idx++;
    }