summaryrefslogtreecommitdiff
path: root/program/lib/Roundcube/rcube_contacts.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_contacts.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_contacts.php')
-rw-r--r--program/lib/Roundcube/rcube_contacts.php35
1 files changed, 24 insertions, 11 deletions
diff --git a/program/lib/Roundcube/rcube_contacts.php b/program/lib/Roundcube/rcube_contacts.php
index 2e03352bf..ee53f44ed 100644
--- a/program/lib/Roundcube/rcube_contacts.php
+++ b/program/lib/Roundcube/rcube_contacts.php
@@ -812,16 +812,30 @@ class rcube_contacts extends rcube_addressbook
/**
* Remove all records from the database
+ *
+ * @param bool $with_groups Remove also groups
+ *
+ * @return int Number of removed records
*/
- function delete_all()
+ function delete_all($with_groups = false)
{
$this->cache = null;
- $this->db->query("UPDATE ".$this->db->table_name($this->db_name).
- " SET del=1, changed=".$this->db->now().
- " WHERE user_id = ?", $this->user_id);
+ $this->db->query("UPDATE " . $this->db->table_name($this->db_name)
+ . " SET del = 1, changed = " . $this->db->now()
+ . " WHERE user_id = ?", $this->user_id);
- return $this->db->affected_rows();
+ $count = $this->db->affected_rows();
+
+ if ($with_groups) {
+ $this->db->query("UPDATE " . $this->db->table_name($this->db_groups)
+ . " SET del = 1, changed = " . $this->db->now()
+ . " WHERE user_id = ?", $this->user_id);
+
+ $count += $this->db->affected_rows();
+ }
+
+ return $count;
}
@@ -860,11 +874,11 @@ class rcube_contacts extends rcube_addressbook
function delete_group($gid)
{
// flag group record as deleted
- $sql_result = $this->db->query(
- "UPDATE ".$this->db->table_name($this->db_groups).
- " SET del=1, changed=".$this->db->now().
- " WHERE contactgroup_id=?".
- " AND user_id=?",
+ $this->db->query(
+ "UPDATE " . $this->db->table_name($this->db_groups)
+ . " SET del = 1, changed = " . $this->db->now()
+ . " WHERE contactgroup_id = ?"
+ . " AND user_id = ?",
$gid, $this->user_id
);
@@ -873,7 +887,6 @@ class rcube_contacts extends rcube_addressbook
return $this->db->affected_rows();
}
-
/**
* Rename a specific contact group
*