]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
add some more fields to site admin panel
authorEvan Prodromou <evan@status.net>
Sun, 8 Nov 2009 20:48:05 +0000 (15:48 -0500)
committerEvan Prodromou <evan@status.net>
Sun, 8 Nov 2009 20:48:05 +0000 (15:48 -0500)
actions/siteadminpanel.php

index 8a15458385e920eacf948ac8a2dd15c7ac241b56..2c7382e43b160104470b56693ee115f313e2e66e 100644 (file)
@@ -90,18 +90,52 @@ class SiteadminpanelAction extends AdminPanelAction
 
     function saveSettings()
     {
-        $name = $this->trimmed('name');
+        static $settings = array('name', 'broughtby', 'broughtbyurl', 'email');
+
+        $values = array();
+
+        foreach ($settings as $setting) {
+            $values[$setting] = $this->trimmed($setting);
+        }
+
+        // This throws an exception on validation errors
+
+        $this->validate($values);
+
+        // assert(all values are valid);
 
         $config = new Config();
 
         $config->query('BEGIN');
 
-        Config::save('site', 'name', $name);
+        foreach ($settings as $setting) {
+            Config::save('site', $setting, $values['setting']);
+        }
 
         $config->query('COMMIT');
 
         return;
     }
+
+    function validate(&$values)
+    {
+        // Validate site name
+
+        if (empty($values['name'])) {
+            $this->clientError(_("Site name must have non-zero length."));
+        }
+
+        // Validate email
+
+        $values['email'] = common_canonical_email($values['email']);
+
+        if (empty($values['email'])) {
+            $this->clientError(_('You must have a valid contact email address'));
+        }
+        if (!Validate::email($values['email'], common_config('email', 'check_domain'))) {
+            $this->clientError(_('Not a valid email address'));
+        }
+    }
 }
 
 class SiteAdminPanelForm extends Form
@@ -147,10 +181,34 @@ class SiteAdminPanelForm extends Form
 
     function formData()
     {
-        $this->out->input('name', _('Site name'),
-                          ($this->out->arg('name')) ? $this->out->arg('name') :
-                          common_config('site', 'name'),
-                          _('The name of your site, like "Yourcompany Microblog"'));
+        $this->input('name', _('Site name'),
+                     _('The name of your site, like "Yourcompany Microblog"'));
+        $this->input('broughtby', _('Brought by'),
+                     _('Text used for credits link in footer of each page'));
+        $this->input('broughtbyurl', _('Brought by URL'),
+                     _('URL used for credits link in footer of each page'));
+        $this->input('email', _('Email'),
+                     _('contact email address for your site'));
+    }
+
+    /**
+     * Utility to simplify some of the duplicated code around
+     * params and settings.
+     *
+     * @param string $setting      Name of the setting
+     * @param string $title        Title to use for the input
+     * @param string $instructions Instructions for this field
+     *
+     * @return void
+     */
+
+    function input($setting, $title, $instructions)
+    {
+        $value = $this->out->trimmed($setting);
+        if (empty($value)) {
+            $value = common_config('site', $setting);
+        }
+        $this->out->input($setting, $title, $value, $instructions);
     }
 
     /**