| | |
| | | +-----------------------------------------------------------------------+ |
| | | */ |
| | | |
| | | $afields = $RCMAIL->config->get('contactlist_fields'); |
| | | $sort_col = $RCMAIL->config->get('addressbook_sort_col', 'name'); |
| | | $page_size = $RCMAIL->config->get('addressbook_pagesize', $RCMAIL->config->get('pagesize', 50)); |
| | | $page = max(1, intval($_GET['_page'])); |
| | | $afields = $RCMAIL->config->get('contactlist_fields'); |
| | | $addr_sort_col = $RCMAIL->config->get('addressbook_sort_col', 'name'); |
| | | $page_size = $RCMAIL->config->get('addressbook_pagesize', $RCMAIL->config->get('pagesize', 50)); |
| | | $list_page = max(1, intval($_GET['_page'])); |
| | | |
| | | // Use search result |
| | | if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']])) { |
| | |
| | | |
| | | while ($row = $result->next()) { |
| | | $row['sourceid'] = $s; |
| | | $key = rcube_addressbook::compose_contact_key($row, $sort_col); |
| | | $key = rcube_addressbook::compose_contact_key($row, $addr_sort_col); |
| | | $records[$key] = $row; |
| | | } |
| | | unset($result); |
| | |
| | | |
| | | // create resultset object |
| | | $count = count($records); |
| | | $first = ($page-1) * $page_size; |
| | | $first = ($list_page-1) * $page_size; |
| | | $result = new rcube_result_set($count, $first); |
| | | |
| | | // we need only records for current page |
| | |
| | | if ($CONTACTS && $CONTACTS->ready) { |
| | | // set list properties |
| | | $CONTACTS->set_pagesize($page_size); |
| | | $CONTACTS->set_page($page); |
| | | $CONTACTS->set_page($list_page); |
| | | |
| | | if ($group_id = get_input_value('_gid', RCUBE_INPUT_GPC)) { |
| | | $CONTACTS->set_group($group_id); |
| | | } |
| | | // list groups of this source (on page one) |
| | | if ($CONTACTS->groups && $CONTACTS->list_page == 1) { |
| | | else if ($CONTACTS->groups && $CONTACTS->list_page == 1) { |
| | | foreach ($CONTACTS->list_groups() as $group) { |
| | | $CONTACTS->reset(); |
| | | $CONTACTS->set_group($group['ID']); |
| | |
| | | 'contactgroup' => html::span(array('title' => $email), Q($group['name']))), 'group'); |
| | | } |
| | | } |
| | | // make virtual groups clickable to list their members |
| | | else if ($group_prop['virtual']) { |
| | | $row_id = 'G'.$group['ID']; |
| | | $OUTPUT->command('add_contact_row', $row_id, array( |
| | | 'contactgroup' => html::a(array( |
| | | 'href' => '#list', |
| | | 'rel' => $row['ID'], |
| | | 'title' => rcube_label('listgroup'), |
| | | 'onclick' => sprintf("return %s.command('pushgroup',{'source':'%s','id':'%s'},this,event)", JS_OBJECT_NAME, $source, $group['ID']), |
| | | ), Q($group['name']) . ' ' . html::span('action', '»'))), |
| | | 'group', |
| | | array('ID' => $group['ID'], 'name' => $group['name'], 'virtual' => true)); |
| | | } |
| | | // show group with count |
| | | else if (($result = $CONTACTS->count()) && $result->count) { |
| | | $row_id = 'E'.$group['ID']; |
| | |
| | | 'contactgroup' => Q($group['name'] . ' (' . intval($result->count) . ')')), 'group'); |
| | | } |
| | | } |
| | | |
| | | $CONTACTS->reset(); |
| | | $CONTACTS->set_group(0); |
| | | } |
| | | |
| | | // get contacts for this user |
| | | $CONTACTS->set_group(0); |
| | | $result = $CONTACTS->list_records($afields); |
| | | } |
| | | } |
| | |
| | | foreach ($emails as $i => $email) { |
| | | $row_id = $row['ID'].$i; |
| | | $jsresult[$row_id] = format_email_recipient($email, $name); |
| | | $classname = $row['_type'] == 'group' ? 'group' : 'person'; |
| | | $keyname = $row['_type'] == 'group' ? 'contactgroup' : 'contact'; |
| | | |
| | | $OUTPUT->command('add_contact_row', $row_id, array( |
| | | 'contact' => html::span(array('title' => $email), Q($name ? $name : $email) . |
| | | $keyname => html::span(array('title' => $email), Q($name ? $name : $email) . |
| | | ($name && count($emails) > 1 ? ' ' . html::span('email', Q($email)) : '') |
| | | )), 'person'); |
| | | )), $classname); |
| | | } |
| | | } |
| | | } |