summaryrefslogtreecommitdiff
path: root/program/steps/settings/save_identity.inc
diff options
context:
space:
mode:
Diffstat (limited to 'program/steps/settings/save_identity.inc')
-rw-r--r--program/steps/settings/save_identity.inc136
1 files changed, 136 insertions, 0 deletions
diff --git a/program/steps/settings/save_identity.inc b/program/steps/settings/save_identity.inc
new file mode 100644
index 000000000..b4b1fec27
--- /dev/null
+++ b/program/steps/settings/save_identity.inc
@@ -0,0 +1,136 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/steps/settings/save_identity.inc |
+ | |
+ | This file is part of the RoundCube Webmail client |
+ | Copyright (C) 2005, RoundCube Dev. - Switzerland |
+ | All rights reserved. |
+ | |
+ | PURPOSE: |
+ | Save an identity record or to add a new one |
+ | |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com> |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+$a_save_cols = array('name', 'email', 'organization', 'reply-to', 'bcc', 'default');
+
+
+// update an existing contact
+if ($_POST['_iid'])
+ {
+ $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($_POST[$fname]));
+ }
+
+ if (sizeof($a_write_sql))
+ {
+ $DB->query(sprintf("UPDATE %s
+ SET %s
+ WHERE identity_id=%d
+ AND user_id=%d
+ AND del!='1'",
+ get_table_name('identities'),
+ join(', ', $a_write_sql),
+ $_POST['_iid'],
+ $_SESSION['user_id']));
+
+ $updated = $DB->affected_rows();
+ }
+
+ if ($updated)
+ {
+ show_message('successfullysaved', 'confirmation');
+
+ // mark all other identities as 'not-default'
+ $DB->query(sprintf("UPDATE %s
+ SET `default`='0'
+ WHERE identity_id!=%d
+ AND user_id=%d
+ AND del!='1'",
+ get_table_name('identities'),
+ $_POST['_iid'],
+ $_SESSION['user_id']));
+
+ if ($_POST['_framed'])
+ {
+ // update the changed col in list
+ // ...
+ }
+ }
+ else
+ {
+ // show error message
+
+ }
+ }
+
+// 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($_POST[$fname]));
+ }
+
+ if (sizeof($a_insert_cols))
+ {
+ $DB->query(sprintf("INSERT INTO %s
+ (user_id, %s)
+ VALUES (%d, %s)",
+ get_table_name('identities'),
+ join(', ', $a_insert_cols),
+ $_SESSION['user_id'],
+ join(', ', $a_insert_values)));
+
+ $insert_id = $DB->insert_id();
+ }
+
+ if ($insert_id)
+ {
+ $_GET['_iid'] = $insert_id;
+
+ if ($_POST['_framed'])
+ {
+ // add contact row or jump to the page where it should appear
+ // ....
+ }
+ }
+ else
+ {
+ // show error message
+ }
+ }
+
+
+// go to next step
+if ($_POST['_framed'])
+ $_action = 'edit-identitiy';
+else
+ $_action = 'identities';
+
+
+// overwrite action variable
+$OUTPUT->add_script(sprintf("\n%s.set_env('action', '%s');", $JS_OBJECT_NAME, $_action));
+
+?> \ No newline at end of file