]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
add default timezone to site admin panel
authorEvan Prodromou <evan@status.net>
Mon, 9 Nov 2009 03:03:34 +0000 (22:03 -0500)
committerEvan Prodromou <evan@status.net>
Mon, 9 Nov 2009 03:03:34 +0000 (22:03 -0500)
actions/siteadminpanel.php

index 460567c2240395fb72c808c3fe52c691106adfd6..f66aa855c057efbfa28a3241aa9764231df01a5f 100644 (file)
@@ -90,7 +90,7 @@ class SiteadminpanelAction extends AdminPanelAction
 
     function saveSettings()
     {
-        static $settings = array('name', 'broughtby', 'broughtbyurl', 'email');
+        static $settings = array('name', 'broughtby', 'broughtbyurl', 'email', 'timezone');
 
         $values = array();
 
@@ -135,6 +135,14 @@ class SiteadminpanelAction extends AdminPanelAction
         if (!Validate::email($values['email'], common_config('email', 'check_domain'))) {
             $this->clientError(_('Not a valid email address'));
         }
+
+        // Validate timezone
+
+        if (is_null($values['timezone']) ||
+            !in_array($values['timezone'], DateTimeZone::listIdentifiers())) {
+            $this->clientError(_('Timezone not selected.'));
+            return;
+        }
     }
 }
 
@@ -189,6 +197,18 @@ class SiteAdminPanelForm extends Form
                      _('URL used for credits link in footer of each page'));
         $this->input('email', _('Email'),
                      _('contact email address for your site'));
+
+        $timezones = array();
+
+        foreach (DateTimeZone::listIdentifiers() as $k => $v) {
+            $timezones[$v] = $v;
+        }
+
+        asort($timezones);
+
+        $this->out->dropdown('timezone', _('Default timezone'),
+                             $timezones, _('Default timezone for the site; usually UTC.'),
+                             true, $this->value('timezone'));
     }
 
     /**
@@ -203,12 +223,25 @@ class SiteAdminPanelForm extends Form
      */
 
     function input($setting, $title, $instructions)
+    {
+        $this->out->input($setting, $title, $this->value($setting), $instructions);
+    }
+
+    /**
+     * Utility to simplify getting the posted-or-stored setting value
+     *
+     * @param string $setting Name of the setting
+     *
+     * @return string param value if posted, or current config value
+     */
+
+    function value($setting)
     {
         $value = $this->out->trimmed($setting);
         if (empty($value)) {
             $value = common_config('site', $setting);
         }
-        $this->out->input($setting, $title, $value, $instructions);
+        return $value;
     }
 
     /**