X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=include%2Foptions%2Fpersonal.php;h=177c0c08fa907bbe2197449db4fff894608c4599;hp=e0b7ad2a9035418c805518b1083fea090b7aac9c;hb=041d360b6d4e68428aa55fdc08940938535886f9;hpb=c030a4d29cf1496f6553d49de8cc14fe20864a61 diff --git a/include/options/personal.php b/include/options/personal.php index e0b7ad2a..177c0c08 100644 --- a/include/options/personal.php +++ b/include/options/personal.php @@ -3,16 +3,16 @@ /** * options_personal.php * - * Copyright (c) 1999-2003 The SquirrelMail Project Team - * Licensed under the GNU GPL. For full terms see the file COPYING. - * * Displays all options relating to personal information * - * $Id$ + * @copyright 1999-2017 The SquirrelMail Project Team + * @license http://opensource.org/licenses/gpl-license.php GNU Public License + * @version $Id$ + * @package squirrelmail */ -/* SquirrelMail required files. */ -require_once(SM_PATH . 'functions/imap.php'); +/** SquirrelMail required files. */ +require_once(SM_PATH . 'include/timezones.php'); /* Define the group constants for the personal options page. */ define('SMOPT_GRP_CONTACT', 0); @@ -20,17 +20,38 @@ define('SMOPT_GRP_REPLY', 1); define('SMOPT_GRP_SIG', 2); define('SMOPT_GRP_TZ', 3); -/* Define the optpage load function for the personal options page. */ +/** + * This function builds an array with all the information about + * the options available to the user, and returns it. The options + * are grouped by the groups in which they are displayed. + * For each option, the following information is stored: + * - name: the internal (variable) name + * - caption: the description of the option in the UI + * - type: one of SMOPT_TYPE_* + * - refresh: one of SMOPT_REFRESH_* + * - size: one of SMOPT_SIZE_* + * - save: the name of a function to call when saving this option + * @return array all option information + */ function load_optpage_data_personal() { - global $data_dir, $username, $edit_identity, $edit_name, + global $data_dir, $username, $edit_identity, $edit_name, $edit_reply_to, $full_name, $reply_to, $email_address, $signature, $tzChangeAllowed, - $color; + $timeZone, $domain; /* Set the values of some global variables. */ $full_name = getPref($data_dir, $username, 'full_name'); $reply_to = getPref($data_dir, $username, 'reply_to'); - $email_address = getPref($data_dir, $username, 'email_address'); + $email_address = getPref($data_dir, $username, 'email_address',SMPREF_NONE); $signature = getSig($data_dir, $username, 'g'); + + // set email_address to default value, if it is not set in user's preferences + if ($email_address == SMPREF_NONE) { + if (preg_match("/(.+)@(.+)/",$username)) { + $email_address = $username; + } else { + $email_address = $username . '@' . $domain ; + } + } /* Build a simple array into which we will build options. */ $optgrps = array(); @@ -72,7 +93,7 @@ function load_optpage_data_personal() { if ($edit_identity) { $optvals[SMOPT_GRP_CONTACT][] = array( 'name' => 'email_address', - 'caption' => _("Email Address"), + 'caption' => _("E-mail Address"), 'type' => SMOPT_TYPE_STRING, 'refresh' => SMOPT_REFRESH_NONE, 'size' => SMOPT_SIZE_HUGE @@ -80,20 +101,33 @@ function load_optpage_data_personal() { } else { $optvals[SMOPT_GRP_CONTACT][] = array( 'name' => 'email_address', - 'caption' => _("Email Address"), + 'caption' => _("E-mail Address"), 'type' => SMOPT_TYPE_COMMENT, 'refresh' => SMOPT_REFRESH_NONE, - 'comment' => $email_address + 'comment' => sm_encode_html_special_chars($email_address) ); } - $optvals[SMOPT_GRP_CONTACT][] = array( - 'name' => 'reply_to', - 'caption' => _("Reply To"), - 'type' => SMOPT_TYPE_STRING, - 'refresh' => SMOPT_REFRESH_NONE, - 'size' => SMOPT_SIZE_HUGE - ); + if ($edit_identity || $edit_reply_to) { + $optvals[SMOPT_GRP_CONTACT][] = array( + 'name' => 'reply_to', + 'caption' => _("Reply To"), + 'type' => SMOPT_TYPE_STRING, + 'refresh' => SMOPT_REFRESH_NONE, + 'size' => SMOPT_SIZE_HUGE + ); + } else { +//TODO: For many users, this is redundant to the email address above, especially if not editable -- so here instead of a comment, we could just hide it... in fact, that's what we'll do, but keep this code for posterity in case someone decides we shouldn't do this +/* + $optvals[SMOPT_GRP_CONTACT][] = array( + 'name' => 'reply_to', + 'caption' => _("Reply To"), + 'type' => SMOPT_TYPE_COMMENT, + 'refresh' => SMOPT_REFRESH_NONE, + 'comment' => sm_encode_html_special_chars($reply_to), + ); +*/ + } $optvals[SMOPT_GRP_CONTACT][] = array( 'name' => 'signature', @@ -105,9 +139,9 @@ function load_optpage_data_personal() { ); if ($edit_identity) { - $identities_link_value = '' + $identities_link_value = '' . _("Edit Advanced Identities") - . ' ' + . ' ' . _("(discards changes made on this form so far)"); $optvals[SMOPT_GRP_CONTACT][] = array( 'name' => 'identities_link', @@ -117,23 +151,50 @@ function load_optpage_data_personal() { 'comment' => $identities_link_value ); } - - if ( $tzChangeAllowed ) { + + if ( $tzChangeAllowed || function_exists('date_default_timezone_set')) { $TZ_ARRAY[SMPREF_NONE] = _("Same as server"); - $tzfile = SM_PATH . 'locale/timezones.cfg'; - if(!$fd = @fopen($tzfile ,'r')) { + + $aTimeZones = sq_get_tz_array(); + unset($message); + if (! empty($aTimeZones)) { + // check if current timezone is linked to other TZ and update it + if ($timeZone != SMPREF_NONE && $timeZone != "" && + isset($aTimeZones[$timeZone]['LINK'])) { + $timeZone = $aTimeZones[$timeZone]['LINK']; + // TODO: recheck setting of $timeZone + // setPref($data_dir,$username,'timezone',$timeZone); + } + + // sort time zones by name. sq_get_tz_array() returns sorted by key. + // asort($aTimeZones); + + // add all 'TZ' entries to TZ_ARRAY + foreach ($aTimeZones as $TzKey => $TzData) { + if (! isset($TzData['LINK'])) { + // Old display format + $TZ_ARRAY[$TzKey] = $TzKey; + + // US Eastern standard time (America/New_York) - needs asort($aTimeZones) + //$TZ_ARRAY[$TzKey] = (isset($TzData['NAME']) ? $TzData['NAME']." ($TzKey)" : "($TzKey)"); + + // US Eastern standard time if NAME is present or America/New_York if NAME not present + // needs sorting after all data is added or uasort() + //$TZ_ARRAY[$TzKey] = (isset($TzData['NAME']) ? $TzData['NAME'] : $TzKey); + + // (America/New_Your) US Eastern standard time + //$TZ_ARRAY[$TzKey] = "($TzKey)" . (isset($TzData['NAME']) ? ' '.$TzData['NAME'] : ''); + } + } + } else { $message = _("Error opening timezone config, contact administrator."); - plain_error_message($message, $color); - exit; } - while (!feof ($fd)) { - $zone = fgets($fd, 1024); - if( $zone ) { - $zone = trim($zone); - $TZ_ARRAY[$zone] = $zone; - } + + // TODO: make error user friendly + if (isset($message)) { + plain_error_message($message); + exit; } - fclose ($fd); $optgrps[SMOPT_GRP_TZ] = _("Timezone Options"); $optvals[SMOPT_GRP_TZ] = array(); @@ -146,7 +207,7 @@ function load_optpage_data_personal() { 'posvals' => $TZ_ARRAY ); } - + /*** Load the Reply Citation Options into the array ***/ $optgrps[SMOPT_GRP_REPLY] = _("Reply Citation Options"); $optvals[SMOPT_GRP_REPLY] = array(); @@ -157,7 +218,8 @@ function load_optpage_data_personal() { 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_NONE, 'posvals' => array(SMPREF_NONE => _("No Citation"), - 'author_said' => _("AUTHOR Said"), + 'author_said' => _("AUTHOR Wrote"), + 'date_time_author' => _("On DATE, AUTHOR Wrote"), 'quote_who' => _("Quote Who XML"), 'user-defined' => _("User-Defined")) ); @@ -208,9 +270,11 @@ function load_optpage_data_personal() { /** Define any specialized save functions for this option page. ***/ /******************************************************************/ +/** + * Saves the signature option. + */ function save_option_signature($option) { global $data_dir, $username; setSig($data_dir, $username, 'g', $option->new_value); } -?>