diff options
author | Aleksander Machniak <alec@alec.pl> | 2013-12-04 13:58:43 +0100 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2013-12-04 13:58:43 +0100 |
commit | 18b40c1a3214518764e99f69b581bd7c90426091 (patch) | |
tree | be9eccab3b06c0b01fd6fb590c9320a5e1afc5d9 /program/lib/Roundcube/rcube_ldap.php | |
parent | e71ceb0c98b33409af5978f0f33c6c95148bd86b (diff) |
Fix issue where groups were not deleted when "Replace entire addressbook" option on contacts import was used (#1489420)
Diffstat (limited to 'program/lib/Roundcube/rcube_ldap.php')
-rw-r--r-- | program/lib/Roundcube/rcube_ldap.php | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/program/lib/Roundcube/rcube_ldap.php b/program/lib/Roundcube/rcube_ldap.php index b733e2465..2d4aa0838 100644 --- a/program/lib/Roundcube/rcube_ldap.php +++ b/program/lib/Roundcube/rcube_ldap.php @@ -1324,8 +1324,10 @@ class rcube_ldap extends rcube_addressbook /** * Remove all contact records + * + * @param bool $with_groups Delete also groups if enabled */ - function delete_all() + function delete_all($with_groups = false) { // searching for contact entries $dn_list = $this->ldap->list_entries($this->base_dn, $this->prop['filter'] ? $this->prop['filter'] : '(objectclass=*)'); @@ -1336,6 +1338,16 @@ class rcube_ldap extends rcube_addressbook } $this->delete($dn_list); } + + if ($with_groups && $this->groups && ($groups = $this->_fetch_groups()) && count($groups)) { + foreach ($groups as $group) { + $this->ldap->delete($group['dn']); + } + + if ($this->cache) { + $this->cache->remove('groups'); + } + } } /** |