forked from GNUsocial/gnu-social
- Make Twitter bridge work with unqueuemanager
- Add README
This commit is contained in:
parent
109a54c4f0
commit
7539e26951
@ -48,11 +48,6 @@ class UnQueueManager
|
|||||||
jabber_public_notice($notice);
|
jabber_public_notice($notice);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'twitter':
|
|
||||||
if ($this->_isLocal($notice)) {
|
|
||||||
broadcast_twitter($notice);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'facebook':
|
case 'facebook':
|
||||||
if ($this->_isLocal($notice)) {
|
if ($this->_isLocal($notice)) {
|
||||||
require_once INSTALLDIR . '/lib/facebookutil.php';
|
require_once INSTALLDIR . '/lib/facebookutil.php';
|
||||||
|
86
plugins/TwitterBridge/README
Normal file
86
plugins/TwitterBridge/README
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
This Twitter "bridge" plugin allows you to integrate your StatusNet
|
||||||
|
instance with Twitter. Installing it will allow your users to:
|
||||||
|
|
||||||
|
- automatically post notices to thier Twitter accounts
|
||||||
|
- automatically subscribe to other Twitter users who are also using
|
||||||
|
your StatusNet install, if possible (requires running a daemon)
|
||||||
|
- import their Twitter friends' tweets (requires running a daemon)
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
To enable the plugin, add the following to your config.php:
|
||||||
|
|
||||||
|
require_once(INSTALLDIR . '/plugins/TwitterBridge/TwitterBridgePlugin.php');
|
||||||
|
$tb = new TwitterBridgePlugin();
|
||||||
|
|
||||||
|
OAuth is used to to access protected resources on Twitter (as opposed to
|
||||||
|
HTTP Basic Auth)*. To use Twitter bridging you will need to register
|
||||||
|
your instance of StatusNet as an application on Twitter
|
||||||
|
(http://twitter.com/apps), and update the following variables in your
|
||||||
|
config.php with the consumer key and secret Twitter generates for you:
|
||||||
|
|
||||||
|
$config['twitter']['consumer_key'] = 'YOURKEY';
|
||||||
|
$config['twitter']['consumer_secret'] = 'YOURSECRET';
|
||||||
|
|
||||||
|
When registering your application with Twitter set the type to "Browser"
|
||||||
|
and your Callback URL to:
|
||||||
|
|
||||||
|
http://example.org/mublog/twitter/authorization
|
||||||
|
|
||||||
|
The default access type should be, "Read & Write".
|
||||||
|
|
||||||
|
* Note: The plugin will still push notices to Twitter for users who
|
||||||
|
have previously setup the Twitter bridge using their Twitter name and
|
||||||
|
password under an older versions of StatusNet, but all new Twitter
|
||||||
|
bridge connections will use OAuth.
|
||||||
|
|
||||||
|
Deamons
|
||||||
|
-------
|
||||||
|
|
||||||
|
For friend syncing and importing notices running two additional daemon
|
||||||
|
scripts is necessary (synctwitterfriends.php and
|
||||||
|
twitterstatusfetcher.php).
|
||||||
|
|
||||||
|
In the daemons subidrectory of the plugin are three scripts:
|
||||||
|
|
||||||
|
* Twitter Friends Syncing (daemons/synctwitterfriends.php)
|
||||||
|
|
||||||
|
Users may set a flag in their settings ("Subscribe to my Twitter friends
|
||||||
|
here" under the Twitter tab) to have StatusNet attempt to locate and
|
||||||
|
subscribe to "friends" (people they "follow") on Twitter who also have
|
||||||
|
accounts on your StatusNet system, and who have previously set up a link
|
||||||
|
for automatically posting notices to Twitter.
|
||||||
|
|
||||||
|
The plugin will try to start this daemon when you run
|
||||||
|
scripts/startdaemons.sh.
|
||||||
|
|
||||||
|
* Importing statuses from Twitter (daemons/twitterstatusfetcher.php)
|
||||||
|
|
||||||
|
To allow your users to import their friends' Twitter statuses, you will
|
||||||
|
need to enable the bidirectional Twitter bridge in your config.php:
|
||||||
|
|
||||||
|
$config['twitterimport']['enabled'] = true;
|
||||||
|
|
||||||
|
The plugin will then start the TwitterStatusFetcher daemon along with the
|
||||||
|
other daemons when you run scripts/startdaemons.sh.
|
||||||
|
|
||||||
|
Additionally, you will want to set the integration source variable,
|
||||||
|
which will keep notices posted to Twitter via StatusNet from looping
|
||||||
|
back. The integration source should be set to the name of your
|
||||||
|
application, exactly as you specified it on the settings page for your
|
||||||
|
StatusNet application on Twitter, e.g.:
|
||||||
|
|
||||||
|
$config['integration']['source'] = 'YourApp';
|
||||||
|
|
||||||
|
* TwitterQueueHandler (daemons/twitterqueuehandler.php)
|
||||||
|
|
||||||
|
This script sends queued notices to Twitter for user who have opted to
|
||||||
|
set up Twitter bridging.
|
||||||
|
|
||||||
|
It's not strictly necessary to run this queue handler, and sites that
|
||||||
|
haven't enabled queuing are still able to push notices to Twitter, but
|
||||||
|
for larger sites and sites that wish to improve performance, this
|
||||||
|
script allows notices to be sent "offline" via a separate process.
|
||||||
|
|
||||||
|
The plugin will start this script when you run scripts/startdaemons.sh.
|
@ -29,6 +29,8 @@ if (!defined('STATUSNET')) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plugin for sending and importing Twitter statuses
|
* Plugin for sending and importing Twitter statuses
|
||||||
*
|
*
|
||||||
@ -104,11 +106,11 @@ class TwitterBridgePlugin extends Plugin
|
|||||||
switch ($cls) {
|
switch ($cls) {
|
||||||
case 'TwittersettingsAction':
|
case 'TwittersettingsAction':
|
||||||
case 'TwitterauthorizationAction':
|
case 'TwitterauthorizationAction':
|
||||||
include_once INSTALLDIR.'/plugins/TwitterBridge/' .
|
include_once INSTALLDIR . '/plugins/TwitterBridge/' .
|
||||||
strtolower(mb_substr($cls, 0, -6)) . '.php';
|
strtolower(mb_substr($cls, 0, -6)) . '.php';
|
||||||
return false;
|
return false;
|
||||||
case 'TwitterOAuthClient':
|
case 'TwitterOAuthClient':
|
||||||
include_once INSTALLDIR.'/plugins/TwitterBridge/twitteroauthclient.php';
|
include_once INSTALLDIR . '/plugins/TwitterBridge/twitteroauthclient.php';
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
return true;
|
return true;
|
||||||
@ -118,17 +120,47 @@ class TwitterBridgePlugin extends Plugin
|
|||||||
/**
|
/**
|
||||||
* Add a Twitter queue item for each notice
|
* Add a Twitter queue item for each notice
|
||||||
*
|
*
|
||||||
* @param Notice $notice the notice
|
* @param Notice $notice the notice
|
||||||
* @param array $transports the list of transports (queues)
|
* @param array &$transports the list of transports (queues)
|
||||||
*
|
*
|
||||||
* @return boolean hook return
|
* @return boolean hook return
|
||||||
*/
|
*/
|
||||||
function onStartEnqueueNotice($notice, $transports)
|
function onStartEnqueueNotice($notice, &$transports)
|
||||||
{
|
{
|
||||||
array_push($transports, 'twitter');
|
array_push($transports, 'twitter');
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* broadcast the message when not using queuehandler
|
||||||
|
*
|
||||||
|
* @param Notice &$notice the notice
|
||||||
|
* @param array $queue destination queue
|
||||||
|
*
|
||||||
|
* @return boolean hook return
|
||||||
|
*/
|
||||||
|
function onUnqueueHandleNotice(&$notice, $queue)
|
||||||
|
{
|
||||||
|
if (($queue == 'twitter') && ($this->_isLocal($notice))) {
|
||||||
|
broadcast_twitter($notice);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the notice was locally created
|
||||||
|
*
|
||||||
|
* @param Notice $notice
|
||||||
|
*
|
||||||
|
* @return boolean locality
|
||||||
|
*/
|
||||||
|
function _isLocal($notice)
|
||||||
|
{
|
||||||
|
return ($notice->is_local == Notice::LOCAL_PUBLIC ||
|
||||||
|
$notice->is_local == Notice::LOCAL_NONPUBLIC);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add Twitter bridge daemons to the list of daemons to start
|
* Add Twitter bridge daemons to the list of daemons to start
|
||||||
*
|
*
|
||||||
|
@ -152,7 +152,7 @@ class TwittersettingsAction extends ConnectSettingsAction
|
|||||||
false);
|
false);
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
|
|
||||||
if (common_config('twitterbridge','enabled')) {
|
if (common_config('twitterimport','enabled')) {
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->checkbox('noticerecv',
|
$this->checkbox('noticerecv',
|
||||||
_('Import my Friends Timeline.'),
|
_('Import my Friends Timeline.'),
|
||||||
|
Loading…
Reference in New Issue
Block a user