X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=plugins%2Flistcommands%2Fsetup.php;h=4a9b73cb14e5c5c5c15de9df4596561e42bc3808;hp=a5fe59570cde56fa92a0ef1565c1198b128cec0e;hb=ea5f4b8eaf805c4cc4e9533e87d057300a7fe666;hpb=9da7002290f81e7347c75720c165c3568a9bc62c diff --git a/plugins/listcommands/setup.php b/plugins/listcommands/setup.php index a5fe5957..4a9b73cb 100644 --- a/plugins/listcommands/setup.php +++ b/plugins/listcommands/setup.php @@ -3,7 +3,7 @@ /** * setup.php * - * Copyright (c) 1999-2002 The SquirrelMail Project Team + * Copyright (c) 1999-2003 The SquirrelMail Project Team * Licensed under the GNU GPL. For full terms see the file COPYING. * * Implementation of RFC 2369 for SquirrelMail. @@ -12,8 +12,13 @@ * commands such as (un)subscribe, help and list archives. * * $Id$ + * @package plugins + * @subpackage listcommands */ +/** + * Initialize the listcommands plugin + */ function squirrelmail_plugin_init_listcommands () { global $squirrelmail_plugin_hooks; @@ -21,102 +26,68 @@ function squirrelmail_plugin_init_listcommands () { } function plugin_listcommands_menu() { - global $imapConnection, $passed_id, $color, $mailbox, - $message, $ent_num, $priority_level, $compose_new_win, $uid_support; - - $subject = trim($message->header->subject); + global $passed_id, $passed_ent_id, $color, $mailbox, $message; /** * Array of commands we can deal with from the header. The Reply option * is added later because we generate it using the Post information. */ - $fieldsdescr = array('Post' => _("Post to List"), - 'Reply' => _("Reply to List"), - 'Subscribe' => _("Subscribe"), - 'Unsubscribe' => _("Unsubscribe"), - 'Archive' => _("List Archives"), - 'Owner' => _("Contact Listowner"), - 'Help' => _("Help")); - $fields = array_keys($fieldsdescr); - - $sorted_cmds = array(); - $unsorted_cmds = array(); + $fieldsdescr = array('post' => _("Post to List"), + 'reply' => _("Reply to List"), + 'subscribe' => _("Subscribe"), + 'unsubscribe' => _("Unsubscribe"), + 'archive' => _("List Archives"), + 'owner' => _("Contact Listowner"), + 'help' => _("Help")); $output = array(); - $lfields = 'List-' . implode (' List-', $fields); + foreach ($message->rfc822_header->mlist as $cmd => $actions) { - $sid = sqimap_session_id($uid_support); - fputs ($imapConnection, "$sid FETCH $passed_id BODY.PEEK[HEADER.FIELDS ($lfields)]\r\n"); - $read = sqimap_read_data($imapConnection, $sid, true, $response, $emessage); - - for ($i = 1; $i < count($read); $i++) { - foreach ($fields as $field) { - if ( preg_match("/^List-$field: *<(.+?)>/i", $read[$i], $match) ) { - $unsorted_cmds[$field] = $match[1]; - } + /* I don't know this action... skip it */ + if ( ( function_exists('array_key_exists') && /* PHP >= 4.1 */ + !array_key_exists($cmd, $fieldsdescr) ) || + ( function_exists('key_exists') && + !key_exists($cmd, $fieldsdescr) ) /* PHP == 4.0.6 */ + ) { + continue; } - } - - if (count($unsorted_cmds) == 0) { - return; - } - foreach ($fields as $field) { - foreach ($unsorted_cmds as $cmd => $url) { - if ($field == $cmd) { - $cmds[$cmd] = $url; - } - } - } + /* proto = {mailto,href} */ + $proto = array_shift(array_keys($actions)); + $act = array_shift($actions); - foreach ($cmds as $cmd => $url) { - if (eregi('mailto:(.+)', $url, $regs)) { - $purl = parse_url($url); + if ($proto == 'mailto') { - if (($cmd == 'Post') || ($cmd == 'Owner')) { - $url = 'compose.php?'; + if (($cmd == 'post') || ($cmd == 'owner')) { + $url = 'src/compose.php?'; } else { - $url = "../plugins/listcommands/mailout.php?action=$cmd&"; + $url = "plugins/listcommands/mailout.php?action=$cmd&"; } + $url .= 'send_to=' . strtr($act,'?','&'); - $url .= 'mailbox=' . urlencode($mailbox) - . '&send_to=' . $purl['path']; + $output[] = makeComposeLink($url, $fieldsdescr[$cmd]); - if (isset($purl['query'])) { - $url .= '&' . $purl['query']; - } - if ($compose_new_win == '1') { - $output[] = "" . $fieldsdescr[$cmd] . ''; - } - else { - $output[] = '' . $fieldsdescr[$cmd] . ''; - } - if ($cmd == 'Post') { - $url .= '&reply_subj=' . urlencode($subject) - . '&reply_id=' . $passed_id - . '&ent_num=' . $ent_num - . '&mailprio=' . $priority_level; - if ($compose_new_win == '1') { - $output[] = "" . $fieldsdescr['Reply'] . ''; - } - else { - $output[] = '' . $fieldsdescr['Reply'] . ''; - } + if ($cmd == 'post') { + $url .= '&passed_id='.$passed_id. + '&mailbox='.urlencode($mailbox). + (isset($passed_ent_id)?'&passed_ent_id='.$passed_ent_id:''); + $url .= '&smaction=reply'; + + $output[] = makeComposeLink($url, $fieldsdescr['reply']); } - } else if (eregi('^(http|ftp)', $url)) { - $output[] = '' - . $fieldsdescr[$cmd] . ''; + } else if ($proto == 'href') { + $output[] = '' + . $fieldsdescr[$cmd] . ''; } } if (count($output) > 0) { - echo ""; - echo html_tag( 'tr', - html_tag( 'td', str_replace(' ', ' ', _("Mailing List:")), 'right', $color[0]) . - html_tag( 'td', - '' . implode(' | ', $output) . '' , - 'left', $color[0], 'width="100%" colspan="2"') - ); + echo ''; + echo html_tag('td', '' . _("Mailing List") . ':  ', + 'right', '', 'valign="middle" width="20%"') . "\n"; + echo html_tag('td', '' . implode(' | ', $output) . '', + 'left', $color[0], 'valign="middle" width="80%"') . "\n"; + echo ''; } }