*
* This contains utility functions for dealing with multiple identities
*
- * @copyright © 1999-2006 The SquirrelMail Project Team
+ * @copyright 1999-2010 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
* @since 1.4.2
*/
-/** Used to simplify includes
- * @ignore
- */
-if (!defined('SM_PATH')) {
- define('SM_PATH','../');
-}
-
-/** preference and signature functions */
-include_once(SM_PATH . 'include/load_prefs.php');
/**
* Returns an array of all the identities.
/* If there are any others, add them to the array */
if (!empty($num_ids) && $num_ids > 1) {
for ($i=1;$i<$num_ids;$i++) {
+ $thisem = getPref($data_dir,$username,'email_address' . $i);
$identities[] = array('full_name' => getPref($data_dir,$username,'full_name' . $i),
- 'email_address' => getPref($data_dir,$username,'email_address' . $i),
+ 'email_address' => empty($thisem)?$em:$thisem,
'reply_to' => getPref($data_dir,$username,'reply_to' . $i),
'signature' => getSig($data_dir,$username,$i),
'index' => $i );
$num_cur = getPref($data_dir, $username, 'identities');
-
+
$cnt = count($identities);
// Remove any additional identities in prefs //
$fixed[0] = $ident;
// inform plugins about renumbering of ids
- do_hook('options_identities_renumber', $id, 'default');
+ $temp = array(&$id, 'default');
+ do_hook('options_identities_renumber', $temp);
continue 2;
} else {
$tmp_hold = $ident;
// inform plugins about renumbering of ids
- do_hook('options_identities_renumber', $id , $id - 1);
+ $temp = array(&$id , $id - 1);
+ do_hook('options_identities_renumber', $temp);
continue 2;
} else {
if ($key == $id) {
// inform plugins about deleted id
- do_hook('options_identities_process', $action, $id);
+ $temp = array(&$action, &$id);
+ do_hook('options_identities_process', $temp);
continue 2;
} else {
// Process actions from plugins and save/update action //
default:
/**
- * send action and id information. number of hook arguments
- * differs from 1.4.4 or older and 1.5.0. count($args) can
- * be used to detect modified hook. Older hook does not
+ * send action and id information. number of hook arguments
+ * differs from 1.4.4 or older and 1.5.0. count($args) can
+ * be used to detect modified hook. Older hook does not
* provide information that can be useful for plugins.
*/
- do_hook('options_identities_process', $action, $id);
+ $temp = array(&$action, &$id);
+ do_hook('options_identities_process', $temp);
$fixed[$i] = $ident;
}
}
-?>
\ No newline at end of file
+/**
+ * Construct our "From:" header based on
+ * a supplied identity number.
+ * Will fall back when no sensible email address has been defined.
+ *
+ * @param int $identity identity# to use
+ * @since 1.5.2
+ */
+function build_from_header($identity = 0) {
+
+ global $domain;
+
+ $idents = get_identities();
+
+ if (! isset($idents[$identity]) ) $identity = 0;
+
+ if ( !empty($idents[$identity]['full_name']) ) {
+ $from_name = $idents[$identity]['full_name'];
+ }
+
+ $from_mail = $idents[$identity]['email_address'];
+ if (strpos($from_mail, '@') === FALSE)
+ $from_mail .= '@' . $domain;
+
+ if ( isset($from_name) ) {
+ $from_name_encoded = encodeHeader($from_name);
+ if ($from_name_encoded != $from_name) {
+ return '"' . $from_name_encoded . '" <' . $from_mail . '>';
+ }
+ return '"' . $from_name . '" <' . $from_mail . '>';
+ }
+ return $from_mail;
+}
+
+/**
+ * Find a matching identity based on a set of emailaddresses.
+ * Will return the first identity to have a matching address.
+ * When nothing found, returns the default identity.
+ *
+ * @param needles array list of mailadresses
+ * @returns int identity
+ * @since 1.5.2
+ */
+function find_identity($needles) {
+ $idents = get_identities();
+ if ( count($idents) == 1 || empty($needles) ) return 0;
+
+ foreach ( $idents as $nr => $ident ) {
+ if ( isset($ident['email_address']) ) {
+ foreach ( $needles as $needle ) {
+ if ( strcasecmp($needle, $ident['email_address']) == 0 ) {
+ return $nr;
+ }
+ }
+ }
+ }
+ return 0;
+}