From cad480551675c05452df109e5c4d43018139d6a1 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Thu, 7 Oct 2010 13:05:51 -0700 Subject: [PATCH] Clean up bit.ly admin panel behavior, and hide it from the shorteners list if it's not fully configured. --- plugins/BitlyUrl/BitlyUrlPlugin.php | 45 +++++++++++++++++++++- plugins/BitlyUrl/bitlyadminpanelaction.php | 17 +++++--- 2 files changed, 55 insertions(+), 7 deletions(-) diff --git a/plugins/BitlyUrl/BitlyUrlPlugin.php b/plugins/BitlyUrl/BitlyUrlPlugin.php index c9005e52ec..93a35b3f38 100644 --- a/plugins/BitlyUrl/BitlyUrlPlugin.php +++ b/plugins/BitlyUrl/BitlyUrlPlugin.php @@ -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; + } + } diff --git a/plugins/BitlyUrl/bitlyadminpanelaction.php b/plugins/BitlyUrl/bitlyadminpanelaction.php index 56f78e1648..805b56b857 100644 --- a/plugins/BitlyUrl/bitlyadminpanelaction.php +++ b/plugins/BitlyUrl/bitlyadminpanelaction.php @@ -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();