summaryrefslogtreecommitdiff
path: root/program/include/rcube_contacts.php
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2010-05-26 09:25:24 +0000
committerthomascube <thomas@roundcube.net>2010-05-26 09:25:24 +0000
commit3b67e33c8eee2bb13fdc8f53a4139d365858a789 (patch)
tree729abd91fd136b580741227b967deb504f195e7c /program/include/rcube_contacts.php
parent2563619a58b98c1d088883ff9b6a9bb269ea87bb (diff)
Allow derived classes of rcube_contacts to override table and sequence names
Diffstat (limited to 'program/include/rcube_contacts.php')
-rw-r--r--program/include/rcube_contacts.php53
1 files changed, 39 insertions, 14 deletions
diff --git a/program/include/rcube_contacts.php b/program/include/rcube_contacts.php
index 06600665b..4676a2ce6 100644
--- a/program/include/rcube_contacts.php
+++ b/program/include/rcube_contacts.php
@@ -28,8 +28,11 @@
class rcube_contacts extends rcube_addressbook
{
// protected for backward compat. with some plugins
- // maybe changed in the future
+ // deprecated: re-implement $this->get_table_name() instead
protected $db_name = '';
+ protected $db_groups = '';
+ protected $db_groupmembers = '';
+
private $db = null;
private $user_id = 0;
private $filter = null;
@@ -58,7 +61,10 @@ class rcube_contacts extends rcube_addressbook
function __construct($dbconn, $user)
{
$this->db = $dbconn;
- $this->db_name = get_table_name('contacts');
+ $this->db_name = $this->get_table_name('contacts');
+ $this->db_groups = $this->get_table_name('contactgroups');
+ $this->db_groupmembers = $this->get_table_name('contactgroupmembers');
+
$this->user_id = $user;
$this->ready = $this->db && !$this->db->is_error();
}
@@ -127,7 +133,7 @@ class rcube_contacts extends rcube_addressbook
$sql_filter = $search ? " AND " . $this->db->ilike('name', '%'.$search.'%') : '';
$sql_result = $this->db->query(
- "SELECT * FROM ".get_table_name('contactgroups').
+ "SELECT * FROM ".$this->db_groups.
" WHERE del<>1".
" AND user_id=?".
$sql_filter.
@@ -165,7 +171,7 @@ class rcube_contacts extends rcube_addressbook
$length = $subset != 0 ? abs($subset) : $this->page_size;
if ($this->group_id)
- $join = " LEFT JOIN ".get_table_name('contactgroupmembers')." AS m".
+ $join = " LEFT JOIN ".$this->db_groupmembers." AS m".
" ON (m.contact_id = c.".$this->primary_key.")";
$sql_result = $this->db->limitquery(
@@ -282,7 +288,7 @@ class rcube_contacts extends rcube_addressbook
private function _count()
{
if ($this->group_id)
- $join = " LEFT JOIN ".get_table_name('contactgroupmembers')." AS m".
+ $join = " LEFT JOIN ".$this->db_groupmembers." AS m".
" ON (m.contact_id=c.".$this->primary_key.")";
// count contacts for this user
@@ -379,7 +385,7 @@ class rcube_contacts extends rcube_addressbook
" VALUES (".intval($this->user_id).", ".$this->db->now().", 0, ".join(', ', $a_insert_values).")"
);
- $insert_id = $this->db->insert_id('contacts');
+ $insert_id = $this->db->insert_id($this->get_sequence_name('contacts'));
}
// also add the newly created contact to the active group
@@ -493,12 +499,12 @@ class rcube_contacts extends rcube_addressbook
$name = $this->unique_groupname($name);
$this->db->query(
- "INSERT INTO ".get_table_name('contactgroups').
+ "INSERT INTO ".$this->db_groups.
" (user_id, changed, name)".
" VALUES (".intval($this->user_id).", ".$this->db->now().", ".$this->db->quote($name).")"
);
- if ($insert_id = $this->db->insert_id('contactgroups'))
+ if ($insert_id = $this->db->insert_id($this->get_sequence_name('contactgroups')))
$result = array('id' => $insert_id, 'name' => $name);
return $result;
@@ -515,7 +521,7 @@ class rcube_contacts extends rcube_addressbook
{
// flag group record as deleted
$sql_result = $this->db->query(
- "UPDATE ".get_table_name('contactgroups').
+ "UPDATE ".$this->db_groups.
" SET del=1, changed=".$this->db->now().
" WHERE contactgroup_id=?",
$gid
@@ -540,7 +546,7 @@ class rcube_contacts extends rcube_addressbook
$name = $this->unique_groupname($newname);
$sql_result = $this->db->query(
- "UPDATE ".get_table_name('contactgroups').
+ "UPDATE ".$this->db_groups.
" SET name=?, changed=".$this->db->now().
" WHERE contactgroup_id=?",
$name, $gid
@@ -566,7 +572,7 @@ class rcube_contacts extends rcube_addressbook
foreach ($ids as $contact_id) {
$sql_result = $this->db->query(
- "SELECT 1 FROM ".get_table_name('contactgroupmembers').
+ "SELECT 1 FROM ".$this->db_groupmembers.
" WHERE contactgroup_id=?".
" AND contact_id=?",
$group_id,
@@ -575,7 +581,7 @@ class rcube_contacts extends rcube_addressbook
if (!$this->db->num_rows($sql_result)) {
$this->db->query(
- "INSERT INTO ".get_table_name('contactgroupmembers').
+ "INSERT INTO ".$this->db_groupmembers.
" (contactgroup_id, contact_id, created)".
" VALUES (?, ?, ".$this->db->now().")",
$group_id,
@@ -606,7 +612,7 @@ class rcube_contacts extends rcube_addressbook
$ids = $this->db->array2list($ids, 'integer');
$sql_result = $this->db->query(
- "DELETE FROM ".get_table_name('contactgroupmembers').
+ "DELETE FROM ".$this->db_groupmembers.
" WHERE contactgroup_id=?".
" AND contact_id IN ($ids)",
$group_id
@@ -629,7 +635,7 @@ class rcube_contacts extends rcube_addressbook
do {
$sql_result = $this->db->query(
- "SELECT 1 FROM ".get_table_name('contactgroups').
+ "SELECT 1 FROM ".$this->db_groups.
" WHERE del<>1".
" AND user_id=?".
" AND name=?",
@@ -644,4 +650,23 @@ class rcube_contacts extends rcube_addressbook
return $checkname;
}
+
+ /**
+ * Wrapper for global get_table_name() which can be re-implemented
+ * by a derived class
+ */
+ protected function get_table_name($table)
+ {
+ return get_table_name($table);
+ }
+
+ /**
+ * Wrapper for global get_sequence_name() which can be re-implemented
+ * by a derived class
+ */
+ protected function get_sequence_name($table)
+ {
+ return get_sequence_name($table);
+ }
+
}