]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Clean up bit.ly admin panel behavior, and hide it from the shorteners list if it...
authorBrion Vibber <brion@pobox.com>
Thu, 7 Oct 2010 20:05:51 +0000 (13:05 -0700)
committerBrion Vibber <brion@pobox.com>
Thu, 7 Oct 2010 20:05:51 +0000 (13:05 -0700)
plugins/BitlyUrl/BitlyUrlPlugin.php
plugins/BitlyUrl/bitlyadminpanelaction.php

index c9005e52eca6688ffcd05839e81fd7eab412f226..93a35b3f384d85b52e2ed784560e37eed34a5b85 100644 (file)
@@ -39,6 +39,8 @@ class BitlyUrlPlugin extends UrlShortenerPlugin
 {
     public $shortenerName = 'bit.ly';
     public $serviceUrl = 'http://bit.ly/api?method=shorten&version=2.0.1&longUrl=%s';
+    public $login; // To set a site-default when admins or users don't override it.
+    public $apiKey;
 
     function onInitializePlugin(){
         parent::onInitializePlugin();
@@ -47,6 +49,21 @@ class BitlyUrlPlugin extends UrlShortenerPlugin
         }
     }
 
+    /**
+     * Add bit.ly to the list of available URL shorteners if it's configured,
+     * otherwise leave it out.
+     *
+     * @param array $shorteners
+     * @return boolean hook return value
+     */
+    function onGetUrlShorteners(&$shorteners)
+    {
+        if ($this->getLogin() && $this->getApiKey()) {
+            return parent::onGetUrlShorteners($shorteners);
+        }
+        return true;
+    }
+
     /**
      * Short a URL
      * @param url
@@ -68,7 +85,11 @@ class BitlyUrlPlugin extends UrlShortenerPlugin
      */
     protected function getLogin()
     {
-        return common_config('bitly', 'default_login');
+        $login = common_config('bitly', 'default_login');
+        if (!$login) {
+            $login = $this->login;
+        }
+        return $login;
     }
 
     /**
@@ -78,7 +99,11 @@ class BitlyUrlPlugin extends UrlShortenerPlugin
      */
     protected function getApiKey()
     {
-        return common_config('bitly', 'default_apikey');
+        $key = common_config('bitly', 'default_apikey');
+        if (!$key) {
+            $key = $this->apiKey;
+        }
+        return $key;
     }
 
     /**
@@ -213,4 +238,20 @@ class BitlyUrlPlugin extends UrlShortenerPlugin
             return true;
         }
     }
+
+    /**
+     * Internal hook point to check the default global credentials so
+     * the admin form knows if we have a fallback or not.
+     *
+     * @param string $login
+     * @param string $apiKey
+     * @return boolean hook return value
+     */
+    function onBitlyDefaultCredentials(&$login, &$apiKey)
+    {
+        $login = $this->login;
+        $apiKey = $this->apiKey;
+        return false;
+    }
+
 }
index 56f78e164888941c62ac0029fa53a4d0b91ee169..805b56b857529ed068a67c235a247074ea1378d1 100644 (file)
@@ -206,11 +206,18 @@ class BitlyAdminPanelForm extends AdminForm
             array('id' => 'settings_bitly')
         );
         $this->out->element('legend', null, _m('Default credentials'));
-        $this->out->element('p', 'form_guide',
-            _m('When users select the bit.ly shortening service, by default ' .
-               'these credentials will be used. If you leave these empty, ' .
-               'users will need to set up their own credentials in order to ' .
-               'use bit.ly.'));
+
+        // Do we have global defaults to fall back on?
+        $login = $apiKey = false;
+        Event::handle('BitlyDefaultCredentials', array(&$login, &$apiKey));
+        $haveGlobalDefaults = ($login && $apiKey);
+        if ($login && $apiKey) {
+            $this->out->element('p', 'form_guide',
+                _m('Leave these empty to use the default credentials.'));
+        } else {
+            $this->out->element('p', 'form_guide',
+                _m('If you leave these empty, bit.ly will be unavailable to users.'));
+        }
         $this->out->elementStart('ul', 'form_data');
 
         $this->li();