explicitly set custom fields as to search, if custom fields are defined, also added a couple more columns for explicitly not to search

This commit is contained in:
Ralf Becker 2014-03-03 11:49:41 +00:00
parent a5a0024545
commit 8bb226ba6b
2 changed files with 12 additions and 5 deletions

View File

@ -120,7 +120,8 @@ class addressbook_so
var $sql_cols_not_to_search = array( var $sql_cols_not_to_search = array(
'jpegphoto','owner','tid','private','cat_id','etag', 'jpegphoto','owner','tid','private','cat_id','etag',
'modified','modifier','creator','created','tz','account_id', 'modified','modifier','creator','created','tz','account_id',
'uid', 'uid','carddav_name','freebusy_uri','calendar_uri',
'geo','pubkey',
); );
/** /**
* columns to search, if we search for a single pattern * columns to search, if we search for a single pattern
@ -193,7 +194,6 @@ class addressbook_so
*/ */
var $soextra; var $soextra;
var $sodistrib_list; var $sodistrib_list;
var $backend;
/** /**
* Constructor * Constructor
@ -217,6 +217,7 @@ class addressbook_so
{ {
$this->account_repository = $GLOBALS['egw_info']['server']['auth_type']; $this->account_repository = $GLOBALS['egw_info']['server']['auth_type'];
} }
$this->customfields = config::get_customfields('addressbook');
// contacts backend (contacts in LDAP require accounts in LDAP!) // contacts backend (contacts in LDAP require accounts in LDAP!)
if($GLOBALS['egw_info']['server']['contact_repository'] == 'ldap' && $this->account_repository == 'ldap') if($GLOBALS['egw_info']['server']['contact_repository'] == 'ldap' && $this->account_repository == 'ldap')
{ {
@ -234,6 +235,10 @@ class addressbook_so
// remove some columns, absolutly not necessary to search in sql // remove some columns, absolutly not necessary to search in sql
$this->columns_to_search = array_diff(array_values($this->somain->db_cols),$this->sql_cols_not_to_search); $this->columns_to_search = array_diff(array_values($this->somain->db_cols),$this->sql_cols_not_to_search);
if ($this->customfields) // add custom fields, if configured
{
$this->columns_to_search[] = addressbook_sql::EXTRA_TABLE.'.'.addressbook_sql::EXTRA_VALUE;
}
} }
if ($this->user) if ($this->user)
{ {
@ -276,7 +281,6 @@ class addressbook_so
$this->soextra = new addressbook_sql($db); $this->soextra = new addressbook_sql($db);
} }
$this->customfields = config::get_customfields('addressbook');
$this->content_types = config::get_content_types('addressbook'); $this->content_types = config::get_content_types('addressbook');
if (!$this->content_types) if (!$this->content_types)
{ {
@ -642,7 +646,9 @@ class addressbook_so
foreach($cols as $key => &$col) foreach($cols as $key => &$col)
{ {
if(!array_key_exists($col, $backend->db_cols)) if($col != addressbook_sql::EXTRA_VALUE &&
$col != addressbook_sql::EXTRA_TABLE.'.'.addressbook_sql::EXTRA_VALUE &&
!array_key_exists($col, $backend->db_cols))
{ {
if(!($col = array_search($col, $backend->db_cols))) if(!($col = array_search($col, $backend->db_cols)))
{ {
@ -817,7 +823,7 @@ class addressbook_so
* *
* @param array|string|int $keys=null * @param array|string|int $keys=null
* @param int $owner=null account_id of owner or 0 for accounts * @param int $owner=null account_id of owner or 0 for accounts
* @return object * @return addressbook_sql
*/ */
function get_backend($keys=null,$owner=null) function get_backend($keys=null,$owner=null)
{ {

View File

@ -55,6 +55,7 @@ class addressbook_sql extends so_sql_cf
var $ab2list_table = 'egw_addressbook2list'; var $ab2list_table = 'egw_addressbook2list';
const EXTRA_TABLE = 'egw_addressbook_extra'; const EXTRA_TABLE = 'egw_addressbook_extra';
const EXTRA_VALUE = 'contact_value';
/** /**
* Constructor * Constructor