Happy New Year
[squirrelmail.git] / plugins / listcommands / functions.php
index e308ea6f4cc22e106b8ef41ed9fa71a34907082f..055a34403422c2dffcefcebc53b47232b21b01c2 100644 (file)
@@ -8,7 +8,7 @@
  * this plugin displays a menu which gives the user a choice of mailinglist
  * commands such as (un)subscribe, help and list archives.
  *
- * @copyright 1999-2012 The SquirrelMail Project Team
+ * @copyright 1999-2019 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package plugins
@@ -84,18 +84,48 @@ function plugin_listcommands_menu_do() {
 
         /* proto = {mailto,href} */
         $aActions = array_keys($actions);
+        // note that we only use the first cmd/action, ignore the rest
         $proto = array_shift($aActions);
         $act   = array_shift($actions);
 
         if ($proto == 'mailto') {
 
+            $identity = '';
+
             if (($cmd == 'post') || ($cmd == 'owner')) {
                 $url = 'src/compose.php?'.
                     (isset($startMessage)?'startMessage='.$startMessage.'&':'');
             } else {
                 $url = "plugins/listcommands/mailout.php?action=$cmd&";
+
+                // try to find which identity the mail should come from
+                include_once(SM_PATH . 'functions/identity.php');
+                $idents = get_identities();
+                // ripped from src/compose.php
+                $identities = array();
+                if (count($idents) > 1) {
+                    foreach($idents as $nr=>$data) {
+                        $enc_from_name = '"'.$data['full_name'].'" <'. $data['email_address'].'>';
+                        $identities[] = $enc_from_name;
+                    }
+
+                    $identity_match = $message->rfc822_header->findAddress($identities);
+                    if ($identity_match !== FALSE) {
+                        $identity = $identity_match;
+                    }
+                }
             }
-            $url .= 'send_to=' . str_replace('?','&amp;', $act);
+
+            // if things like subject are given, peel them off and give
+            // them to src/compose.php as is (not encoded)
+            if (strpos($act, '?') > 0) {
+               list($act, $parameters) = explode('?', $act, 2);
+               $parameters = '&amp;identity=' . $identity . '&amp;' . $parameters;
+            } else {
+               $parameters = '&amp;identity=' . $identity;
+            }
+
+            $url .= 'send_to=' . urlencode($act) . $parameters;
 
             $links[$cmd] = makeComposeLink($url, $fieldsdescr[$cmd]);