| +-----------------------------------------------------------------------+ $Id$ */ $a_save_cols = array('name', 'firstname', 'surname', 'email'); // update an existing contact if ($_POST['_cid']) { $a_write_sql = array(); foreach ($a_save_cols as $col) { $fname = '_'.$col; if (!isset($_POST[$fname])) continue; $a_write_sql[] = sprintf("%s='%s'", $col, addslashes(strip_tags($_POST[$fname]))); } if (sizeof($a_write_sql)) { $DB->query("UPDATE ".get_table_name('contacts')." SET ".join(', ', $a_write_sql)." WHERE contact_id=? AND user_id=? AND del<>'1'", $_POST['_cid'], $_SESSION['user_id']); $updated = $DB->affected_rows(); } if ($updated) { $_action = 'show'; show_message('successfullysaved', 'confirmation'); if ($_POST['_framed']) { // define list of cols to be displayed $a_show_cols = array('name', 'email'); $a_js_cols = array(); $sql_result = $DB->query("SELECT * FROM ".get_table_name('contacts')." WHERE contact_id=? AND user_id=? AND del<>'1'", $_POST['_cid'], $_SESSION['user_id']); $sql_arr = $DB->fetch_assoc($sql_result); foreach ($a_show_cols as $col) $a_js_cols[] = (string)$sql_arr[$col]; // update the changed col in list $OUTPUT->add_script(sprintf("if(parent.%s)parent.%s.update_contact_row('%d', %s);", $JS_OBJECT_NAME, $JS_OBJECT_NAME, $_POST['_cid'], array2js($a_js_cols))); // show confirmation show_message('successfullysaved', 'confirmation'); } } else { // show error message show_message('errorsaving', 'error'); $_action = 'show'; } } // insert a new contact else { $a_insert_cols = $a_insert_values = array(); foreach ($a_save_cols as $col) { $fname = '_'.$col; if (!isset($_POST[$fname])) continue; $a_insert_cols[] = $col; $a_insert_values[] = sprintf("'%s'", addslashes(strip_tags($_POST[$fname]))); } if (sizeof($a_insert_cols)) { $DB->query("INSERT INTO ".get_table_name('contacts')." (user_id, ".join(', ', $a_insert_cols).") VALUES (?, ".join(', ', $a_insert_values).")", $_SESSION['user_id']); $insert_id = $DB->insert_id(); } if ($insert_id) { $_action = 'show'; $_GET['_cid'] = $insert_id; if ($_POST['_framed']) { // add contact row or jump to the page where it should appear $commands = sprintf("if(parent.%s)parent.", $JS_OBJECT_NAME); $sql_result = $DB->query("SELECT * FROM ".get_table_name('contacts')." WHERE contact_id=? AND user_id=?", $insert_id, $_SESSION['user_id']); $commands .= rcmail_js_contacts_list($sql_result, $JS_OBJECT_NAME); $commands .= sprintf("if(parent.%s)parent.%s.select('%d');\n", $JS_OBJECT_NAME, $JS_OBJECT_NAME, $insert_id); // update record count display $commands .= sprintf("if(parent.%s)parent.%s.set_rowcount('%s');\n", $JS_OBJECT_NAME, $JS_OBJECT_NAME, rcmail_get_rowcount_text()); $OUTPUT->add_script($commands); // show confirmation show_message('successfullysaved', 'confirmation'); } } else { // show error message show_message('errorsaving', 'error'); $_action = 'add'; } } ?>