plugins/libkolab

Thomas Brüderli bruederli at kolabsys.com
Thu Mar 13 18:35:46 CET 2014


 plugins/libkolab/lib/kolab_format_distributionlist.php |   26 ++++++++++++-----
 1 file changed, 19 insertions(+), 7 deletions(-)

New commits:
commit 985286cbcbe07e779010764a09c2b30fc59cff71
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Thu Mar 13 18:35:27 2014 +0100

    Remove duplicate group members

diff --git a/plugins/libkolab/lib/kolab_format_distributionlist.php b/plugins/libkolab/lib/kolab_format_distributionlist.php
index 46dda01..88c6f7b 100644
--- a/plugins/libkolab/lib/kolab_format_distributionlist.php
+++ b/plugins/libkolab/lib/kolab_format_distributionlist.php
@@ -44,17 +44,29 @@ class kolab_format_distributionlist extends kolab_format
 
         $this->obj->setName($object['name']);
 
+        $seen = array();
         $members = new vectorcontactref;
-        foreach ((array)$object['member'] as $member) {
-            if ($member['uid'])
+        foreach ((array)$object['member'] as $i => $member) {
+            if ($member['uid']) {
+                $key = 'uid:' . $member['uid'];
                 $m = new ContactReference(ContactReference::UidReference, $member['uid']);
-            else if ($member['email'])
+            }
+            else if ($member['email']) {
+                $key = 'mailto:' . $member['email'];
                 $m = new ContactReference(ContactReference::EmailReference, $member['email']);
-            else
+                $m->setName($member['name']);
+            }
+            else {
                 continue;
-
-            $m->setName($member['name']);
-            $members->push($m);
+            }
+
+            if (!$seen[$key]++) {
+                $members->push($m);
+            }
+            else {
+                // remove dupes for caching
+                unset($object['member'][$i]);
+            }
         }
 
         $this->obj->setMembers($members);




More information about the commits mailing list