Allow derived classes of rcube_contacts to override table and sequence names

release-0.6
thomascube 14 years ago
parent 2563619a58
commit 3b67e33c8e

@ -28,8 +28,11 @@
class rcube_contacts extends rcube_addressbook class rcube_contacts extends rcube_addressbook
{ {
// protected for backward compat. with some plugins // 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_name = '';
protected $db_groups = '';
protected $db_groupmembers = '';
private $db = null; private $db = null;
private $user_id = 0; private $user_id = 0;
private $filter = null; private $filter = null;
@ -58,7 +61,10 @@ class rcube_contacts extends rcube_addressbook
function __construct($dbconn, $user) function __construct($dbconn, $user)
{ {
$this->db = $dbconn; $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->user_id = $user;
$this->ready = $this->db && !$this->db->is_error(); $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_filter = $search ? " AND " . $this->db->ilike('name', '%'.$search.'%') : '';
$sql_result = $this->db->query( $sql_result = $this->db->query(
"SELECT * FROM ".get_table_name('contactgroups'). "SELECT * FROM ".$this->db_groups.
" WHERE del<>1". " WHERE del<>1".
" AND user_id=?". " AND user_id=?".
$sql_filter. $sql_filter.
@ -165,7 +171,7 @@ class rcube_contacts extends rcube_addressbook
$length = $subset != 0 ? abs($subset) : $this->page_size; $length = $subset != 0 ? abs($subset) : $this->page_size;
if ($this->group_id) 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.")"; " ON (m.contact_id = c.".$this->primary_key.")";
$sql_result = $this->db->limitquery( $sql_result = $this->db->limitquery(
@ -282,7 +288,7 @@ class rcube_contacts extends rcube_addressbook
private function _count() private function _count()
{ {
if ($this->group_id) 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.")"; " ON (m.contact_id=c.".$this->primary_key.")";
// count contacts for this user // 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).")" " 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 // 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); $name = $this->unique_groupname($name);
$this->db->query( $this->db->query(
"INSERT INTO ".get_table_name('contactgroups'). "INSERT INTO ".$this->db_groups.
" (user_id, changed, name)". " (user_id, changed, name)".
" VALUES (".intval($this->user_id).", ".$this->db->now().", ".$this->db->quote($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); $result = array('id' => $insert_id, 'name' => $name);
return $result; return $result;
@ -515,7 +521,7 @@ class rcube_contacts extends rcube_addressbook
{ {
// flag group record as deleted // flag group record as deleted
$sql_result = $this->db->query( $sql_result = $this->db->query(
"UPDATE ".get_table_name('contactgroups'). "UPDATE ".$this->db_groups.
" SET del=1, changed=".$this->db->now(). " SET del=1, changed=".$this->db->now().
" WHERE contactgroup_id=?", " WHERE contactgroup_id=?",
$gid $gid
@ -540,7 +546,7 @@ class rcube_contacts extends rcube_addressbook
$name = $this->unique_groupname($newname); $name = $this->unique_groupname($newname);
$sql_result = $this->db->query( $sql_result = $this->db->query(
"UPDATE ".get_table_name('contactgroups'). "UPDATE ".$this->db_groups.
" SET name=?, changed=".$this->db->now(). " SET name=?, changed=".$this->db->now().
" WHERE contactgroup_id=?", " WHERE contactgroup_id=?",
$name, $gid $name, $gid
@ -566,7 +572,7 @@ class rcube_contacts extends rcube_addressbook
foreach ($ids as $contact_id) { foreach ($ids as $contact_id) {
$sql_result = $this->db->query( $sql_result = $this->db->query(
"SELECT 1 FROM ".get_table_name('contactgroupmembers'). "SELECT 1 FROM ".$this->db_groupmembers.
" WHERE contactgroup_id=?". " WHERE contactgroup_id=?".
" AND contact_id=?", " AND contact_id=?",
$group_id, $group_id,
@ -575,7 +581,7 @@ class rcube_contacts extends rcube_addressbook
if (!$this->db->num_rows($sql_result)) { if (!$this->db->num_rows($sql_result)) {
$this->db->query( $this->db->query(
"INSERT INTO ".get_table_name('contactgroupmembers'). "INSERT INTO ".$this->db_groupmembers.
" (contactgroup_id, contact_id, created)". " (contactgroup_id, contact_id, created)".
" VALUES (?, ?, ".$this->db->now().")", " VALUES (?, ?, ".$this->db->now().")",
$group_id, $group_id,
@ -606,7 +612,7 @@ class rcube_contacts extends rcube_addressbook
$ids = $this->db->array2list($ids, 'integer'); $ids = $this->db->array2list($ids, 'integer');
$sql_result = $this->db->query( $sql_result = $this->db->query(
"DELETE FROM ".get_table_name('contactgroupmembers'). "DELETE FROM ".$this->db_groupmembers.
" WHERE contactgroup_id=?". " WHERE contactgroup_id=?".
" AND contact_id IN ($ids)", " AND contact_id IN ($ids)",
$group_id $group_id
@ -629,7 +635,7 @@ class rcube_contacts extends rcube_addressbook
do { do {
$sql_result = $this->db->query( $sql_result = $this->db->query(
"SELECT 1 FROM ".get_table_name('contactgroups'). "SELECT 1 FROM ".$this->db_groups.
" WHERE del<>1". " WHERE del<>1".
" AND user_id=?". " AND user_id=?".
" AND name=?", " AND name=?",
@ -644,4 +650,23 @@ class rcube_contacts extends rcube_addressbook
return $checkname; 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);
}
} }

Loading…
Cancel
Save