The copyright message should be consistent.
[squirrelmail.git] / plugins / listcommands / setup.php
index a437426fcaea590f0a3e64e40bff3e1683cd2756..523940fe8dbc81872115f6cd1ac56f29255bafa2 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * setup.php
  *
- * Copyright (c) 1999-2002 The SquirrelMail Project Team
+ * Copyright (c) 1999-2005 The SquirrelMail Project Team
  * Licensed under the GNU GPL. For full terms see the file COPYING.
  *
  * Implementation of RFC 2369 for SquirrelMail.
  * 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,
-           $subject, $ent_num, $priority_level, $compose_new_win;
+    global $passed_id, $passed_ent_id, $color, $mailbox, $message, $startMessage;
 
     /**
      * 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();
-    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 ( !array_key_exists($cmd, $fieldsdescr) ) {
+            continue;
         }
-    }
 
-    if (count($unsorted_cmds) == 0) {
-        return;
-    }
+        /* proto = {mailto,href} */
+        $proto = array_shift(array_keys($actions));
+        $act   = array_shift($actions);
 
-    foreach ($fields as $field) {
-        foreach ($unsorted_cmds as $cmd => $url) {
-            if ($field == $cmd) {
-                $cmds[$cmd] = $url;
-            }
-        }
-    }
-
-    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?'.
+                (isset($startMessage)?'startMessage='.$startMessage.'&amp;':'');
             } else {
-                $url = "../plugins/listcommands/mailout.php?action=$cmd&";
+                $url = "plugins/listcommands/mailout.php?action=$cmd&amp;";
             }
+            $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[] = '<A HREF="' . $url . '" target="compose_window" onClick="comp_in_new()">' . $fieldsdescr[$cmd] . '</A>';
-            }
-            else {
-                $output[] = '<A HREF="' . $url . '">' . $fieldsdescr[$cmd] . '</A>';
-            }
-            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[] = '<A HREF="' . $url . '" target="compose_window" onClick="comp_in_new()">' . $fieldsdescr['Reply'] . '</A>';
-            }
-            else {
-                $output[] = '<A HREF="' . $url . '">' . $fieldsdescr['Reply'] . '</A>';
-            }
+            if ($cmd == 'post') {
+                if (!isset($mailbox))
+                    $mailbox = 'INBOX';
+                $url .= '&amp;passed_id='.$passed_id.
+                        '&amp;mailbox='.urlencode($mailbox).
+                        (isset($passed_ent_id)?'&amp;passed_ent_id='.$passed_ent_id:'');
+                $url .= '&amp;smaction=reply';
+
+                $output[] = makeComposeLink($url, $fieldsdescr['reply']);
             }
-        } else if (eregi('^(http|ftp)', $url)) {
-            $output[] = '<A HREF="' . $url . '" TARGET="_blank">'
-                      . $fieldsdescr[$cmd] . '</A>';
+        } else if ($proto == 'href') {
+            $output[] = '<a href="' . $act . '" target="_blank">'
+                      . $fieldsdescr[$cmd] . '</a>';
         }
     }
 
     if (count($output) > 0) {
-        echo "<tr>";
-        echo "<td ALIGN=RIGHT BGCOLOR=\"$color[0]\">"
-           .   str_replace(' ', '&nbsp;', _("Mailing List:"))
-           . '</td>';
-        echo "<td BGCOLOR=\"$color[0]\" WIDTH=\"100%\" colspan=\"2\">"
-           .   '<SMALL>' . implode('&nbsp;|&nbsp;', $output) . '</SMALL>'
-           . '</td>';
+        echo '<tr>';
+        echo html_tag('td', '<b>' . _("Mailing List") . ':&nbsp;&nbsp;</b>',
+                      'right', '', 'valign="middle" width="20%"') . "\n";
+        echo html_tag('td', '<small>' . implode('&nbsp;|&nbsp;', $output) . '</small>',
+                      'left', $color[0], 'valign="middle" width="80%"') . "\n";
         echo '</tr>';
     }
 }
 
-?>
+?>
\ No newline at end of file