]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
- Have Twitter bridge check for a global key and secret if it can't
authorZach Copley <zach@status.net>
Wed, 3 Mar 2010 00:49:29 +0000 (16:49 -0800)
committerZach Copley <zach@status.net>
Wed, 3 Mar 2010 17:52:24 +0000 (09:52 -0800)
find one in the local config
- Refuse to work at all if the consumer key and secret aren't set

plugins/TwitterBridge/README
plugins/TwitterBridge/TwitterBridgePlugin.php
plugins/TwitterBridge/twitteroauthclient.php

index 72278b32e6eac525ec38fd19422a66a0872c4975..5117cf69ac4e8189b8d81eda674c975a238a2eaf 100644 (file)
@@ -20,7 +20,7 @@ on Twitter (http://twitter.com/apps).  During the application
 registration process your application will be assigned a "consumer" key
 and secret, which the plugin will use to make OAuth requests to Twitter.
 You can either pass the consumer key and secret in when you enable the
-plugin, or set it using the Twitter administration panel.
+plugin, or set it using the Twitter administration panel**.
 
 When registering your application with Twitter set the type to "Browser"
 and your Callback URL to:
@@ -42,11 +42,26 @@ To enable the plugin, add the following to your config.php:
         )
     );
 
+or just:
+
+   addPlugin('TwitterBridge');
+
+if you want to set the consumer key and secret from the Twitter bridge
+administration panel.  (The Twitter bridge wont work at all
+unless you configure it with a consumer key and secret.)
+
 * Note: The plugin will still push notices to Twitter for users who
   have previously set up the Twitter bridge using their Twitter name and
   password under an older version of StatusNet, but all new Twitter
   bridge connections will use OAuth.
 
+** For multi-site setups you can also set a global consumer key and and
+   secret.  The Twitter bridge will fall back on the global key pair if
+   it can't find a local pair, e.g.:
+
+   $config['twitter']['global_consumer_key']    = 'YOUR_CONSUMER_KEY'
+   $config['twitter']['global_consumer_secret'] = 'YOUR_CONSUMER_SECRET'
+
 Administration panel
 --------------------
 
index 6ce69d5e2b3f5b2434b465b87afb9852372abb32..bc702e745bbcbd7f446881ff1ff4a7b6378df85d 100644 (file)
@@ -79,6 +79,30 @@ class TwitterBridgePlugin extends Plugin
         }
     }
 
+    /**
+     * Check to see if there is a consumer key and secret defined
+     * for Twitter integration.
+     *
+     * @return boolean result
+     */
+
+    static function hasKeys()
+    {
+        $key    = common_config('twitter', 'consumer_key');
+        $secret = common_config('twitter', 'consumer_secret');
+
+        if (empty($key) && empty($secret)) {
+            $key    = common_config('twitter', 'global_consumer_key');
+            $secret = common_config('twitter', 'global_consumer_secret');
+        }
+
+        if (!empty($key) && !empty($secret)) {
+            return true;
+        }
+
+        return false;
+    }
+
     /**
      * Add Twitter-related paths to the router table
      *
@@ -91,14 +115,22 @@ class TwitterBridgePlugin extends Plugin
 
     function onRouterInitialized($m)
     {
-        $m->connect(
-            'twitter/authorization',
-            array('action' => 'twitterauthorization')
-        );
-        $m->connect('settings/twitter', array('action' => 'twittersettings'));
-
-        if (common_config('twitter', 'signin')) {
-            $m->connect('main/twitterlogin', array('action' => 'twitterlogin'));
+        if (self::hasKeys()) {
+            $m->connect(
+                'twitter/authorization',
+                array('action' => 'twitterauthorization')
+            );
+            $m->connect(
+                'settings/twitter', array(
+                    'action' => 'twittersettings'
+                    )
+                );
+            if (common_config('twitter', 'signin')) {
+                $m->connect(
+                    'main/twitterlogin',
+                    array('action' => 'twitterlogin')
+                );
+            }
         }
 
         $m->connect('admin/twitter', array('action' => 'twitteradminpanel'));
@@ -117,7 +149,7 @@ class TwitterBridgePlugin extends Plugin
     {
         $action_name = $action->trimmed('action');
 
-        if (common_config('twitter', 'signin')) {
+        if (self::hasKeys() && common_config('twitter', 'signin')) {
             $action->menuItem(
                 common_local_url('twitterlogin'),
                 _m('Twitter'),
@@ -138,15 +170,16 @@ class TwitterBridgePlugin extends Plugin
      */
     function onEndConnectSettingsNav(&$action)
     {
-        $action_name = $action->trimmed('action');
-
-        $action->menuItem(
-            common_local_url('twittersettings'),
-            _m('Twitter'),
-            _m('Twitter integration options'),
-            $action_name === 'twittersettings'
-        );
+        if (self::hasKeys()) {
+            $action_name = $action->trimmed('action');
 
+            $action->menuItem(
+                common_local_url('twittersettings'),
+                _m('Twitter'),
+                _m('Twitter integration options'),
+                $action_name === 'twittersettings'
+            );
+        }
         return true;
     }
 
