summaryrefslogtreecommitdiff
path: root/program/lib/Roundcube/rcube_ldap.php
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2013-12-04 13:58:43 +0100
committerAleksander Machniak <alec@alec.pl>2013-12-04 13:58:43 +0100
commit18b40c1a3214518764e99f69b581bd7c90426091 (patch)
treebe9eccab3b06c0b01fd6fb590c9320a5e1afc5d9 /program/lib/Roundcube/rcube_ldap.php
parente71ceb0c98b33409af5978f0f33c6c95148bd86b (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.php14
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');
+ }
+ }
}
/**