public static function search($searchPattern=null) { if($searchPattern !== null) { $query = " AND AddressBook.id= #INT($searchPattern)"; } $db = new DB_OBM; $addressBooks = array(); $db->xquery(' SELECT AddressBook.id, AddressBook.owner, AddressBook.name, AddressBook.is_default, AddressBook.syncable, 1 as entityright_access, 1 as entityright_read, 1 as entityright_write, 1 as entityright_admin, SyncedAddressbook.user_id as synced FROM AddressBook LEFT JOIN SyncedAddressbook ON SyncedAddressbook.addressbook_id = AddressBook.id AND SyncedAddressbook.user_id = '.$GLOBALS['obm']['uid'].' WHERE AddressBook.owner = '.$GLOBALS['obm']['uid'].' '.$query.' ORDER BY AddressBook.is_default DESC, AddressBook.name'); while($db->next_record()) { $addressBooks[$db->f('id')] = new OBM_AddressBook($db->f('id'), $db->f('name'), $db->f('is_default'), $db->f('owner'), $db->f('syncable'), $db->f('synced'), $db->f('entityright_access'), $db->f('entityright_read'), $db->f('entityright_write'),$db->f('entityright_admin')); } $columns = array('addressbookentity_addressbook_id', 'entityright_access', 'entityright_read', 'entityright_write', 'entityright_admin'); $db->xquery(' SELECT AddressBook.id, AddressBook.owner, AddressBook.name, AddressBook.is_default, AddressBook.syncable, Rights.entityright_access, Rights.entityright_read, Rights.entityright_write, Rights.entityright_admin, SyncedAddressbook.user_id as synced FROM AddressBook INNER JOIN ('.OBM_Acl::getAclSubselect($columns, 'addressbook', null, $GLOBALS['obm']['uid']).') AS Rights ON AddressBook.id = Rights.addressbookentity_addressbook_id LEFT JOIN SyncedAddressbook ON SyncedAddressbook.addressbook_id = AddressBook.id AND SyncedAddressbook.user_id = '.$GLOBALS['obm']['uid'].' WHERE 1=1 '.$query.' AND AddressBook.domain_id = '.$GLOBALS['obm']['domain_id'].' ORDER BY AddressBook.name'); while($db->next_record()) { if($addressBooks[$db->f('id')]) { if($db->f('entityright_access') == 1) $addressBooks[$db->f('id')]->access = 1; if($db->f('entityright_read') == 1) $addressBooks[$db->f('id')]->read = 1; if($db->f('entityright_write') == 1) $addressBooks[$db->f('id')]->write = 1; if($db->f('entityright_admin') == 1) $addressBooks[$db->f('id')]->admin = 1; } else { $addressBooks[$db->f('id')] = new OBM_AddressBook($db->f('id'), $db->f('name'), $db->f('is_default'), $db->f('owner'), $db->f('syncable'), $db->f('synced'), $db->f('entityright_access'), $db->f('entityright_read'), $db->f('entityright_write'),$db->f('entityright_admin')); } } return new OBM_AddressBookArray($addressBooks); }