Add radio button group widget type SMOPT_TYPE_STRLIST_RADIO
[squirrelmail.git] / include / options / personal.php
index 4bd01e76a92327d1dbe46a503b1dd240bf7db852..6c3a06ba47a490f8368967af6e2b796d36e5cdf8 100644 (file)
@@ -3,17 +3,16 @@
 /**
  * options_personal.php
  *
- * Copyright (c) 1999-2004 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-2007 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');
+require_once(SM_PATH . 'include/timezones.php');
 
 /* Define the group constants for the personal options page. */
 define('SMOPT_GRP_CONTACT', 0);
@@ -37,13 +36,22 @@ define('SMOPT_GRP_TZ', 3);
 function load_optpage_data_personal() {
     global $data_dir, $username, $edit_identity, $edit_name,
            $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();
@@ -85,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
@@ -93,10 +101,10 @@ 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' => htmlspecialchars($email_address)
         );
     }
 
@@ -118,9 +126,9 @@ function load_optpage_data_personal() {
     );
 
     if ($edit_identity) {
-        $identities_link_value = '<A HREF="options_identities.php">'
+        $identities_link_value = '<a href="options_identities.php">'
                                . _("Edit Advanced Identities")
-                               . '</A> '
+                               . '</a> '
                                . _("(discards changes made on this form so far)");
         $optvals[SMOPT_GRP_CONTACT][] = array(
             'name'    => 'identities_link',
@@ -130,25 +138,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 ((!is_readable($tzfile)) or (!$fd = fopen($tzfile,'r'))) {
-               $message = _("Error opening timezone config, contact administrator.");
-               }
-               if (isset($message)) {
-                   plain_error_message($message, $color);
-                   exit;
-       }
-        while (!feof ($fd)) {
-            $zone = fgets($fd, 1024);
-            if( $zone ) {
-                $zone = trim($zone);
-                $TZ_ARRAY[$zone] = $zone;
+
+        $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.");
+        }
+
+        // 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();
@@ -161,7 +194,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();
@@ -172,8 +205,8 @@ function load_optpage_data_personal() {
         'type'    => SMOPT_TYPE_STRLIST,
         'refresh' => SMOPT_REFRESH_NONE,
         'posvals' => array(SMPREF_NONE    => _("No Citation"),
-                           'author_said'  => _("AUTHOR Said"),
-                           'date_time_author' => _("On DATE, AUTHOR Said"),
+                           'author_said'  => _("AUTHOR Wrote"),
+                           'date_time_author' => _("On DATE, AUTHOR Wrote"),
                            'quote_who'    => _("Quote Who XML"),
                            'user-defined' => _("User-Defined"))
     );
@@ -232,4 +265,3 @@ function save_option_signature($option) {
     setSig($data_dir, $username, 'g', $option->new_value);
 }
 
-?>