]> git.donarmstrong.com Git - roundcube.git/blobdiff - program/steps/settings/save_identity.inc
Imported Upstream version 0.1
[roundcube.git] / program / steps / settings / save_identity.inc
index eeadd58093df54db0ce7aa303d1c58b285b31dba..787c5d2aea8205e633343184b9643676e2aa4196 100644 (file)
@@ -15,7 +15,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: save_identity.inc 543 2007-04-28 18:07:12Z thomasb $
+ $Id: save_identity.inc 938 2007-12-10 15:27:19Z thomasb $
 
 */
 
@@ -33,123 +33,78 @@ if (empty($_POST['_name']) || empty($_POST['_email']))
   }
 
 
-// update an existing contact
-if ($_POST['_iid'])
-  {
-  $a_write_sql = array();
+$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));
+}
 
-  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]))
+    $save_data[$col] = 0;
+}
 
-  // 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)
-    {
+// update an existing contact
+if ($_POST['_iid'])
+{
+  if ($updated = $USER->update_identity(get_input_value('_iid', RCUBE_INPUT_POST), $save_data))
+  {
     $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');