forked from GNUsocial/gnu-social
Merge remote-tracking branch 'origin/1.0.x' into 1.0.x
This commit is contained in:
commit
f6430ea131
5
README
5
README
@ -226,7 +226,6 @@ and the URLs are listed here for your convenience.
|
||||
- Facebook library. Used for the Facebook application.
|
||||
- PEAR Validate is used for URL and email validation.
|
||||
- Console_GetOpt for parsing command-line options.
|
||||
- libomb. a library for implementing OpenMicroBlogging 0.1, the
|
||||
predecessor to OStatus.
|
||||
- HTTP_Request2, a library for making HTTP requests.
|
||||
- PEAR Net_URL2 is an HTTP_Request2 dependency.
|
||||
@ -484,7 +483,7 @@ On a default installation, your site can broadcast messages using
|
||||
XMPP. Users won't be able to post messages using XMPP unless you've
|
||||
got the XMPP daemon running. See 'Queues and daemons' below for how
|
||||
to set that up. Also, once you have a sizable number of users, sending
|
||||
a lot of SMS, OMB, and XMPP messages whenever someone posts a message
|
||||
a lot of SMS, OStatus, and XMPP messages whenever someone posts a message
|
||||
can really slow down your site; it may cause posting to timeout.
|
||||
|
||||
NOTE: stream_select(), a crucial function for network programming, is
|
||||
@ -1111,7 +1110,7 @@ public
|
||||
For configuring the public stream.
|
||||
|
||||
localonly: If set to true, only messages posted by users of this
|
||||
service (rather than other services, filtered through OMB)
|
||||
service (rather than other services, filtered through OStatus)
|
||||
are shown in the public stream. Default true.
|
||||
blacklist: An array of IDs of users to hide from the public stream.
|
||||
Useful if you have someone making excessive Twitterfeed posts
|
||||
|
@ -111,18 +111,6 @@ class AddpeopletagAction extends Action
|
||||
return false;
|
||||
}
|
||||
|
||||
// OMB 0.1 doesn't have a mechanism for local-server-
|
||||
// originated tag.
|
||||
|
||||
$omb01 = Remote_profile::staticGet('id', $tagged_id);
|
||||
|
||||
if (!empty($omb01)) {
|
||||
// TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list.
|
||||
$this->clientError(_('You cannot list an OMB 0.1 '.
|
||||
'remote profile with this action.'));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
* @category API
|
||||
* @package StatusNet
|
||||
* @author Zach Copley <zach@status.net>
|
||||
* @copyright 2010 StatusNet, Inc.
|
||||
* @copyright 2010-2011 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/
|
||||
*/
|
||||
@ -35,7 +35,7 @@ require_once INSTALLDIR . '/lib/apioauth.php';
|
||||
require_once INSTALLDIR . '/lib/info.php';
|
||||
|
||||
/**
|
||||
* Authorize an Oputh request token
|
||||
* Authorize an OAuth request token
|
||||
*
|
||||
* @category API
|
||||
* @package StatusNet
|
||||
|
@ -32,7 +32,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||
}
|
||||
|
||||
require_once INSTALLDIR . '/lib/applicationlist.php';
|
||||
require_once INSTALLDIR . '/lib/apioauthstore.php';
|
||||
require_once INSTALLDIR . '/lib/statusnetoauthstore.php';
|
||||
|
||||
/**
|
||||
* Show connected OAuth applications
|
||||
|
@ -112,18 +112,6 @@ class RemovepeopletagAction extends Action
|
||||
return false;
|
||||
}
|
||||
|
||||
// OMB 0.1 doesn't have a mechanism for local-server-
|
||||
// originated tag.
|
||||
|
||||
$omb01 = Remote_profile::staticGet('id', $tagged_id);
|
||||
|
||||
if (!empty($omb01)) {
|
||||
// TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile.
|
||||
$this->clientError(_('You cannot (un)list an OMB 0.1 '.
|
||||
'remote profile with this action.'));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -214,7 +214,7 @@ class ShownoticeAction extends Action
|
||||
if ($this->boolean('ajax')) {
|
||||
$this->showAjax();
|
||||
} else {
|
||||
if ($this->notice->is_local == Notice::REMOTE_OMB) {
|
||||
if ($this->notice->is_local == Notice::REMOTE) {
|
||||
if (!empty($this->notice->url)) {
|
||||
$target = $this->notice->url;
|
||||
} else if (!empty($this->notice->uri) && preg_match('/^https?:/', $this->notice->uri)) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008-2010, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011, StatusNet, Inc.
|
||||
*
|
||||
* Subscription action.
|
||||
*
|
||||
@ -111,18 +111,6 @@ class SubscribeAction extends Action
|
||||
return false;
|
||||
}
|
||||
|
||||
// OMB 0.1 doesn't have a mechanism for local-server-
|
||||
// originated subscription.
|
||||
|
||||
$omb01 = Remote_profile::staticGet('id', $other_id);
|
||||
|
||||
if (!empty($omb01)) {
|
||||
// TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile.
|
||||
$this->clientError(_('You cannot subscribe to an OMB 0.1'.
|
||||
' remote profile with this action.'));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011 StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -86,7 +86,7 @@ class Notice extends Memcached_DataObject
|
||||
|
||||
/* Notice types */
|
||||
const LOCAL_PUBLIC = 1;
|
||||
const REMOTE_OMB = 0;
|
||||
const REMOTE = 0;
|
||||
const LOCAL_NONPUBLIC = -1;
|
||||
const GATEWAY = -2;
|
||||
|
||||
@ -229,11 +229,11 @@ class Notice extends Memcached_DataObject
|
||||
* string 'created' timestamp of notice; defaults to now
|
||||
* int 'is_local' source/gateway ID, one of:
|
||||
* Notice::LOCAL_PUBLIC - Local, ok to appear in public timeline
|
||||
* Notice::REMOTE_OMB - Sent from a remote OMB service;
|
||||
* Notice::REMOTE - Sent from a remote service;
|
||||
* hide from public timeline but show in
|
||||
* local "and friends" timelines
|
||||
* Notice::LOCAL_NONPUBLIC - Local, but hide from public timeline
|
||||
* Notice::GATEWAY - From another non-OMB service;
|
||||
* Notice::GATEWAY - From another non-OStatus service;
|
||||
* will not appear in public views
|
||||
* float 'lat' decimal latitude for geolocation
|
||||
* float 'lon' decimal longitude for geolocation
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -1240,13 +1240,8 @@ class Profile extends Memcached_DataObject
|
||||
|
||||
if (!empty($user)) {
|
||||
$uri = $user->uri;
|
||||
} else {
|
||||
// return OMB profile if any
|
||||
$remote = Remote_profile::staticGet('id', $this->id);
|
||||
if (!empty($remote)) {
|
||||
$uri = $remote->uri;
|
||||
}
|
||||
}
|
||||
|
||||
Event::handle('EndGetProfileUri', array($this, &$uri));
|
||||
}
|
||||
|
||||
@ -1291,11 +1286,6 @@ class Profile extends Memcached_DataObject
|
||||
$user = User::staticGet('uri', $uri);
|
||||
if (!empty($user)) {
|
||||
$profile = $user->getProfile();
|
||||
} else {
|
||||
$remote_profile = Remote_profile::staticGet('uri', $uri);
|
||||
if (!empty($remote_profile)) {
|
||||
$profile = Profile::staticGet('id', $remote_profile->profile_id);
|
||||
}
|
||||
}
|
||||
Event::handle('EndGetProfileFromURI', array($uri, $profile));
|
||||
}
|
||||
|
@ -198,29 +198,6 @@ class Subscription extends Memcached_DataObject
|
||||
|
||||
assert(!empty($sub));
|
||||
|
||||
// @todo: move this block to EndSubscribe handler for
|
||||
// OMB plugin when it exists.
|
||||
|
||||
if (!empty($sub->token)) {
|
||||
|
||||
$token = new Token();
|
||||
|
||||
$token->tok = $sub->token;
|
||||
|
||||
if ($token->find(true)) {
|
||||
|
||||
$result = $token->delete();
|
||||
|
||||
if (!$result) {
|
||||
common_log_db_error($token, 'DELETE', __FILE__);
|
||||
// TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
|
||||
throw new Exception(_('Could not delete subscription OMB token.'));
|
||||
}
|
||||
} else {
|
||||
common_log(LOG_ERR, "Couldn't find credentials with token {$token->tok}");
|
||||
}
|
||||
}
|
||||
|
||||
$result = $sub->delete();
|
||||
|
||||
if (!$result) {
|
||||
|
@ -31,7 +31,7 @@ if (!defined('STATUSNET')) {
|
||||
exit(1);
|
||||
}
|
||||
require_once INSTALLDIR . '/lib/apiaction.php';
|
||||
require_once INSTALLDIR . '/lib/apioauthstore.php';
|
||||
require_once INSTALLDIR . '/lib/statusnetoauthstore.php';
|
||||
|
||||
/**
|
||||
* Base action for API OAuth enpoints. Clean up the
|
||||
|
@ -360,7 +360,7 @@ abstract class MicroAppPlugin extends Plugin
|
||||
|
||||
$options = array('uri' => $object->id,
|
||||
'url' => $object->link,
|
||||
'is_local' => Notice::REMOTE_OMB,
|
||||
'is_local' => Notice::REMOTE,
|
||||
'source' => 'ostatus');
|
||||
|
||||
// $actor is an ostatus_profile
|
||||
@ -418,7 +418,7 @@ abstract class MicroAppPlugin extends Plugin
|
||||
|
||||
$options = array('uri' => $object->id,
|
||||
'url' => $object->link,
|
||||
'is_local' => Notice::REMOTE_OMB,
|
||||
'is_local' => Notice::REMOTE,
|
||||
'source' => 'ostatus');
|
||||
|
||||
// $actor is an ostatus_profile
|
||||
|
@ -289,11 +289,10 @@ class ProfileListItem extends Widget
|
||||
$usf = new UnsubscribeForm($this->out, $this->profile);
|
||||
$usf->show();
|
||||
} else {
|
||||
// We can't initiate sub for a remote OMB profile.
|
||||
$remote = Remote_profile::staticGet('id', $this->profile->id);
|
||||
if (empty($remote)) {
|
||||
if (Event::handle('StartShowProfileListSubscribeButton', array($this))) {
|
||||
$sf = new SubscribeForm($this->out, $this->profile);
|
||||
$sf->show();
|
||||
Event::handle('EndShowProfileListSubscribeButton', array($this));
|
||||
}
|
||||
}
|
||||
$this->out->elementEnd('li');
|
||||
|
@ -233,7 +233,6 @@ abstract class QueueManager extends IoManager
|
||||
|
||||
if (Event::handle('StartInitializeQueueManager', array($this))) {
|
||||
$this->connect('distrib', 'DistribQueueHandler');
|
||||
$this->connect('omb', 'OmbQueueHandler');
|
||||
$this->connect('ping', 'PingQueueHandler');
|
||||
if (common_config('sms', 'enabled')) {
|
||||
$this->connect('sms', 'SmsQueueHandler');
|
||||
@ -246,9 +245,6 @@ abstract class QueueManager extends IoManager
|
||||
$this->connect('acctmove', 'AccountMover');
|
||||
$this->connect('actmove', 'ActivityMover');
|
||||
|
||||
// Broadcasting profile updates to OMB remote subscribers
|
||||
$this->connect('profile', 'ProfileQueueHandler');
|
||||
|
||||
// For compat with old plugins not registering their own handlers.
|
||||
$this->connect('plugin', 'PluginQueueHandler');
|
||||
}
|
||||
|
@ -113,8 +113,6 @@ class Router
|
||||
{
|
||||
var $m = null;
|
||||
static $inst = null;
|
||||
static $bare = array('requesttoken', 'accesstoken', 'userauthorization',
|
||||
'postnotice', 'updateprofile', 'finishremotesubscribe');
|
||||
|
||||
const REGEX_TAG = '[^\/]+'; // [\pL\pN_\-\.]{1,64} better if we can do unicode regexes
|
||||
|
||||
@ -257,15 +255,6 @@ class Router
|
||||
$m->connect('main/'.$c.'/:code', array('action' => $c));
|
||||
}
|
||||
|
||||
// exceptional
|
||||
|
||||
$m->connect('main/remote', array('action' => 'remotesubscribe'));
|
||||
$m->connect('main/remote?nickname=:nickname', array('action' => 'remotesubscribe'), array('nickname' => '[A-Za-z0-9_-]+'));
|
||||
|
||||
foreach (Router::$bare as $action) {
|
||||
$m->connect('index.php?action=' . $action, array('action' => $action));
|
||||
}
|
||||
|
||||
// settings
|
||||
|
||||
foreach (array('profile', 'avatar', 'password', 'im', 'oauthconnections',
|
||||
@ -896,8 +885,8 @@ class Router
|
||||
$nickname = User::singleUserNickname();
|
||||
|
||||
foreach (array('subscriptions', 'subscribers',
|
||||
'all', 'foaf', 'xrds',
|
||||
'replies', 'microsummary', 'hcard') as $a) {
|
||||
'all', 'foaf', 'replies',
|
||||
'microsummary', 'hcard') as $a) {
|
||||
$m->connect($a,
|
||||
array('action' => $a,
|
||||
'nickname' => $nickname));
|
||||
@ -964,8 +953,8 @@ class Router
|
||||
$m->connect('rsd.xml', array('action' => 'rsd'));
|
||||
|
||||
foreach (array('subscriptions', 'subscribers',
|
||||
'nudge', 'all', 'foaf', 'xrds',
|
||||
'replies', 'inbox', 'outbox', 'microsummary', 'hcard') as $a) {
|
||||
'nudge', 'all', 'foaf', 'replies',
|
||||
'inbox', 'outbox', 'microsummary', 'hcard') as $a) {
|
||||
$m->connect(':nickname/'.$a,
|
||||
array('action' => $a),
|
||||
array('nickname' => Nickname::DISPLAY_FMT));
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -19,10 +19,12 @@
|
||||
|
||||
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
|
||||
|
||||
require_once INSTALLDIR . '/lib/oauthstore.php';
|
||||
require_once 'OAuth.php';
|
||||
|
||||
// @todo FIXME: Class documentation missing.
|
||||
class ApiStatusNetOAuthDataStore extends StatusNetOAuthDataStore
|
||||
/**
|
||||
* @fixme class doc
|
||||
*/
|
||||
class ApiStatusNetOAuthDataStore extends OAuthDataStore
|
||||
{
|
||||
function lookup_consumer($consumerKey)
|
||||
{
|
||||
@ -410,4 +412,95 @@ class ApiStatusNetOAuthDataStore extends StatusNetOAuthDataStore
|
||||
return new OAuthToken($t->tok, $t->secret);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Authorize specified OAuth token
|
||||
*
|
||||
* Authorizes the authorization token specified by $token_key.
|
||||
* Throws exceptions in case of error.
|
||||
*
|
||||
* @param string $token_key The token to be authorized
|
||||
*
|
||||
* @access public
|
||||
**/
|
||||
public function authorize_token($token_key) {
|
||||
$rt = new Token();
|
||||
$rt->tok = $token_key;
|
||||
$rt->type = 0;
|
||||
$rt->state = 0;
|
||||
if (!$rt->find(true)) {
|
||||
throw new Exception('Tried to authorize unknown token');
|
||||
}
|
||||
$orig_rt = clone($rt);
|
||||
$rt->state = 1; # Authorized but not used
|
||||
if (!$rt->update($orig_rt)) {
|
||||
throw new Exception('Failed to authorize token');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* http://oauth.net/core/1.0/#nonce
|
||||
* "The Consumer SHALL then generate a Nonce value that is unique for
|
||||
* all requests with that timestamp."
|
||||
* XXX: It's not clear why the token is here
|
||||
*
|
||||
* @param type $consumer
|
||||
* @param type $token
|
||||
* @param type $nonce
|
||||
* @param type $timestamp
|
||||
* @return type
|
||||
*/
|
||||
function lookup_nonce($consumer, $token, $nonce, $timestamp)
|
||||
{
|
||||
$n = new Nonce();
|
||||
$n->consumer_key = $consumer->key;
|
||||
$n->ts = common_sql_date($timestamp);
|
||||
$n->nonce = $nonce;
|
||||
if ($n->find(true)) {
|
||||
return true;
|
||||
} else {
|
||||
$n->created = DB_DataObject_Cast::dateTime();
|
||||
$n->insert();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param type $consumer
|
||||
* @param type $token_type
|
||||
* @param type $token_key
|
||||
* @return OAuthToken
|
||||
*/
|
||||
function lookup_token($consumer, $token_type, $token_key)
|
||||
{
|
||||
$t = new Token();
|
||||
if (!is_null($consumer)) {
|
||||
$t->consumer_key = $consumer->key;
|
||||
}
|
||||
$t->tok = $token_key;
|
||||
$t->type = ($token_type == 'access') ? 1 : 0;
|
||||
if ($t->find(true)) {
|
||||
return new OAuthToken($t->tok, $t->secret);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param type $token_key
|
||||
* @return Token
|
||||
*/
|
||||
function getTokenByKey($token_key)
|
||||
{
|
||||
$t = new Token();
|
||||
$t->tok = $token_key;
|
||||
if ($t->find(true)) {
|
||||
return $t;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
26
lib/util.php
26
lib/util.php
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -1501,7 +1501,7 @@ function common_enqueue_notice($notice)
|
||||
}
|
||||
|
||||
/**
|
||||
* Broadcast profile updates to OMB and other remote subscribers.
|
||||
* Broadcast profile updates to remote subscribers.
|
||||
*
|
||||
* Since this may be slow with a lot of subscribers or bad remote sites,
|
||||
* this is run through the background queues if possible.
|
||||
@ -2008,20 +2008,20 @@ function common_user_property($property)
|
||||
|
||||
function common_profile_uri($profile)
|
||||
{
|
||||
if (!$profile) {
|
||||
return null;
|
||||
}
|
||||
$user = User::staticGet($profile->id);
|
||||
if ($user) {
|
||||
return $user->uri;
|
||||
$uri = null;
|
||||
|
||||
if (!empty($profile)) {
|
||||
if (Event::handle('StartCommonProfileURI', array($profile, &$uri))) {
|
||||
$user = User::staticGet($profile->id);
|
||||
if (!empty($user)) {
|
||||
$uri = $user->uri;
|
||||
}
|
||||
Event::handle('EndCommonProfileURI', array($profile, &$uri));
|
||||
}
|
||||
}
|
||||
|
||||
$remote = Remote_profile::staticGet($profile->id);
|
||||
if ($remote) {
|
||||
return $remote->uri;
|
||||
}
|
||||
// XXX: this is a very bad profile!
|
||||
return null;
|
||||
return $uri;
|
||||
}
|
||||
|
||||
function common_canonical_sms($sms)
|
||||
|
@ -322,7 +322,7 @@ class BookmarkPlugin extends MicroAppPlugin
|
||||
|
||||
$options = array('uri' => $bookmark->id,
|
||||
'url' => $bookmark->link,
|
||||
'is_local' => Notice::REMOTE_OMB,
|
||||
'is_local' => Notice::REMOTE,
|
||||
'source' => 'ostatus');
|
||||
|
||||
return self::_postBookmark($author->localProfile(), $activity, $options);
|
||||
|
393
plugins/OMB/OMBPlugin.php
Normal file
393
plugins/OMB/OMBPlugin.php
Normal file
@ -0,0 +1,393 @@
|
||||
<?php
|
||||
/**
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2011, StatusNet, Inc.
|
||||
*
|
||||
* OpenMicroBlogging plugin - add OpenMicroBloggin 0.1 support to
|
||||
* StatusNet.
|
||||
*
|
||||
* Note: the OpenMicroBlogging protocol has been deprecated in favor of OStatus.
|
||||
* This plugin is provided for backwards compatibility and experimentation.
|
||||
*
|
||||
* Please see the README and the OStatus plugin.
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @category Sample
|
||||
* @package StatusNet
|
||||
* @author Zach Copley
|
||||
* @copyright 2011 StatusNet, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
|
||||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib/');
|
||||
|
||||
if (!defined('STATUSNET')) {
|
||||
// This check helps protect against security problems;
|
||||
// your code file can't be executed directly from the web.
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* OMB plugin main class
|
||||
*
|
||||
* @category Integration
|
||||
* @package StatusNet
|
||||
* @author Zach Copley <zach@status.net>
|
||||
* @copyright 2011 StatusNet, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
|
||||
* @link http://status.net/
|
||||
*/
|
||||
class OMBPlugin extends Plugin
|
||||
{
|
||||
/**
|
||||
* Load related modules when needed
|
||||
*
|
||||
* @param string $cls Name of the class to be loaded
|
||||
*
|
||||
* @return boolean hook value; true means continue processing, false means stop.
|
||||
*/
|
||||
function onAutoload($cls)
|
||||
{
|
||||
$dir = dirname(__FILE__);
|
||||
|
||||
switch ($cls)
|
||||
{
|
||||
case 'Requesttokenaction':
|
||||
case 'Accesstokenaction':
|
||||
case 'Userauthorizationaction':
|
||||
case 'Postnoticeaction':
|
||||
case 'Updateprofileaction':
|
||||
case 'Finishremotesubscribeaction':
|
||||
case 'Remotesubscribeaction':
|
||||
case 'XrdsAction':
|
||||
include_once $dir . '/action/' . strtolower(mb_substr($cls, 0, -6)) . '.php';
|
||||
return false;
|
||||
break;
|
||||
case 'OmbQueueHandler':
|
||||
case 'ProfileQueueHandler':
|
||||
include_once $dir . '/lib/' . strtolower($cls) . '.php';
|
||||
return false;
|
||||
case 'OMBOAuthDataStore':
|
||||
include_once $dir . '/lib/omboauthstore.php';
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Map URLs to actions
|
||||
*
|
||||
* @param Net_URL_Mapper $m path-to-action mapper
|
||||
*
|
||||
* @return boolean hook value; true means continue processing, false means stop.
|
||||
*/
|
||||
function onRouterInitialized($m)
|
||||
{
|
||||
$bare = array(
|
||||
'requesttoken',
|
||||
'accesstoken',
|
||||
'userauthorization',
|
||||
'postnotice',
|
||||
'updateprofile',
|
||||
'finishremotesubscribe'
|
||||
);
|
||||
|
||||
foreach ($bare as $action) {
|
||||
$m->connect(
|
||||
'index.php?action=' . $action, array('action' => $action)
|
||||
);
|
||||
}
|
||||
|
||||
// exceptional
|
||||
|
||||
$m->connect('main/remote', array('action' => 'remotesubscribe'));
|
||||
$m->connect(
|
||||
'main/remote?nickname=:nickname',
|
||||
array('action' => 'remotesubscribe'),
|
||||
array('nickname' => '[A-Za-z0-9_-]+')
|
||||
);
|
||||
|
||||
$m->connect(
|
||||
'xrds',
|
||||
array('action' => 'xrds', 'nickname' => $nickname)
|
||||
);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Put saved notices into the queue for OMB distribution
|
||||
*
|
||||
* @param Notice $notice the notice to broadcast
|
||||
* @param array $transports queuehandler's list of transports
|
||||
* @return boolean true if queing was successful
|
||||
*/
|
||||
function onStartEnqueueNotice($notice, &$transports)
|
||||
{
|
||||
if ($notice->isLocal()) {
|
||||
if ($notice->inScope(null)) {
|
||||
array_unshift($transports, 'omb');
|
||||
common_log(
|
||||
LOG_INFO, "Notice {$notice->id} queued for OMB processing"
|
||||
);
|
||||
} else {
|
||||
// Note: We don't do privacy-controlled OMB updates.
|
||||
common_log(
|
||||
LOG_NOTICE,
|
||||
"Not queueing notice {$notice->id} for OMB because of "
|
||||
. "privacy; scope = {$notice->scope}",
|
||||
__FILE__
|
||||
);
|
||||
}
|
||||
} else {
|
||||
common_log(
|
||||
LOG_NOTICE,
|
||||
"Not queueing notice {$notice->id} for OMB because it's not "
|
||||
. "local.",
|
||||
__FILE__
|
||||
);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up queue handlers for outgoing OMB pushes
|
||||
*
|
||||
* @param QueueManager $qm
|
||||
* @return boolean hook return
|
||||
*/
|
||||
function onEndInitializeQueueManager(QueueManager $qm)
|
||||
{
|
||||
// Prepare outgoing distributions after notice save.
|
||||
$qm->connect('omb', 'OmbQueueHandler');
|
||||
$qm->connect('profile', 'ProfileQueueHandler');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return OMB remote profile, if any
|
||||
*
|
||||
* @param Profile $profile
|
||||
* @param string $uri
|
||||
* @return boolen false if there's a remote profile
|
||||
*/
|
||||
function onStartGetProfileUri($profile, &$uri)
|
||||
{
|
||||
$remote = Remote_profile::staticGet('id', $this->id);
|
||||
if (!empty($remote)) {
|
||||
$uri = $remote->uri;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* We can't initiate subscriptions for a remote OMB profile; don't show
|
||||
* subscribe button
|
||||
*
|
||||
* @param type $action
|
||||
*/
|
||||
function onStartShowProfileListSubscribeButton($action)
|
||||
{
|
||||
$remote = Remote_profile::staticGet('id', $action->profile->id);
|
||||
if (empty($remote)) {
|
||||
false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for illegal subscription attempts
|
||||
*
|
||||
* @param User $user subscriber
|
||||
* @param Profile $other subscribee
|
||||
* @return hook return value
|
||||
*/
|
||||
function onStartSubscribe($profile, $other)
|
||||
{
|
||||
// OMB 0.1 doesn't have a mechanism for local-server-
|
||||
// originated subscription.
|
||||
|
||||
$omb01 = Remote_profile::staticGet('id', $other_id);
|
||||
|
||||
if (!empty($omb01)) {
|
||||
// TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile.
|
||||
throw new ClientException(
|
||||
_m(
|
||||
'You cannot subscribe to an OMB 0.1 '
|
||||
. 'remote profile with this action.'
|
||||
)
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Throw an error if someone tries to tag a remote profile
|
||||
*
|
||||
* @param Profile $tagger_profile profile of the tagger
|
||||
* @param Profile $tagged_profile profile of the taggee
|
||||
* @param string $tag
|
||||
*
|
||||
* @return true
|
||||
*/
|
||||
function onStartTagProfile($tagger_profile, $tagged_profile, $tag)
|
||||
{
|
||||
// OMB 0.1 doesn't have a mechanism for local-server-
|
||||
// originated tag.
|
||||
|
||||
$omb01 = Remote_profile::staticGet('id', $tagged_profile->id);
|
||||
|
||||
if (!empty($omb01)) {
|
||||
// TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list.
|
||||
$this->clientError(
|
||||
_m(
|
||||
'You cannot list an OMB 0.1 '
|
||||
.'remote profile with this action.')
|
||||
);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check to make sure we're not tryng to untag an OMB profile
|
||||
*
|
||||
* // XXX: Should this ever happen?
|
||||
*
|
||||
* @param Profile_tag $ptag the profile tag
|
||||
*/
|
||||
function onUntagProfile($ptag)
|
||||
{
|
||||
// OMB 0.1 doesn't have a mechanism for local-server-
|
||||
// originated tag.
|
||||
|
||||
$omb01 = Remote_profile::staticGet('id', $ptag->tagged);
|
||||
|
||||
if (!empty($omb01)) {
|
||||
// TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile.
|
||||
$this->clientError(
|
||||
_m(
|
||||
'You cannot (un)list an OMB 0.1 '
|
||||
. 'remote profile with this action.')
|
||||
);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove old OMB subscription tokens
|
||||
*
|
||||
* @param User $user subscriber
|
||||
* @param Profile $other subscribee
|
||||
* @return hook return value
|
||||
*/
|
||||
function onEndUnsubscribe($profile, $other)
|
||||
{
|
||||
$sub = Subscription::pkeyGet(
|
||||
array('subscriber' => $subscriber->id, 'subscribed' => $other->id)
|
||||
);
|
||||
|
||||
if (!empty($sub->token)) {
|
||||
|
||||
$token = new Token();
|
||||
|
||||
$token->tok = $sub->token;
|
||||
|
||||
if ($token->find(true)) {
|
||||
|
||||
$result = $token->delete();
|
||||
|
||||
if (!$result) {
|
||||
common_log_db_error($token, 'DELETE', __FILE__);
|
||||
// TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
|
||||
throw new Exception(
|
||||
_m('Could not delete subscription OMB token.')
|
||||
);
|
||||
}
|
||||
} else {
|
||||
common_log(
|
||||
LOG_ERR,
|
||||
"Couldn't find credentials with token {$token->tok}",
|
||||
__FILE__
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Search for an OMB remote profile by URI
|
||||
*
|
||||
* @param string $uri remote profile URI
|
||||
* @param Profile $profile the profile to set
|
||||
* @return boolean hook value
|
||||
*/
|
||||
function onStartGetProfileFromURI($uri, &$profile)
|
||||
{
|
||||
$remote_profile = Remote_profile::staticGet('uri', $uri);
|
||||
if (!empty($remote_profile)) {
|
||||
$profile = Profile::staticGet('id', $remote_profile->profile_id);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return OMB remote profiles as well as regular profiles
|
||||
* in helper
|
||||
*
|
||||
* @param type $profile
|
||||
* @param type $uri
|
||||
*/
|
||||
function onStartCommonProfileURI($profile, &$uri)
|
||||
{
|
||||
$remote = Remote_profile::staticGet($profile->id);
|
||||
if ($remote) {
|
||||
$uri = $remote->uri;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Plugin version info
|
||||
*
|
||||
* @param array $versions
|
||||
* @return boolean hook value
|
||||
*/
|
||||
function onPluginVersion(&$versions)
|
||||
{
|
||||
$versions[] = array(
|
||||
'name' => 'OpenMicroBlogging',
|
||||
'version' => STATUSNET_VERSION,
|
||||
'author' => 'Zach Copley',
|
||||
'homepage' => 'http://status.net/wiki/Plugin:Sample',
|
||||
'rawdescription' =>
|
||||
// TRANS: Plugin description.
|
||||
_m('A sample plugin to show basics of development for new hackers.')
|
||||
);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
31
plugins/OMB/README
Normal file
31
plugins/OMB/README
Normal file
@ -0,0 +1,31 @@
|
||||
OMB (OpenMicroBlogging) plugin
|
||||
==============================
|
||||
|
||||
This plugin encapsulates OpenMicroBlogging 0.1 functionality. OMB was the
|
||||
original federation protocol for StatusNet, but has been deprecated
|
||||
in favor of OStatus (see the OStatus plugin). This plugin is provided for
|
||||
backward-compatibility with older sites, and for posterity.
|
||||
|
||||
External libraries
|
||||
------------------
|
||||
|
||||
This is provided with the plugin, but you may wish to use a newer version of
|
||||
the library, if and when it becomes available.
|
||||
|
||||
- libomb. a library for implementing OpenMicroBlogging 0.1
|
||||
http://gitorious.org/libomb
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
[TODO]
|
||||
|
||||
Offline Processing
|
||||
------------------
|
||||
|
||||
Note: once you have a sizable number of users, sending OMB messages whenever
|
||||
someone posts a message can really slow down your site; it may cause posting
|
||||
to timeout. You may wish to enable queuing and handle OMB communication
|
||||
offline. See the "queues and daemons" section of the main StatusNet README.
|
||||
|
@ -12,7 +12,7 @@
|
||||
* @link http://status.net/
|
||||
*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -32,8 +32,8 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once INSTALLDIR.'/extlib/libomb/service_provider.php';
|
||||
require_once INSTALLDIR.'/lib/omb.php';
|
||||
require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php';
|
||||
require_once dirname(__FILE__) . '/../lib/omb.php';
|
||||
|
||||
/**
|
||||
* Access token class
|
@ -12,7 +12,7 @@
|
||||
* @link http://status.net/
|
||||
*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -30,8 +30,8 @@
|
||||
|
||||
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
|
||||
|
||||
require_once INSTALLDIR.'/extlib/libomb/service_consumer.php';
|
||||
require_once INSTALLDIR.'/lib/omb.php';
|
||||
require_once dirname(__FILE__) . '/../extlib/libomb/service_consumer.php';
|
||||
require_once dirname(__FILE__) . '/../lib/omb.php';
|
||||
|
||||
/**
|
||||
* Handler for remote subscription finish callback
|
@ -12,7 +12,7 @@
|
||||
* @link http://status.net/
|
||||
*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -30,8 +30,8 @@
|
||||
|
||||
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
|
||||
|
||||
require_once INSTALLDIR.'/lib/omb.php';
|
||||
require_once INSTALLDIR.'/extlib/libomb/service_provider.php';
|
||||
require_once dirname(__FILE__) . '/../lib/omb.php';
|
||||
require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php';
|
||||
|
||||
/**
|
||||
* Handler for postnotice action
|
@ -12,7 +12,7 @@
|
||||
* @link http://status.net/
|
||||
*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011 StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -30,9 +30,9 @@
|
||||
|
||||
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
|
||||
|
||||
require_once INSTALLDIR.'/lib/omb.php';
|
||||
require_once INSTALLDIR.'/extlib/libomb/service_consumer.php';
|
||||
require_once INSTALLDIR.'/extlib/libomb/profile.php';
|
||||
require_once dirname(__FILE__) . '/../lib/omb.php';
|
||||
require_once dirname(__FILE__) . '/../extlib/libomb/service_consumer.php';
|
||||
require_once dirname(__FILE__) . '/../extlib/libomb/profile.php';
|
||||
|
||||
/**
|
||||
* Handler for remote subscription
|
@ -12,7 +12,7 @@
|
||||
* @link http://status.net/
|
||||
*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -32,8 +32,8 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once INSTALLDIR.'/lib/omb.php';
|
||||
require_once INSTALLDIR.'/extlib/libomb/service_provider.php';
|
||||
require_once dirname(__FILE__) . '/../lib/omb.php';
|
||||
require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php';
|
||||
|
||||
/**
|
||||
* Request token action class.
|
@ -12,7 +12,7 @@
|
||||
* @link http://status.net/
|
||||
*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -30,8 +30,8 @@
|
||||
|
||||
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
|
||||
|
||||
require_once INSTALLDIR.'/lib/omb.php';
|
||||
require_once INSTALLDIR.'/extlib/libomb/service_provider.php';
|
||||
require_once dirname(__FILE__) . '/../lib/omb.php';
|
||||
require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php';
|
||||
|
||||
/**
|
||||
* Handle an updateprofile action
|
@ -12,7 +12,7 @@
|
||||
* @link http://status.net/
|
||||
*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -30,9 +30,9 @@
|
||||
|
||||
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
|
||||
|
||||
require_once INSTALLDIR.'/lib/omb.php';
|
||||
require_once INSTALLDIR.'/extlib/libomb/service_provider.php';
|
||||
require_once INSTALLDIR.'/extlib/libomb/profile.php';
|
||||
require_once dirname(__FILE__) . '/../lib/omb.php';
|
||||
require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php';
|
||||
require_once dirname(__FILE__) . '/../extlib/libomb/profile.php';
|
||||
define('TIMESTAMP_THRESHOLD', 300);
|
||||
|
||||
// @todo FIXME: Missing documentation.
|
@ -12,7 +12,7 @@
|
||||
* @link http://status.net/
|
||||
*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -32,10 +32,10 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once INSTALLDIR.'/lib/omb.php';
|
||||
require_once INSTALLDIR.'/extlib/libomb/service_provider.php';
|
||||
require_once INSTALLDIR.'/extlib/libomb/xrds_mapper.php';
|
||||
require_once INSTALLDIR.'/lib/xrdsoutputter.php';
|
||||
require_once dirname(__FILE__) . '/../lib/omb.php';
|
||||
require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php';
|
||||
require_once dirname(__FILE__) . '/../extlib/libomb/xrds_mapper.php';
|
||||
require_once dirname(__FILE__) . '/../lib/xrdsoutputter.php';
|
||||
|
||||
/**
|
||||
* XRDS for OpenMicroBlogging
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -19,13 +19,14 @@
|
||||
|
||||
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
|
||||
|
||||
require_once INSTALLDIR.'/lib/oauthstore.php';
|
||||
require_once 'OAuth.php';
|
||||
require_once 'libomb/constants.php';
|
||||
require_once 'libomb/service_consumer.php';
|
||||
require_once 'libomb/notice.php';
|
||||
require_once 'libomb/profile.php';
|
||||
require_once 'Auth/Yadis/Yadis.php';
|
||||
$dir = dirname(__FILE__);
|
||||
|
||||
require_once $dir . '/omboauthstore.php';
|
||||
require_once $dir . '/../extlib/libomb/constants.php';
|
||||
require_once $dir . '/../extlib/libomb/service_consumer.php';
|
||||
require_once $dir . '/../extlib/libomb/notice.php';
|
||||
require_once $dir . '/../extlib/libomb/profile.php';
|
||||
require_once INSTALLDIR . '/extlib/Auth/Yadis/Yadis.php';
|
||||
|
||||
function omb_oauth_consumer()
|
||||
{
|
||||
@ -48,7 +49,7 @@ function omb_oauth_datastore()
|
||||
{
|
||||
static $store = null;
|
||||
if (is_null($store)) {
|
||||
$store = new StatusNetOAuthDataStore();
|
||||
$store = new OMBOAuthDataStore();
|
||||
}
|
||||
return $store;
|
||||
}
|
||||
@ -64,7 +65,6 @@ function omb_hmac_sha1()
|
||||
|
||||
function omb_broadcast_notice($notice)
|
||||
{
|
||||
|
||||
try {
|
||||
$omb_notice = notice_to_omb_notice($notice);
|
||||
} catch (Exception $e) {
|
||||
@ -233,4 +233,4 @@ function notice_to_omb_notice($notice)
|
||||
|
||||
return $omb_notice;
|
||||
}
|
||||
?>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011 StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -19,10 +19,10 @@
|
||||
|
||||
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
|
||||
|
||||
require_once 'libomb/datastore.php';
|
||||
require_once dirname(__FILE__) . '/../extlib/libomb/datastore.php';
|
||||
|
||||
// @todo FIXME: Class documentation missing.
|
||||
class StatusNetOAuthDataStore extends OAuthDataStore
|
||||
class OMBOAuthDataStore extends OAuthDataStore
|
||||
{
|
||||
// We keep a record of who's contacted us
|
||||
function lookup_consumer($consumer_key)
|
||||
@ -55,17 +55,6 @@ class StatusNetOAuthDataStore extends OAuthDataStore
|
||||
}
|
||||
}
|
||||
|
||||
function getTokenByKey($token_key)
|
||||
{
|
||||
$t = new Token();
|
||||
$t->tok = $token_key;
|
||||
if ($t->find(true)) {
|
||||
return $t;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// http://oauth.net/core/1.0/#nonce
|
||||
// "The Consumer SHALL then generate a Nonce value that is unique for
|
||||
// all requests with that timestamp."
|
||||
@ -234,7 +223,7 @@ class StatusNetOAuthDataStore extends OAuthDataStore
|
||||
$profile = Profile::staticGet('id', $remote->id);
|
||||
if (!$profile) throw new Exception('No profile for remote user');
|
||||
|
||||
require_once INSTALLDIR.'/lib/omb.php';
|
||||
require_once dirname(__FILE__) . '/omb.php';
|
||||
return profile_to_omb_profile($identifier_uri, $profile);
|
||||
}
|
||||
|
||||
@ -376,7 +365,7 @@ class StatusNetOAuthDataStore extends OAuthDataStore
|
||||
$notice = Notice::saveNew($author->id,
|
||||
$omb_notice->getContent(),
|
||||
'omb',
|
||||
array('is_local' => Notice::REMOTE_OMB,
|
||||
array('is_local' => Notice::REMOTE,
|
||||
'uri' => $omb_notice->getIdentifierURI()));
|
||||
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||
* Copyright (C) 2008-2011, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -42,7 +42,7 @@ class OmbQueueHandler extends QueueHandler
|
||||
common_log(LOG_DEBUG, 'Ignoring remote notice ' . $notice->id);
|
||||
return true;
|
||||
} else {
|
||||
require_once(INSTALLDIR.'/lib/omb.php');
|
||||
require_once(dirname(__FILE__) . '/omb.php');
|
||||
omb_broadcast_notice($notice);
|
||||
return true;
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2010, StatusNet, Inc.
|
||||
* Copyright (C) 2010-2011, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -38,7 +38,7 @@ class ProfileQueueHandler extends QueueHandler
|
||||
}
|
||||
|
||||
if (Event::handle('StartBroadcastProfile', array($profile))) {
|
||||
require_once(INSTALLDIR.'/lib/omb.php');
|
||||
require_once(dirname(__FILE__) . '/omb.php');
|
||||
try {
|
||||
omb_broadcast_profile($profile);
|
||||
} catch (Exception $e) {
|
@ -591,7 +591,7 @@ class Ostatus_profile extends Managed_DataObject
|
||||
}
|
||||
}
|
||||
|
||||
$options = array('is_local' => Notice::REMOTE_OMB,
|
||||
$options = array('is_local' => Notice::REMOTE,
|
||||
'url' => $sourceUrl,
|
||||
'uri' => $sourceUri,
|
||||
'rendered' => $rendered,
|
||||
|
@ -75,13 +75,9 @@ Administration panel
|
||||
|
||||
As of StatusNet 0.9.0 there is a new administration panel that allows
|
||||
you to configure Twitter bridge settings within StatusNet itself,
|
||||
instead of having to specify them manually in your config.php. To enable
|
||||
the administration panel, you will need to add it to the list of active
|
||||
administration panels. You can do this via your config.php. E.g.:
|
||||
instead of having to specify them manually in your config.php.
|
||||
|
||||
$config['admin']['panels'][] = 'twitter';
|
||||
|
||||
And to access it, you'll need to use a user with the "administrator"
|
||||
To access it, you'll need to use a user with the "administrator"
|
||||
role (see: scripts/userrole.php).
|
||||
|
||||
Sign in with Twitter
|
||||
|
@ -287,6 +287,18 @@ class TwitterBridgePlugin extends Plugin
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* If the plugin's installed, this should be accessible to admins
|
||||
*/
|
||||
function onAdminPanelCheck($name, &$isOK)
|
||||
{
|
||||
if ($name == 'twitter') {
|
||||
$isOK = true;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a Twitter tab to the admin panel
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user