From b825f86108a91957f6467176e418cfc257874658 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sun, 04 Aug 2013 04:41:02 -0400
Subject: [PATCH] Move identity selection based on non-standard headers into (new) identity_select plugin (#1488553)

---
 program/steps/mail/func.inc |   24 +++++-------------------
 1 files changed, 5 insertions(+), 19 deletions(-)

diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index cf3a791..e14d25e 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -1798,27 +1798,13 @@
         }
     }
 
-    // Fallback using Delivered-To
-    if ($from_idx === null && ($delivered_to = $MESSAGE->headers->others['delivered-to'])) {
-        foreach ($identities as $idx => $ident) {
-            if (in_array($ident['email_ascii'], (array)$delivered_to)) {
-                $from_idx = $idx;
-                break;
-            }
-        }
-    }
+    // See identity_select plugin for example usage of this hook
+    $plugin = rcmail::get_instance()->plugins->exec_hook('identity_select',
+        array('message' => $MESSAGE, 'identities' => $identities, 'selected' => $from_idx));
 
-    // Fallback using Envelope-To
-    if ($from_idx === null && ($envelope_to = $MESSAGE->headers->others['envelope-to'])) {
-        foreach ($identities as $idx => $ident) {
-            if (in_array($ident['email_ascii'], (array)$envelope_to)) {
-                $from_idx = $idx;
-                break;
-            }
-        }
-    }
+    $selected = $plugin['selected'];
 
-    return $identities[$from_idx !== null ? $from_idx : $default_identity];
+    return $identities[$selected !== null ? $selected : $default_identity];
 }
 
 // Fixes some content-type names

--
Gitblit v1.9.1