]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/apistatusnetconfig.php
Merge branch 'testing' of gitorious.org:statusnet/mainline into testing
[quix0rs-gnu-social.git] / actions / apistatusnetconfig.php
index 356942a859ee646ba2318c22391ae5aa4fa341a5..771a95baec6e4d1f7603c7506b09e8a3a819e806 100644 (file)
@@ -21,6 +21,7 @@
  *
  * @category  API
  * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
  * @author    Zach Copley <zach@status.net>
  * @copyright 2009 StatusNet, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
@@ -31,8 +32,6 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-require_once INSTALLDIR . '/lib/api.php';
-
 /**
  * Gives a full dump of configuration variables for this instance
  * of StatusNet, minus variables that may be security-sensitive (like
@@ -42,21 +41,25 @@ require_once INSTALLDIR . '/lib/api.php';
  *
  * @category API
  * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
  * @author   Zach Copley <zach@status.net>
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link     http://status.net/
  */
-
 class ApiStatusnetConfigAction extends ApiAction
 {
     var $keys = array(
-        'site' => array('name', 'server', 'theme', 'path', 'fancy', 'language',
-                        'email', 'broughtby', 'broughtbyurl', 'closed',
-                        'inviteonly', 'private'),
-        'license' => array('url', 'title', 'image'),
+        'site' => array('name', 'server', 'theme', 'path', 'logo', 'fancy', 'language',
+                        'email', 'broughtby', 'broughtbyurl', 'timezone', 'closed',
+                        'inviteonly', 'private', 'textlimit', 'ssl', 'sslserver', 'shorturllength'),
+        'license' => array('type', 'owner', 'url', 'title', 'image'),
         'nickname' => array('featured'),
+        'profile' => array('biolimit'),
+        'group' => array('desclimit'),
+        'notice' => array('contentlimit'),
         'throttle' => array('enabled', 'count', 'timespan'),
-        'xmpp' => array('enabled', 'server', 'user')
+        'xmpp' => array('enabled', 'server', 'port', 'user'),
+        'integration' => array('source')
     );
 
     /**
@@ -65,9 +68,7 @@ class ApiStatusnetConfigAction extends ApiAction
      * @param array $args $_REQUEST args
      *
      * @return boolean success flag
-     *
      */
-
     function prepare($args)
     {
         parent::prepare($args);
@@ -81,37 +82,42 @@ class ApiStatusnetConfigAction extends ApiAction
      *
      * @return void
      */
-
     function handle($args)
     {
         parent::handle($args);
 
         switch ($this->format) {
         case 'xml':
-            $this->init_document('xml');
+            $this->initDocument('xml');
             $this->elementStart('config');
 
             // XXX: check that all sections and settings are legal XML elements
 
-            common_debug(var_export($this->keys, true));
-
             foreach ($this->keys as $section => $settings) {
                 $this->elementStart($section);
                 foreach ($settings as $setting) {
                     $value = common_config($section, $setting);
                     if (is_array($value)) {
                         $value = implode(',', $value);
-                    } else if ($value === false) {
+                    } else if ($value === false || $value == '0') {
                         $value = 'false';
-                    } else if ($value === true) {
+                    } else if ($value === true || $value == '1') {
                         $value = 'true';
                     }
+
+                    // return theme logo if there's no site specific one
+                    if (empty($value)) {
+                        if ($section == 'site' && $setting == 'logo') {
+                            $value = Theme::path('logo.png');
+                        }
+                    }
+
                     $this->element($setting, null, $value);
                 }
                 $this->elementEnd($section);
             }
             $this->elementEnd('config');
-            $this->end_document('xml');
+            $this->endDocument('xml');
             break;
         case 'json':
             $result = array();
@@ -122,13 +128,14 @@ class ApiStatusnetConfigAction extends ApiAction
                         = common_config($section, $setting);
                 }
             }
-            $this->init_document('json');
-            $this->show_json_objects($result);
-            $this->end_document('json');
+            $this->initDocument('json');
+            $this->showJsonObjects($result);
+            $this->endDocument('json');
             break;
         default:
             $this->clientError(
-                _('API method not found!'),
+                // TRANS: Client error displayed when trying to handle an unknown API method.
+                _('API method not found.'),
                 404,
                 $this->format
             );
@@ -136,5 +143,17 @@ class ApiStatusnetConfigAction extends ApiAction
         }
     }
 
+    /**
+     * Return true if read only.
+     *
+     * MAY override
+     *
+     * @param array $args other arguments
+     *
+     * @return boolean is read only action?
+     */
+    function isReadOnly($args)
+    {
+        return true;
+    }
 }
-