From 83feb57ae0869996d6ae0c78511017e1872c589a Mon Sep 17 00:00:00 2001 From: kink Date: Wed, 7 Aug 2002 10:00:54 +0000 Subject: [PATCH] Recreate listcommands plugin using new rfc822_header functionality. Removes need for imap call. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@3274 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- plugins/listcommands/mailout.php | 6 +-- plugins/listcommands/setup.php | 80 +++++++++++--------------------- 2 files changed, 29 insertions(+), 57 deletions(-) diff --git a/plugins/listcommands/mailout.php b/plugins/listcommands/mailout.php index 6f608f26..08d729ec 100644 --- a/plugins/listcommands/mailout.php +++ b/plugins/listcommands/mailout.php @@ -25,13 +25,13 @@ html_tag( 'table', '', 'center', $color[0], 'border="0" width="75%"' ) . "\n" . html_tag( 'td', '', 'left' ); switch ( $action ) { -case 'Help': +case 'help': $out_string = _("This will send a message to %s requesting help for this list. You will receive an emailed response at the address below."); break; -case 'Subscribe': +case 'subscribe': $out_string = _("This will send a message to %s requesting that you will be subscribed to this list. You will be subscribed with the address below."); break; -case 'Unsubscribe': +case 'unsubscribe': $out_string = _("This will send a message to %s requesting that you will be unsubscribed from this list. It will try to unsubscribe the adress below."); } diff --git a/plugins/listcommands/setup.php b/plugins/listcommands/setup.php index e4402dc3..226f5fdf 100644 --- a/plugins/listcommands/setup.php +++ b/plugins/listcommands/setup.php @@ -21,89 +21,61 @@ 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->rfc822_header->subject); + global $passed_id, $passed_ent_id, $color, $mailbox, + $message, $compose_new_win; /** * 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(); - $output = array(); - - $lfields = 'List-' . implode (' List-', $fields); - - $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]; - } + $fieldsdescr = array('post' => _("Post to List"), + 'reply' => _("Reply to List"), + 'subscribe' => _("Subscribe"), + 'unsubscribe' => _("Unsubscribe"), + 'archive' => _("List Archives"), + 'owner' => _("Contact Listowner"), + 'help' => _("Help")); + + foreach ($message->rfc822_header->mlist as $cmd => $actions) { + + /* I don't know this action... skip it */ + if(!array_key_exists($cmd, $fieldsdescr)) { + 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')) { + if (($cmd == 'post') || ($cmd == 'owner')) { $url = 'compose.php?'; } else { $url = "../plugins/listcommands/mailout.php?action=$cmd&"; - } - $url .= '&send_to=' . $purl['path']; + $url .= 'send_to=' . strtr($act,'?','&'); - if (isset($purl['query'])) { - $url .= '&' . $purl['query']; - } if ($compose_new_win == '1') { $output[] = "" . $fieldsdescr[$cmd] . ''; } else { $output[] = '' . $fieldsdescr[$cmd] . ''; } - if ($cmd == 'Post') { + if ($cmd == 'post') { $url .= '&passed_id='.$passed_id. '&mailbox='.urlencode($mailbox). (isset($passed_ent_id)?'&passed_ent_id='.$passed_ent_id:''); $url .= '&action=reply'; if ($compose_new_win == '1') { - $output[] = "" . $fieldsdescr['Reply'] . ''; + $output[] = "" . $fieldsdescr['reply'] . ''; } else { - $output[] = '' . $fieldsdescr['Reply'] . ''; + $output[] = '' . $fieldsdescr['reply'] . ''; } } - } else if (eregi('^(http|ftp)', $url)) { - $output[] = '' + } elseif ($proto == 'href') { + $output[] = '' . $fieldsdescr[$cmd] . ''; } } -- 2.25.1