diff options
Diffstat (limited to 'program/steps/settings/save_identity.inc')
-rw-r--r-- | program/steps/settings/save_identity.inc | 107 |
1 files changed, 31 insertions, 76 deletions
diff --git a/program/steps/settings/save_identity.inc b/program/steps/settings/save_identity.inc index 8079b589a..2c2a55e49 100644 --- a/program/steps/settings/save_identity.inc +++ b/program/steps/settings/save_identity.inc @@ -33,123 +33,78 @@ if (empty($_POST['_name']) || empty($_POST['_email'])) } +$save_data = array(); +foreach ($a_save_cols as $col) +{ + $fname = '_'.$col; + if (isset($_POST[$fname])) + $save_data[$col] = get_input_value($fname, RCUBE_INPUT_POST, in_array($col, $a_html_cols)); +} + +// set "off" values for checkboxes that were not checked, and therefore +// not included in the POST body. +foreach ($a_boolean_cols as $col) +{ + $fname = '_' . $col; + if (!isset($_POST[$fname])) + $save_data[$col] = 0; +} + + // update an existing contact if ($_POST['_iid']) +{ + if ($updated = $USER->update_identity(get_input_value('_iid', RCUBE_INPUT_POST), $save_data)) { - $a_write_sql = array(); - - foreach ($a_save_cols as $col) - { - $fname = '_'.$col; - if (isset($_POST[$fname])) - $a_write_sql[] = sprintf("%s=%s", - $DB->quoteIdentifier($col), - $DB->quote(get_input_value($fname, RCUBE_INPUT_POST, in_array($col, $a_html_cols)))); - } - - // set "off" values for checkboxes that were not checked, and therefore - // not included in the POST body. - foreach ($a_boolean_cols as $col) - { - $fname = '_' . $col; - if (!isset($_POST[$fname])) - $a_write_sql[] = sprintf("%s=0", $DB->quoteIdentifier($col)); - } - - if (sizeof($a_write_sql)) - { - $DB->query( - "UPDATE ".get_table_name('identities')." - SET ".join(', ', $a_write_sql)." - WHERE identity_id=? - AND user_id=? - AND del<>1", - get_input_value('_iid', RCUBE_INPUT_POST), - $_SESSION['user_id']); - - $updated = $DB->affected_rows(); - } - - if ($updated) - { $OUTPUT->show_message('successfullysaved', 'confirmation'); if (!empty($_POST['_standard'])) $default_id = get_input_value('_iid', RCUBE_INPUT_POST); if ($_POST['_framed']) - { + { // update the changed col in list // ... - } } + } else if ($DB->is_error()) - { + { // show error message $OUTPUT->show_message('errorsaving', 'error'); rcmail_overwrite_action('edit-identitiy'); return; - } } +} // insert a new contact else +{ + if ($insert_id = $USER->insert_identity($save_data)) { - $a_insert_cols = $a_insert_values = array(); - - foreach ($a_save_cols as $col) - { - $fname = '_'.$col; - if (!isset($_POST[$fname])) - continue; - - $a_insert_cols[] = $DB->quoteIdentifier($col); - $a_insert_values[] = $DB->quote(get_input_value($fname, RCUBE_INPUT_POST, in_array($col, $a_html_cols))); - } - - if (sizeof($a_insert_cols)) - { - $DB->query("INSERT INTO ".get_table_name('identities')." - (user_id, ".join(', ', $a_insert_cols).") - VALUES (?, ".join(', ', $a_insert_values).")", - $_SESSION['user_id']); - - $insert_id = $DB->insert_id(get_sequence_name('identities')); - } - - if ($insert_id) - { $_GET['_iid'] = $insert_id; if (!empty($_POST['_standard'])) $default_id = $insert_id; if ($_POST['_framed']) - { + { // add contact row or jump to the page where it should appear // .... - } } + } else - { + { // show error message $OUTPUT->show_message('errorsaving', 'error'); rcmail_overwrite_action('edit-identity'); return; - } } +} // mark all other identities as 'not-default' if ($default_id) - $DB->query( - "UPDATE ".get_table_name('identities')." - SET ".$DB->quoteIdentifier('standard')."='0' - WHERE user_id=? - AND identity_id<>? - AND del<>1", - $_SESSION['user_id'], - $default_id); + $USER->set_default($default_id); // go to next step rcmail_overwrite_action($_framed ? 'edit-identity' : 'identities'); |