alecpl
2010-06-01 5bde172aef1b016baaf1330bd71e9d1f524116d5
- Add 'messages_list' hook (#1486266) 


2 files modified
27 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/steps/mail/func.inc 26 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG RoundCube Webmail
===========================
- Add 'messages_list' hook (#1486266)
- Add request* event triggers in http_post/http_request (#1486054)
- Fix use RFC-compliant line-delimiter when saving messages on IMAP (#1486712)
- Add 'imap_timeout' option (#1486760)
program/steps/mail/func.inc
@@ -227,7 +227,7 @@
 */
function rcmail_js_message_list($a_headers, $insert_top=FALSE, $head_replace=FALSE)
{
  global $CONFIG, $IMAP, $OUTPUT;
  global $CONFIG, $IMAP, $RCMAIL, $OUTPUT;
  if (!empty($_SESSION['list_attrib']['columns']))
    $a_show_cols = $_SESSION['list_attrib']['columns'];
@@ -246,6 +246,14 @@
  if (!in_array('threads', $a_show_cols))
    array_unshift($a_show_cols, 'threads');
  // Plugins may set header's list_cols/list_flags and other rcube_mail_header variables
  // and list columns
  $plugin = $RCMAIL->plugins->exec_hook('messages_list',
    array('messages' => $a_headers, 'cols' => $a_show_cols));
  $a_show_cols = $plugin['cols'];
  $a_headers   = $plugin['messages'];
  $thead = $head_replace ? rcmail_message_list_head($_SESSION['list_attrib'], $a_show_cols) : NULL;
  $OUTPUT->command('set_message_coltypes', $a_show_cols, $thead);
@@ -260,15 +268,15 @@
    unset($a_show_cols[$key]);
  if (($key = array_search('threads', $a_show_cols)) !== FALSE)
    unset($a_show_cols[$key]);
  // loop through message headers
  foreach ($a_headers as $n => $header)
    {
    $a_msg_cols = array();
    $a_msg_flags = array();
    if (empty($header))
      continue;
    $a_msg_cols = array();
    $a_msg_flags = array();
    $IMAP->set_charset(!empty($header->charset) ? $header->charset : $CONFIG['default_charset']);
@@ -317,6 +325,12 @@
      $a_msg_flags['attachment'] = 1;
    $a_msg_flags['mbox'] = $mbox;
    // merge with plugin result
    if (!empty($header->list_flags) && is_array($header->list_flags))
      $a_msg_flags = array_merge($a_msg_flags, $header->list_flags);
    if (!empty($header->list_cols) && is_array($header->list_cols))
      $a_msg_cols = array_merge($a_msg_cols, $header->list_cols);
    $OUTPUT->command('add_message_row',
      $header->uid,
      $a_msg_cols,
@@ -324,7 +338,7 @@
      $insert_top);
    }
    if ($IMAP->threading && $a_headers) {
    if ($IMAP->threading) {
      $OUTPUT->command('init_threads', (array) $roots);
    }
}