summaryrefslogtreecommitdiff
path: root/program/lib/Roundcube/rcube_ldap.php
diff options
context:
space:
mode:
Diffstat (limited to 'program/lib/Roundcube/rcube_ldap.php')
-rw-r--r--program/lib/Roundcube/rcube_ldap.php17
1 files changed, 15 insertions, 2 deletions
diff --git a/program/lib/Roundcube/rcube_ldap.php b/program/lib/Roundcube/rcube_ldap.php
index b733e2465..0da3e2c87 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');
+ }
+ }
}
/**
@@ -1606,11 +1618,12 @@ class rcube_ldap extends rcube_addressbook
// special case: list groups from 'group_filters' config
if ($vlv_page === null && !empty($this->prop['group_filters'])) {
$groups = array();
+ $rcube = rcube::get_instance();
// list regular groups configuration as special filter
if (!empty($this->prop['groups']['filter'])) {
$id = '__groups__';
- $groups[$id] = array('ID' => $id, 'name' => rcube_label('groups'), 'virtual' => true) + $this->prop['groups'];
+ $groups[$id] = array('ID' => $id, 'name' => $rcube->gettext('groups'), 'virtual' => true) + $this->prop['groups'];
}
foreach ($this->prop['group_filters'] as $id => $prop) {