@@ -188,12 +221,12 @@ class TwitterBridgePlugin extends Plugin
      */
     function onStartEnqueueNotice($notice, &$transports)
     {
-        // Avoid a possible loop
-
-        if ($notice->source != 'twitter') {
-            array_push($transports, 'twitter');
+        if (self::hasKeys()) {
+            // Avoid a possible loop
+            if ($notice->source != 'twitter') {
+                array_push($transports, 'twitter');
+            }
         }
-
         return true;
     }
 
@@ -206,18 +239,19 @@ class TwitterBridgePlugin extends Plugin
      */
     function onGetValidDaemons($daemons)
     {
-        array_push(
-            $daemons,
-            INSTALLDIR
-            . '/plugins/TwitterBridge/daemons/synctwitterfriends.php'
-        );
-
-        if (common_config('twitterimport', 'enabled')) {
+        if (self::hasKeys()) {
             array_push(
                 $daemons,
                 INSTALLDIR
-                . '/plugins/TwitterBridge/daemons/twitterstatusfetcher.php'
+                . '/plugins/TwitterBridge/daemons/synctwitterfriends.php'
             );
+            if (common_config('twitterimport', 'enabled')) {
+                array_push(
+                    $daemons,
+                    INSTALLDIR
+                    . '/plugins/TwitterBridge/daemons/twitterstatusfetcher.php'
+                    );
+            }
         }
 
         return true;
@@ -232,7 +266,9 @@ class TwitterBridgePlugin extends Plugin
      */
     function onEndInitializeQueueManager($manager)
     {
-        $manager->connect('twitter', 'TwitterQueueHandler');
+        if (self::hasKeys()) {
+            $manager->connect('twitter', 'TwitterQueueHandler');
+        }
         return true;
     }
 
index ba45b533dc9b50fdf4a72075948dadeba14693cd..93f6aadd1e01e087628512c77bee9be9577d6d22 100644 (file)
@@ -22,7 +22,7 @@
  * @category  Integration
  * @package   StatusNet
  * @author    Zach Copley <zach@status.net>
- * @copyright 2009 StatusNet, Inc.
+ * @copyright 2009-2010 StatusNet, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link      http://status.net/
  */
@@ -61,8 +61,23 @@ class TwitterOAuthClient extends OAuthClient
         $consumer_key    = common_config('twitter', 'consumer_key');
         $consumer_secret = common_config('twitter', 'consumer_secret');
 
-        parent::__construct($consumer_key, $consumer_secret,
-                            $oauth_token, $oauth_token_secret);
+        if (empty($consumer_key) && empty($consumer_secret)) {
+            $consumer_key = common_config(
+                'twitter',
+                'global_consumer_key'
+            );
+            $consumer_secret = common_config(
+                'twitter',
+                'global_consumer_secret'
+            );
+        }
+
+        parent::__construct(
+            $consumer_key,
+            $consumer_secret,
+            $oauth_token,
+            $oauth_token_secret
+        );
     }
 
     // XXX: the following two functions are to support the horrible hack