forked from GNUsocial/gnu-social
		
	Merge remote-tracking branch 'origin/1.0.x' into 1.0.x
This commit is contained in:
		
							
								
								
									
										5
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								README
									
									
									
									
									
								
							@@ -226,7 +226,6 @@ and the URLs are listed here for your convenience.
 | 
				
			|||||||
- Facebook library. Used for the Facebook application.
 | 
					- Facebook library. Used for the Facebook application.
 | 
				
			||||||
- PEAR Validate is used for URL and email validation.
 | 
					- PEAR Validate is used for URL and email validation.
 | 
				
			||||||
- Console_GetOpt for parsing command-line options.
 | 
					- Console_GetOpt for parsing command-line options.
 | 
				
			||||||
- libomb. a library for implementing OpenMicroBlogging 0.1, the
 | 
					 | 
				
			||||||
  predecessor to OStatus.
 | 
					  predecessor to OStatus.
 | 
				
			||||||
- HTTP_Request2, a library for making HTTP requests.
 | 
					- HTTP_Request2, a library for making HTTP requests.
 | 
				
			||||||
- PEAR Net_URL2 is an HTTP_Request2 dependency.
 | 
					- 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
 | 
					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
 | 
					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
 | 
					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.
 | 
					can really slow down your site; it may cause posting to timeout.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NOTE: stream_select(), a crucial function for network programming, is
 | 
					NOTE: stream_select(), a crucial function for network programming, is
 | 
				
			||||||
@@ -1111,7 +1110,7 @@ public
 | 
				
			|||||||
For configuring the public stream.
 | 
					For configuring the public stream.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
localonly: If set to true, only messages posted by users of this
 | 
					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.
 | 
					    are shown in the public stream. Default true.
 | 
				
			||||||
blacklist: An array of IDs of users to hide from the public stream.
 | 
					blacklist: An array of IDs of users to hide from the public stream.
 | 
				
			||||||
    Useful if you have someone making excessive Twitterfeed posts
 | 
					    Useful if you have someone making excessive Twitterfeed posts
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -111,18 +111,6 @@ class AddpeopletagAction extends Action
 | 
				
			|||||||
            return false;
 | 
					            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;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@
 | 
				
			|||||||
 * @category  API
 | 
					 * @category  API
 | 
				
			||||||
 * @package   StatusNet
 | 
					 * @package   StatusNet
 | 
				
			||||||
 * @author    Zach Copley <zach@status.net>
 | 
					 * @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
 | 
					 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 | 
				
			||||||
 * @link      http://status.net/
 | 
					 * @link      http://status.net/
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@@ -35,7 +35,7 @@ require_once INSTALLDIR . '/lib/apioauth.php';
 | 
				
			|||||||
require_once INSTALLDIR . '/lib/info.php';
 | 
					require_once INSTALLDIR . '/lib/info.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Authorize an Oputh request token
 | 
					 * Authorize an OAuth request token
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @category API
 | 
					 * @category API
 | 
				
			||||||
 * @package  StatusNet
 | 
					 * @package  StatusNet
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once INSTALLDIR . '/lib/applicationlist.php';
 | 
					require_once INSTALLDIR . '/lib/applicationlist.php';
 | 
				
			||||||
