]> git.donarmstrong.com Git - roundcube.git/blob - program/steps/settings/save_identity.inc
Imported Upstream version 0.2~stable
[roundcube.git] / program / steps / settings / save_identity.inc
1 <?php
2
3 /*
4  +-----------------------------------------------------------------------+
5  | program/steps/settings/save_identity.inc                              |
6  |                                                                       |
7  | This file is part of the RoundCube Webmail client                     |
8  | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland                 |
9  | Licensed under the GNU GPL                                            |
10  |                                                                       |
11  | PURPOSE:                                                              |
12  |   Save an identity record or to add a new one                         |
13  |                                                                       |
14  +-----------------------------------------------------------------------+
15  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
16  +-----------------------------------------------------------------------+
17
18  $Id: save_identity.inc 2006 2008-10-24 07:57:21Z alec $
19
20 */
21
22 define('IDENTITIES_LEVEL', intval($RCMAIL->config->get('identities_level', 0)));
23
24 $a_save_cols = array('name', 'email', 'organization', 'reply-to', 'bcc', 'standard', 'signature', 'html_signature');
25 $a_html_cols = array('signature');
26 $a_boolean_cols = array('standard', 'html_signature');
27 $updated = $default_id = false;
28
29 // check input
30 if (empty($_POST['_name']) || (empty($_POST['_email']) && IDENTITIES_LEVEL != 1 && IDENTITIES_LEVEL != 3))
31   {
32   $OUTPUT->show_message('formincomplete', 'warning');
33   rcmail_overwrite_action('edit-identity');
34   return;
35   }
36
37
38 $save_data = array();
39 foreach ($a_save_cols as $col)
40 {
41   $fname = '_'.$col;
42   if (isset($_POST[$fname]))
43     $save_data[$col] = get_input_value($fname, RCUBE_INPUT_POST, in_array($col, $a_html_cols));
44 }
45
46 // set "off" values for checkboxes that were not checked, and therefore
47 // not included in the POST body.
48 foreach ($a_boolean_cols as $col)
49 {
50   $fname = '_' . $col;
51   if (!isset($_POST[$fname]))
52     $save_data[$col] = 0;
53 }
54
55 // unset email address if user has no rights to change it
56 if (IDENTITIES_LEVEL == 1 || IDENTITIES_LEVEL == 3)
57   unset($save_data['email']);
58
59
60 // update an existing contact
61 if ($_POST['_iid'])
62 {
63   if ($updated = $USER->update_identity(get_input_value('_iid', RCUBE_INPUT_POST), $save_data))
64   {
65     $OUTPUT->show_message('successfullysaved', 'confirmation');
66     
67     if (!empty($_POST['_standard']))
68       $default_id = get_input_value('_iid', RCUBE_INPUT_POST);
69     
70     if ($_POST['_framed'])
71     {
72       // update the changed col in list
73       // ...      
74     }
75   }
76   else if ($DB->is_error())
77   {
78     // show error message
79     $OUTPUT->show_message('errorsaving', 'error');
80     rcmail_overwrite_action('edit-identity');
81     return;
82   }
83 }
84
85 // insert a new identity record
86 else if (IDENTITIES_LEVEL < 2)
87 {
88   if (IDENTITIES_LEVEL == 1)
89     $save_data['email'] = rcmail_get_email();
90
91   if ($save_data['email'] && ($insert_id = $USER->insert_identity($save_data)))
92   {
93     $OUTPUT->show_message('successfullysaved', 'confirmation');
94     
95     $_GET['_iid'] = $insert_id;
96
97     if (!empty($_POST['_standard']))
98       $default_id = $insert_id;
99   }
100   else
101   {
102     // show error message
103     $OUTPUT->show_message('errorsaving', 'error');
104     rcmail_overwrite_action('edit-identity');
105     return;
106   }
107 }
108 else
109   $OUTPUT->show_message('opnotpermitted', 'error');
110
111
112 // mark all other identities as 'not-default'
113 if ($default_id)
114   $USER->set_default($default_id);
115
116 // go to next step
117 rcmail_overwrite_action('identities');
118
119 ?>