| | |
| | | | program/steps/addressbook/delete.inc | |
| | | | | |
| | | | This file is part of the RoundCube Webmail client | |
| | | | Copyright (C) 2005, RoundCube Dev. - Switzerland | |
| | | | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland | |
| | | | Licensed under the GNU GPL | |
| | | | | |
| | | | PURPOSE: | |
| | |
| | | |
| | | */ |
| | | |
| | | $REMOTE_REQUEST = TRUE; |
| | | |
| | | if ($_GET['_cid']) |
| | | if (($cid = get_input_value('_cid', RCUBE_INPUT_POST)) && |
| | | (preg_match('/^[0-9]+(,[0-9]+)*$/', $cid) || |
| | | preg_match('/^[a-zA-Z0-9=]+(,[a-zA-Z0-9=]+)*$/', $cid)) |
| | | ) |
| | | { |
| | | $DB->query(sprintf("UPDATE %s |
| | | SET del='1' |
| | | WHERE user_id=%d |
| | | AND contact_id IN (%s)", |
| | | get_table_name('contacts'), |
| | | $_SESSION['user_id'], |
| | | $_GET['_cid'])); |
| | | |
| | | $count = $DB->affected_rows(); |
| | | if (!$count) |
| | | $deleted = $CONTACTS->delete($cid); |
| | | if (!$deleted) |
| | | { |
| | | // send error message |
| | | exit; |
| | | } |
| | | |
| | | |
| | | // count contacts for this user |
| | | $sql_result = $DB->query(sprintf("SELECT COUNT(contact_id) AS rows |
| | | FROM %s |
| | | WHERE del!='1' |
| | | AND user_id=%d", |
| | | get_table_name('contacts'), |
| | | $_SESSION['user_id'])); |
| | | |
| | | $sql_arr = $DB->fetch_assoc($sql_result); |
| | | $rowcount = $sql_arr['rows']; |
| | | $result = $CONTACTS->count(); |
| | | |
| | | // update message count display |
| | | $pages = ceil($rowcount/$CONFIG['pagesize']); |
| | | $commands = sprintf("this.set_rowcount('%s');\n", rcmail_get_rowcount_text($rowcount)); |
| | | $commands .= sprintf("this.set_env('pagecount', %d);\n", $pages); |
| | | |
| | | $OUTPUT->set_env('pagecount', ceil($result->count / $CONTACTS->page_size)); |
| | | $OUTPUT->command('set_rowcount', rcmail_get_rowcount_text($result->count)); |
| | | |
| | | // add new rows from next page (if any) |
| | | if ($_GET['_from']!='show' && $pages>1 && $_SESSION['page'] < $pages) |
| | | { |
| | | $start_row = ($_SESSION['page'] * $CONFIG['pagesize']) - $count; |
| | | |
| | | // get contacts from DB |
| | | $sql_result = $DB->query(sprintf("SELECT * FROM %s |
| | | WHERE del!='1' |
| | | AND user_id=%d |
| | | ORDER BY name |
| | | LIMIT %d, %d", |
| | | get_table_name('contacts'), |
| | | $_SESSION['user_id'], |
| | | $start_row, |
| | | $count)); |
| | | |
| | | $commands .= rcmail_js_contacts_list($sql_result); |
| | | |
| | | /* |
| | | // define list of cols to be displayed |
| | | $a_show_cols = array('name', 'email'); |
| | | |
| | | while ($sql_arr = $DB->fetch_assoc($sql_result)) |
| | | { |
| | | $a_row_cols = array(); |
| | | |
| | | // format each col |
| | | foreach ($a_show_cols as $col) |
| | | { |
| | | $cont = rep_specialchars_output($sql_arr[$col]); |
| | | $a_row_cols[$col] = $cont; |
| | | } |
| | | |
| | | $commands .= sprintf("this.add_contact_row(%s, %s);\n", |
| | | $sql_arr['contact_id'], |
| | | array2js($a_row_cols)); |
| | | } |
| | | */ |
| | | } |
| | | $pages = ceil(($result->count + $deleted) / $CONTACTS->page_size); |
| | | if ($_GET['_from'] != 'show' && $pages > 1 && $CONTACTS->list_page < $pages) |
| | | rcmail_js_contacts_list($CONTACTS->list_records(null, -$deleted)); |
| | | |
| | | // send response |
| | | rcube_remote_response($commands); |
| | | $OUTPUT->send(); |
| | | } |
| | | |
| | | exit; |
| | | ?> |
| | | ?> |