require_once INSTALLDIR . '/lib/apioauthstore.php';
 | 
					require_once INSTALLDIR . '/lib/statusnetoauthstore.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Show connected OAuth applications
 | 
					 * Show connected OAuth applications
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -112,18 +112,6 @@ class RemovepeopletagAction extends Action
 | 
				
			|||||||
            return false;
 | 
					            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;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -214,7 +214,7 @@ class ShownoticeAction extends Action
 | 
				
			|||||||
        if ($this->boolean('ajax')) {
 | 
					        if ($this->boolean('ajax')) {
 | 
				
			||||||
            $this->showAjax();
 | 
					            $this->showAjax();
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            if ($this->notice->is_local == Notice::REMOTE_OMB) {
 | 
					            if ($this->notice->is_local == Notice::REMOTE) {
 | 
				
			||||||
                if (!empty($this->notice->url)) {
 | 
					                if (!empty($this->notice->url)) {
 | 
				
			||||||
                    $target = $this->notice->url;
 | 
					                    $target = $this->notice->url;
 | 
				
			||||||
                } else if (!empty($this->notice->uri) && preg_match('/^https?:/', $this->notice->uri)) {
 | 
					                } else if (!empty($this->notice->uri) && preg_match('/^https?:/', $this->notice->uri)) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * StatusNet - the distributed open-source microblogging tool
 | 
				
			||||||
 * Copyright (C) 2008-2010, StatusNet, Inc.
 | 
					 * Copyright (C) 2008-2011, StatusNet, Inc.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Subscription action.
 | 
					 * Subscription action.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
@@ -111,18 +111,6 @@ class SubscribeAction extends Action
 | 
				
			|||||||
            return false;
 | 
					            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;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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 */
 | 
					    /* Notice types */
 | 
				
			||||||
    const LOCAL_PUBLIC    =  1;
 | 
					    const LOCAL_PUBLIC    =  1;
 | 
				
			||||||
    const REMOTE_OMB      =  0;
 | 
					    const REMOTE          =  0;
 | 
				
			||||||
    const LOCAL_NONPUBLIC = -1;
 | 
					    const LOCAL_NONPUBLIC = -1;
 | 
				
			||||||
    const GATEWAY         = -2;
 | 
					    const GATEWAY         = -2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -229,11 +229,11 @@ class Notice extends Memcached_DataObject
 | 
				
			|||||||
     *              string 'created' timestamp of notice; defaults to now
 | 
					     *              string 'created' timestamp of notice; defaults to now
 | 
				
			||||||
     *              int 'is_local' source/gateway ID, one of:
 | 
					     *              int 'is_local' source/gateway ID, one of:
 | 
				
			||||||
     *                  Notice::LOCAL_PUBLIC    - Local, ok to appear in public timeline
 | 
					     *                  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
 | 
					     *                                            hide from public timeline but show in
 | 
				
			||||||
     *                                            local "and friends" timelines
 | 
					     *                                            local "and friends" timelines
 | 
				
			||||||
     *                  Notice::LOCAL_NONPUBLIC - Local, but hide from public timeline
 | 
					     *                  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
 | 
					     *                                            will not appear in public views
 | 
				
			||||||
     *              float 'lat' decimal latitude for geolocation
 | 
					     *              float 'lat' decimal latitude for geolocation
 | 
				
			||||||
     *              float 'lon' decimal longitude for geolocation
 | 
					     *              float 'lon' decimal longitude for geolocation
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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)) {
 | 
					            if (!empty($user)) {
 | 
				
			||||||
                $uri = $user->uri;
 | 
					                $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));
 | 
					            Event::handle('EndGetProfileUri', array($this, &$uri));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1291,11 +1286,6 @@ class Profile extends Memcached_DataObject
 | 
				
			|||||||
            $user = User::staticGet('uri', $uri);
 | 
					            $user = User::staticGet('uri', $uri);
 | 
				
			||||||
            if (!empty($user)) {
 | 
					            if (!empty($user)) {
 | 
				
			||||||
                $profile = $user->getProfile();
 | 
					                $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));
 | 
					            Event::handle('EndGetProfileFromURI', array($uri, $profile));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -198,29 +198,6 @@ class Subscription extends Memcached_DataObject
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            assert(!empty($sub));
 | 
					            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();
 | 
					            $result = $sub->delete();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (!$result) {
 | 
					            if (!$result) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,7 @@ if (!defined('STATUSNET')) {
 | 
				
			|||||||
    exit(1);
 | 
					    exit(1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
require_once INSTALLDIR . '/lib/apiaction.php';
 | 
					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
 | 
					 * Base action for API OAuth enpoints. Clean up the
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -360,7 +360,7 @@ abstract class MicroAppPlugin extends Plugin
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            $options = array('uri' => $object->id,
 | 
					            $options = array('uri' => $object->id,
 | 
				
			||||||
                             'url' => $object->link,
 | 
					                             'url' => $object->link,
 | 
				
			||||||
                             'is_local' => Notice::REMOTE_OMB,
 | 
					                             'is_local' => Notice::REMOTE,
 | 
				
			||||||
                             'source' => 'ostatus');
 | 
					                             'source' => 'ostatus');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // $actor is an ostatus_profile
 | 
					            // $actor is an ostatus_profile
 | 
				
			||||||
@@ -418,7 +418,7 @@ abstract class MicroAppPlugin extends Plugin
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            $options = array('uri' => $object->id,
 | 
					            $options = array('uri' => $object->id,
 | 
				
			||||||
                             'url' => $object->link,
 | 
					                             'url' => $object->link,
 | 
				
			||||||
                             'is_local' => Notice::REMOTE_OMB,
 | 
					                             'is_local' => Notice::REMOTE,
 | 
				
			||||||
                             'source' => 'ostatus');
 | 
					                             'source' => 'ostatus');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // $actor is an ostatus_profile
 | 
					            // $actor is an ostatus_profile
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -289,11 +289,10 @@ class ProfileListItem extends Widget
 | 
				
			|||||||
                $usf = new UnsubscribeForm($this->out, $this->profile);
 | 
					                $usf = new UnsubscribeForm($this->out, $this->profile);
 | 
				
			||||||
                $usf->show();
 | 
					                $usf->show();
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                // We can't initiate sub for a remote OMB profile.
 | 
					                if (Event::handle('StartShowProfileListSubscribeButton', array($this))) {
 | 
				
			||||||
                $remote = Remote_profile::staticGet('id', $this->profile->id);
 | 
					 | 
				
			||||||
                if (empty($remote)) {
 | 
					 | 
				
			||||||
                    $sf = new SubscribeForm($this->out, $this->profile);
 | 
					                    $sf = new SubscribeForm($this->out, $this->profile);
 | 
				
			||||||
                    $sf->show();
 | 
					                    $sf->show();
 | 
				
			||||||
 | 
					                    Event::handle('EndShowProfileListSubscribeButton', array($this));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            $this->out->elementEnd('li');
 | 
					            $this->out->elementEnd('li');
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -233,7 +233,6 @@ abstract class QueueManager extends IoManager
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if (Event::handle('StartInitializeQueueManager', array($this))) {
 | 
					        if (Event::handle('StartInitializeQueueManager', array($this))) {
 | 
				
			||||||
            $this->connect('distrib', 'DistribQueueHandler');
 | 
					            $this->connect('distrib', 'DistribQueueHandler');
 | 
				
			||||||
            $this->connect('omb', 'OmbQueueHandler');
 | 
					 | 
				
			||||||
            $this->connect('ping', 'PingQueueHandler');
 | 
					            $this->connect('ping', 'PingQueueHandler');
 | 
				
			||||||
            if (common_config('sms', 'enabled')) {
 | 
					            if (common_config('sms', 'enabled')) {
 | 
				
			||||||
                $this->connect('sms', 'SmsQueueHandler');
 | 
					                $this->connect('sms', 'SmsQueueHandler');
 | 
				
			||||||
@@ -246,9 +245,6 @@ abstract class QueueManager extends IoManager
 | 
				
			|||||||
            $this->connect('acctmove', 'AccountMover');
 | 
					            $this->connect('acctmove', 'AccountMover');
 | 
				
			||||||
            $this->connect('actmove', 'ActivityMover');
 | 
					            $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.
 | 
					            // For compat with old plugins not registering their own handlers.
 | 
				
			||||||
            $this->connect('plugin', 'PluginQueueHandler');
 | 
					            $this->connect('plugin', 'PluginQueueHandler');
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -113,8 +113,6 @@ class Router
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    var $m = null;
 | 
					    var $m = null;
 | 
				
			||||||
    static $inst = 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
 | 
					    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));
 | 
					                $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
 | 
					            // settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            foreach (array('profile', 'avatar', 'password', 'im', 'oauthconnections',
 | 
					            foreach (array('profile', 'avatar', 'password', 'im', 'oauthconnections',
 | 
				
			||||||
@@ -896,8 +885,8 @@ class Router
 | 
				
			|||||||
                $nickname = User::singleUserNickname();
 | 
					                $nickname = User::singleUserNickname();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                foreach (array('subscriptions', 'subscribers',
 | 
					                foreach (array('subscriptions', 'subscribers',
 | 
				
			||||||
                               'all', 'foaf', 'xrds',
 | 
					                               'all', 'foaf', 'replies',
 | 
				
			||||||
                               'replies', 'microsummary', 'hcard') as $a) {
 | 
					                               'microsummary', 'hcard') as $a) {
 | 
				
			||||||
                    $m->connect($a,
 | 
					                    $m->connect($a,
 | 
				
			||||||
                                array('action' => $a,
 | 
					                                array('action' => $a,
 | 
				
			||||||
                                      'nickname' => $nickname));
 | 
					                                      'nickname' => $nickname));
 | 
				
			||||||
@@ -964,8 +953,8 @@ class Router
 | 
				
			|||||||
                $m->connect('rsd.xml', array('action' => 'rsd'));
 | 
					                $m->connect('rsd.xml', array('action' => 'rsd'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                foreach (array('subscriptions', 'subscribers',
 | 
					                foreach (array('subscriptions', 'subscribers',
 | 
				
			||||||
                               'nudge', 'all', 'foaf', 'xrds',
 | 
					                               'nudge', 'all', 'foaf', 'replies',
 | 
				
			||||||
                               'replies', 'inbox', 'outbox', 'microsummary', 'hcard') as $a) {
 | 
					                               'inbox', 'outbox', 'microsummary', 'hcard') as $a) {
 | 
				
			||||||
                    $m->connect(':nickname/'.$a,
 | 
					                    $m->connect(':nickname/'.$a,
 | 
				
			||||||
                                array('action' => $a),
 | 
					                                array('action' => $a),
 | 
				
			||||||
                                array('nickname' => Nickname::DISPLAY_FMT));
 | 
					                                array('nickname' => Nickname::DISPLAY_FMT));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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); }
 | 
					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)
 | 
					    function lookup_consumer($consumerKey)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -410,4 +412,95 @@ class ApiStatusNetOAuthDataStore extends StatusNetOAuthDataStore
 | 
				
			|||||||
            return new OAuthToken($t->tok, $t->secret);
 | 
					            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;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								lib/util.php
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								lib/util.php
									
									
									
									
									
								
							@@ -1,7 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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,
 | 
					 * Since this may be slow with a lot of subscribers or bad remote sites,
 | 
				
			||||||
 * this is run through the background queues if possible.
 | 
					 * this is run through the background queues if possible.
 | 
				
			||||||
@@ -2008,20 +2008,20 @@ function common_user_property($property)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function common_profile_uri($profile)
 | 
					function common_profile_uri($profile)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (!$profile) {
 | 
					    $uri = null;
 | 
				
			||||||
        return null;
 | 
					
 | 
				
			||||||
    }
 | 
					    if (!empty($profile)) {
 | 
				
			||||||
 | 
					        if (Event::handle('StartCommonProfileURI', array($profile, &$uri))) {
 | 
				
			||||||
            $user = User::staticGet($profile->id);
 | 
					            $user = User::staticGet($profile->id);
 | 
				
			||||||
    if ($user) {
 | 
					            if (!empty($user)) {
 | 
				
			||||||
        return $user->uri;
 | 
					                $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!
 | 
					    // XXX: this is a very bad profile!
 | 
				
			||||||
    return null;
 | 
					    return $uri;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function common_canonical_sms($sms)
 | 
					function common_canonical_sms($sms)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -322,7 +322,7 @@ class BookmarkPlugin extends MicroAppPlugin
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        $options = array('uri' => $bookmark->id,
 | 
					        $options = array('uri' => $bookmark->id,
 | 
				
			||||||
                         'url' => $bookmark->link,
 | 
					                         'url' => $bookmark->link,
 | 
				
			||||||
                         'is_local' => Notice::REMOTE_OMB,
 | 
					                         'is_local' => Notice::REMOTE,
 | 
				
			||||||
                         'source' => 'ostatus');
 | 
					                         'source' => 'ostatus');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return self::_postBookmark($author->localProfile(), $activity, $options);
 | 
					        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/
 | 
					 * @link     http://status.net/
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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);
 | 
					    exit(1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once INSTALLDIR.'/extlib/libomb/service_provider.php';
 | 
					require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php';
 | 
				
			||||||
require_once INSTALLDIR.'/lib/omb.php';
 | 
					require_once dirname(__FILE__) . '/../lib/omb.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Access token class
 | 
					 * Access token class
 | 
				
			||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
 * @link     http://status.net/
 | 
					 * @link     http://status.net/
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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); }
 | 
					if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once INSTALLDIR.'/extlib/libomb/service_consumer.php';
 | 
					require_once dirname(__FILE__) . '/../extlib/libomb/service_consumer.php';
 | 
				
			||||||
require_once INSTALLDIR.'/lib/omb.php';
 | 
					require_once dirname(__FILE__) . '/../lib/omb.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Handler for remote subscription finish callback
 | 
					 * Handler for remote subscription finish callback
 | 
				
			||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
 * @link     http://status.net/
 | 
					 * @link     http://status.net/
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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); }
 | 
					if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once INSTALLDIR.'/lib/omb.php';
 | 
					require_once dirname(__FILE__) . '/../lib/omb.php';
 | 
				
			||||||
require_once INSTALLDIR.'/extlib/libomb/service_provider.php';
 | 
					require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Handler for postnotice action
 | 
					 * Handler for postnotice action
 | 
				
			||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
 * @link     http://status.net/
 | 
					 * @link     http://status.net/
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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); }
 | 
					if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once INSTALLDIR.'/lib/omb.php';
 | 
					require_once dirname(__FILE__) . '/../lib/omb.php';
 | 
				
			||||||
require_once INSTALLDIR.'/extlib/libomb/service_consumer.php';
 | 
					require_once dirname(__FILE__) . '/../extlib/libomb/service_consumer.php';
 | 
				
			||||||
require_once INSTALLDIR.'/extlib/libomb/profile.php';
 | 
					require_once dirname(__FILE__) . '/../extlib/libomb/profile.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Handler for remote subscription
 | 
					 * Handler for remote subscription
 | 
				
			||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
 * @link     http://status.net/
 | 
					 * @link     http://status.net/
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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);
 | 
					    exit(1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once INSTALLDIR.'/lib/omb.php';
 | 
					require_once dirname(__FILE__) . '/../lib/omb.php';
 | 
				
			||||||
require_once INSTALLDIR.'/extlib/libomb/service_provider.php';
 | 
					require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Request token action class.
 | 
					 * Request token action class.
 | 
				
			||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
 * @link     http://status.net/
 | 
					 * @link     http://status.net/
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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); }
 | 
					if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once INSTALLDIR.'/lib/omb.php';
 | 
					require_once dirname(__FILE__) . '/../lib/omb.php';
 | 
				
			||||||
require_once INSTALLDIR.'/extlib/libomb/service_provider.php';
 | 
					require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Handle an updateprofile action
 | 
					 * Handle an updateprofile action
 | 
				
			||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
 * @link     http://status.net/
 | 
					 * @link     http://status.net/
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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); }
 | 
					if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once INSTALLDIR.'/lib/omb.php';
 | 
					require_once dirname(__FILE__) . '/../lib/omb.php';
 | 
				
			||||||
require_once INSTALLDIR.'/extlib/libomb/service_provider.php';
 | 
					require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php';
 | 
				
			||||||
require_once INSTALLDIR.'/extlib/libomb/profile.php';
 | 
					require_once dirname(__FILE__) . '/../extlib/libomb/profile.php';
 | 
				
			||||||
define('TIMESTAMP_THRESHOLD', 300);
 | 
					define('TIMESTAMP_THRESHOLD', 300);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// @todo FIXME: Missing documentation.
 | 
					// @todo FIXME: Missing documentation.
 | 
				
			||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
 * @link     http://status.net/
 | 
					 * @link     http://status.net/
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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);
 | 
					    exit(1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once INSTALLDIR.'/lib/omb.php';
 | 
					require_once dirname(__FILE__) . '/../lib/omb.php';
 | 
				
			||||||
require_once INSTALLDIR.'/extlib/libomb/service_provider.php';
 | 
					require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php';
 | 
				
			||||||
require_once INSTALLDIR.'/extlib/libomb/xrds_mapper.php';
 | 
					require_once dirname(__FILE__) . '/../extlib/libomb/xrds_mapper.php';
 | 
				
			||||||
require_once INSTALLDIR.'/lib/xrdsoutputter.php';
 | 
					require_once dirname(__FILE__) . '/../lib/xrdsoutputter.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * XRDS for OpenMicroBlogging
 | 
					 * XRDS for OpenMicroBlogging
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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); }
 | 
					if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once INSTALLDIR.'/lib/oauthstore.php';
 | 
					$dir = dirname(__FILE__);
 | 
				
			||||||
require_once 'OAuth.php';
 | 
					
 | 
				
			||||||
require_once 'libomb/constants.php';
 | 
					require_once $dir . '/omboauthstore.php';
 | 
				
			||||||
require_once 'libomb/service_consumer.php';
 | 
					require_once $dir . '/../extlib/libomb/constants.php';
 | 
				
			||||||
require_once 'libomb/notice.php';
 | 
					require_once $dir . '/../extlib/libomb/service_consumer.php';
 | 
				
			||||||
require_once 'libomb/profile.php';
 | 
					require_once $dir . '/../extlib/libomb/notice.php';
 | 
				
			||||||
require_once 'Auth/Yadis/Yadis.php';
 | 
					require_once $dir . '/../extlib/libomb/profile.php';
 | 
				
			||||||
 | 
					require_once INSTALLDIR . '/extlib/Auth/Yadis/Yadis.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function omb_oauth_consumer()
 | 
					function omb_oauth_consumer()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -48,7 +49,7 @@ function omb_oauth_datastore()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    static $store = null;
 | 
					    static $store = null;
 | 
				
			||||||
    if (is_null($store)) {
 | 
					    if (is_null($store)) {
 | 
				
			||||||
        $store = new StatusNetOAuthDataStore();
 | 
					        $store = new OMBOAuthDataStore();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return $store;
 | 
					    return $store;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -64,7 +65,6 @@ function omb_hmac_sha1()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function omb_broadcast_notice($notice)
 | 
					function omb_broadcast_notice($notice)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
        $omb_notice = notice_to_omb_notice($notice);
 | 
					        $omb_notice = notice_to_omb_notice($notice);
 | 
				
			||||||
    } catch (Exception $e) {
 | 
					    } catch (Exception $e) {
 | 
				
			||||||
@@ -233,4 +233,4 @@ function notice_to_omb_notice($notice)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    return $omb_notice;
 | 
					    return $omb_notice;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
?>
 | 
					
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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); }
 | 
					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.
 | 
					// @todo FIXME: Class documentation missing.
 | 
				
			||||||
class StatusNetOAuthDataStore extends OAuthDataStore
 | 
					class OMBOAuthDataStore extends OAuthDataStore
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // We keep a record of who's contacted us
 | 
					    // We keep a record of who's contacted us
 | 
				
			||||||
    function lookup_consumer($consumer_key)
 | 
					    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
 | 
					    // http://oauth.net/core/1.0/#nonce
 | 
				
			||||||
    // "The Consumer SHALL then generate a Nonce value that is unique for
 | 
					    // "The Consumer SHALL then generate a Nonce value that is unique for
 | 
				
			||||||
    // all requests with that timestamp."
 | 
					    // all requests with that timestamp."
 | 
				
			||||||
@@ -234,7 +223,7 @@ class StatusNetOAuthDataStore extends OAuthDataStore
 | 
				
			|||||||
        $profile = Profile::staticGet('id', $remote->id);
 | 
					        $profile = Profile::staticGet('id', $remote->id);
 | 
				
			||||||
        if (!$profile) throw new Exception('No profile for remote user');
 | 
					        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);
 | 
					        return profile_to_omb_profile($identifier_uri, $profile);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -376,7 +365,7 @@ class StatusNetOAuthDataStore extends OAuthDataStore
 | 
				
			|||||||
        $notice = Notice::saveNew($author->id,
 | 
					        $notice = Notice::saveNew($author->id,
 | 
				
			||||||
                                  $omb_notice->getContent(),
 | 
					                                  $omb_notice->getContent(),
 | 
				
			||||||
                                  'omb',
 | 
					                                  'omb',
 | 
				
			||||||
                                  array('is_local' => Notice::REMOTE_OMB,
 | 
					                                  array('is_local' => Notice::REMOTE,
 | 
				
			||||||
                                        'uri' => $omb_notice->getIdentifierURI()));
 | 
					                                        'uri' => $omb_notice->getIdentifierURI()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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);
 | 
					            common_log(LOG_DEBUG, 'Ignoring remote notice ' . $notice->id);
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            require_once(INSTALLDIR.'/lib/omb.php');
 | 
					            require_once(dirname(__FILE__) . '/omb.php');
 | 
				
			||||||
            omb_broadcast_notice($notice);
 | 
					            omb_broadcast_notice($notice);
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * StatusNet - the distributed open-source microblogging tool
 | 
					 * 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
 | 
					 * 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
 | 
					 * 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))) {
 | 
					        if (Event::handle('StartBroadcastProfile', array($profile))) {
 | 
				
			||||||
            require_once(INSTALLDIR.'/lib/omb.php');
 | 
					            require_once(dirname(__FILE__) . '/omb.php');
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                omb_broadcast_profile($profile);
 | 
					                omb_broadcast_profile($profile);
 | 
				
			||||||
            } catch (Exception $e) {
 | 
					            } 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,
 | 
					                        'url' => $sourceUrl,
 | 
				
			||||||
                        'uri' => $sourceUri,
 | 
					                        'uri' => $sourceUri,
 | 
				
			||||||
                        'rendered' => $rendered,
 | 
					                        'rendered' => $rendered,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,13 +75,9 @@ Administration panel
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
As of StatusNet 0.9.0 there is a new administration panel that allows
 | 
					As of StatusNet 0.9.0 there is a new administration panel that allows
 | 
				
			||||||
you to configure Twitter bridge settings within StatusNet itself,
 | 
					you to configure Twitter bridge settings within StatusNet itself,
 | 
				
			||||||
instead of having to specify them manually in your config.php.  To enable
 | 
					instead of having to specify them manually in your config.php.
 | 
				
			||||||
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.:
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $config['admin']['panels'][] = 'twitter';
 | 
					To access it, you'll need to use a user with the "administrator"
 | 
				
			||||||
 | 
					 | 
				
			||||||
And to access it, you'll need to use a user with the "administrator"
 | 
					 | 
				
			||||||
role (see: scripts/userrole.php).
 | 
					role (see: scripts/userrole.php).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Sign in with Twitter
 | 
					Sign in with Twitter
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -287,6 +287,18 @@ class TwitterBridgePlugin extends Plugin
 | 
				
			|||||||
        return true;
 | 
					        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
 | 
					     * Add a Twitter tab to the admin panel
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user