phpDocumentor updates
[squirrelmail.git] / functions / identity.php
CommitLineData
b1f45342 1<?php
2
3/**
4 * identity.php
5 *
b1f45342 6 * This contains utility functions for dealing with multiple identities
7 *
4b4abf93 8 * @copyright &copy; 1999-2005 The SquirrelMail Project Team
9 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
31841a9e 10 * @version $Id$
d6c32258 11 * @package squirrelmail
0392886d 12 * @since 1.4.2
b1f45342 13 */
14
cf6f9b31 15/** Used to simplify includes
16 * @ignore
17 */
b1f45342 18if (!defined('SM_PATH')) {
19 define('SM_PATH','../');
20}
21
0392886d 22/** preference and signature functions */
b1f45342 23include_once(SM_PATH . 'include/load_prefs.php');
24
25/**
0392886d 26 * Returns an array of all the identities.
27 * Array is keyed: full_name, reply_to, email_address, index, signature
28 * @return array full_name,reply_to,email_address,index,signature
29 * @since 1.4.2
30 */
b1f45342 31function get_identities() {
32
b6e70801 33 global $username, $data_dir, $domain;
34
35 $em = getPref($data_dir,$username,'email_address');
f16477bc 36 if ( ! $em ) {
37 if (strpos($username , '@') == false) {
38 $em = $username.'@'.$domain;
39 } else {
40 $em = $username;
41 }
42 }
b1f45342 43 $identities = array();
44 /* We always have this one, even if the user doesn't use multiple identities */
0f4f003e 45 $identities[] = array('full_name' => getPref($data_dir,$username,'full_name'),
b6e70801 46 'email_address' => $em,
b1f45342 47 'reply_to' => getPref($data_dir,$username,'reply_to'),
48 'signature' => getSig($data_dir,$username,'g'),
49 'index' => 0 );
50
b6e70801 51 $num_ids = getPref($data_dir,$username,'identities');
b1f45342 52 /* If there are any others, add them to the array */
de981f8c 53 if (!empty($num_ids) && $num_ids > 1) {
54 for ($i=1;$i<$num_ids;$i++) {
0f4f003e 55 $identities[] = array('full_name' => getPref($data_dir,$username,'full_name' . $i),
b1f45342 56 'email_address' => getPref($data_dir,$username,'email_address' . $i),
57 'reply_to' => getPref($data_dir,$username,'reply_to' . $i),
58 'signature' => getSig($data_dir,$username,$i),
59 'index' => $i );
60 }
61 }
62
63 return $identities;
64}
65
e7f9c987 66/**
67 * Function to save the identities array
68 *
69 * @param array $identities Array of identities
0392886d 70 * @since 1.5.1 and 1.4.5
e7f9c987 71 */
72function save_identities($identities) {
73
74 global $username, $data_dir, $domain;
75
76 if (empty($identities) || !is_array($identities)) {
77 return;
78 }
79
80
81 $num_cur = getPref($data_dir, $username, 'identities');
82
83 $cnt = count($identities);
84
85 // Remove any additional identities in prefs //
86 for($i=$cnt; $i <= $num_cur; $i++) {
87 removePref($data_dir, $username, 'full_name' . $i);
88 removePref($data_dir, $username, 'email_address' . $i);
89 removePref($data_dir, $username, 'reply_to' . $i);
90 setSig($data_dir, $username, $i, '');
91 }
92
93 foreach($identities as $id=>$ident) {
94
95 $key = ($id?$id:'');
96
97 setPref($data_dir, $username, 'full_name' . $key, $ident['full_name']);
98 setPref($data_dir, $username, 'email_address' . $key, $ident['email_address']);
99 setPref($data_dir, $username, 'reply_to' . $key, $ident['reply_to']);
100
101 if ($id === 0) {
102 setSig($data_dir, $username, 'g', $ident['signature']);
103 } else {
104 setSig($data_dir, $username, $key, $ident['signature']);
105 }
106
107 }
108
109 setPref($data_dir, $username, 'identities', $cnt);
110
111}
112
113/**
114 * Returns an array with a fixed set of identities
115 *
116 * @param array $identities Array of identities
117 * @param int $id Identity to modify
118 * @param string $action Action to perform
119 * @return array
0392886d 120 * @since 1.5.1 and 1.4.5
e7f9c987 121 */
122function sqfixidentities( $identities, $id, $action ) {
123
124 $fixed = array();
125 $tmp_hold = array();
126 $i = 0;
127
128 if (empty($identities) || !is_array($identities)) {
129 return $fixed;
130 }
131
132 foreach( $identities as $key=>$ident ) {
133
134 if (empty_identity($ident)) {
135 continue;
136 }
137
138 switch($action) {
139
140 case 'makedefault':
141
142 if ($key == $id) {
143 $fixed[0] = $ident;
3df61ef3 144
145 // inform plugins about renumbering of ids
146 do_hook('options_identities_renumber', $id, 'default');
147
e7f9c987 148 continue 2;
149 } else {
150 $fixed[$i+1] = $ident;
151 }
152 break;
153
154 case 'move':
155
156 if ($key == ($id - 1)) {
157 $tmp_hold = $ident;
3df61ef3 158
159 // inform plugins about renumbering of ids
160 do_hook('options_identities_renumber', $id , $id - 1);
161
e7f9c987 162 continue 2;
163 } else {
164 $fixed[$i] = $ident;
165
166 if ($key == $id) {
167 $i++;
168 $fixed[$i] = $tmp_hold;
169 }
170 }
171 break;
172
173 case 'delete':
174
175 if ($key == $id) {
1d6248ce 176 // inform plugins about deleted id
177 do_hook('options_identities_process', $action, $id);
178
e7f9c987 179 continue 2;
180 } else {
181 $fixed[$i] = $ident;
182 }
183 break;
184
3df61ef3 185 // Process actions from plugins and save/update action //
e7f9c987 186 default:
3df61ef3 187 /**
188 * send action and id information. number of hook arguments
189 * differs from 1.4.4 or older and 1.5.0. count($args) can
190 * be used to detect modified hook. Older hook does not
191 * provide information that can be useful for plugins.
192 */
193 do_hook('options_identities_process', $action, $id);
194
e7f9c987 195 $fixed[$i] = $ident;
196
197 }
198
199 // Inc array index //
200 $i++;
201 }
202
203 ksort($fixed);
204 return $fixed;
205
206}
207
208/**
209 * Function to test if identity is empty
210 *
211 * @param array $identity Identitiy Array
212 * @return boolean
0392886d 213 * @since 1.5.1 and 1.4.5
e7f9c987 214 */
215function empty_identity($ident) {
216 if (empty($ident['full_name']) && empty($ident['email_address']) && empty($ident['signature']) && empty($ident['reply_to'])) {
217 return true;
218 } else {
219 return false;
220 }
221}
222
0392886d 223?>