From fcba540a14fb227e5d455d12ff2d7311b25e7c2e Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Mon, 28 Oct 2013 16:22:09 +0100 Subject: [PATCH] Removed legacy OMB. Use OStatus for remote profiles. --- actions/apiaccountupdateprofile.php | 2 - actions/apiaccountupdateprofileimage.php | 2 - actions/avatarsettings.php | 1 - actions/profilesettings.php | 1 - actions/subscribe.php | 3 +- classes/Profile.php | 2 +- classes/Remote_profile.php | 75 --- db/core.php | 1 - lib/command.php | 6 - lib/default.php | 2 - lib/installer.php | 18 +- lib/snapshot.php | 1 - lib/util.php | 15 - .../actions/profiledetailsettings.php | 1 - plugins/OMB/OMBPlugin.php | 381 ------------- plugins/OMB/README | 30 -- plugins/OMB/actions/accesstoken.php | 69 --- plugins/OMB/actions/finishremotesubscribe.php | 158 ------ plugins/OMB/actions/postnotice.php | 109 ---- plugins/OMB/actions/remotesubscribe.php | 224 -------- plugins/OMB/actions/requesttoken.php | 78 --- plugins/OMB/actions/updateprofile.php | 94 ---- plugins/OMB/actions/userauthorization.php | 371 ------------- plugins/OMB/actions/xrds.php | 139 ----- .../extlib/libomb/base_url_xrds_mapper.php | 72 --- plugins/OMB/extlib/libomb/constants.php | 59 -- plugins/OMB/extlib/libomb/datastore.php | 212 -------- plugins/OMB/extlib/libomb/helper.php | 104 ---- .../libomb/invalidparameterexception.php | 52 -- .../extlib/libomb/invalidyadisexception.php | 37 -- plugins/OMB/extlib/libomb/notice.php | 294 ---------- plugins/OMB/extlib/libomb/omb_yadis_xrds.php | 209 -------- .../OMB/extlib/libomb/plain_xrds_writer.php | 150 ------ plugins/OMB/extlib/libomb/profile.php | 345 ------------ .../extlib/libomb/remoteserviceexception.php | 73 --- .../OMB/extlib/libomb/service_consumer.php | 461 ---------------- .../OMB/extlib/libomb/service_provider.php | 461 ---------------- .../libomb/unsupportedserviceexception.php | 36 -- plugins/OMB/extlib/libomb/xrds_mapper.php | 47 -- plugins/OMB/extlib/libomb/xrds_writer.php | 46 -- plugins/OMB/lib/omb.php | 235 -------- plugins/OMB/lib/omboauthdatastore.php | 502 ------------------ plugins/OMB/lib/ombqueuehandler.php | 56 -- plugins/OMB/lib/profilequeuehandler.php | 52 -- plugins/OMB/locale/OMB.pot | 61 --- plugins/OMB/locale/br/LC_MESSAGES/OMB.po | 58 -- plugins/OMB/locale/ca/LC_MESSAGES/OMB.po | 58 -- plugins/OMB/locale/de/LC_MESSAGES/OMB.po | 61 --- plugins/OMB/locale/es/LC_MESSAGES/OMB.po | 57 -- plugins/OMB/locale/eu/LC_MESSAGES/OMB.po | 60 --- plugins/OMB/locale/fr/LC_MESSAGES/OMB.po | 62 --- plugins/OMB/locale/gl/LC_MESSAGES/OMB.po | 60 --- plugins/OMB/locale/ia/LC_MESSAGES/OMB.po | 60 --- plugins/OMB/locale/it/LC_MESSAGES/OMB.po | 63 --- plugins/OMB/locale/mk/LC_MESSAGES/OMB.po | 62 --- plugins/OMB/locale/nl/LC_MESSAGES/OMB.po | 67 --- plugins/OMB/locale/te/LC_MESSAGES/OMB.po | 55 -- plugins/OMB/locale/tl/LC_MESSAGES/OMB.po | 63 --- plugins/OStatus/scripts/updateostatus.php | 131 ----- plugins/TwitterBridge/lib/twitterimport.php | 22 - scripts/updateurls.php | 5 - 61 files changed, 13 insertions(+), 6278 deletions(-) delete mode 100644 classes/Remote_profile.php delete mode 100644 plugins/OMB/OMBPlugin.php delete mode 100644 plugins/OMB/README delete mode 100644 plugins/OMB/actions/accesstoken.php delete mode 100644 plugins/OMB/actions/finishremotesubscribe.php delete mode 100644 plugins/OMB/actions/postnotice.php delete mode 100644 plugins/OMB/actions/remotesubscribe.php delete mode 100644 plugins/OMB/actions/requesttoken.php delete mode 100644 plugins/OMB/actions/updateprofile.php delete mode 100644 plugins/OMB/actions/userauthorization.php delete mode 100644 plugins/OMB/actions/xrds.php delete mode 100755 plugins/OMB/extlib/libomb/base_url_xrds_mapper.php delete mode 100644 plugins/OMB/extlib/libomb/constants.php delete mode 100755 plugins/OMB/extlib/libomb/datastore.php delete mode 100644 plugins/OMB/extlib/libomb/helper.php delete mode 100755 plugins/OMB/extlib/libomb/invalidparameterexception.php delete mode 100755 plugins/OMB/extlib/libomb/invalidyadisexception.php delete mode 100755 plugins/OMB/extlib/libomb/notice.php delete mode 100755 plugins/OMB/extlib/libomb/omb_yadis_xrds.php delete mode 100755 plugins/OMB/extlib/libomb/plain_xrds_writer.php delete mode 100755 plugins/OMB/extlib/libomb/profile.php delete mode 100755 plugins/OMB/extlib/libomb/remoteserviceexception.php delete mode 100755 plugins/OMB/extlib/libomb/service_consumer.php delete mode 100755 plugins/OMB/extlib/libomb/service_provider.php delete mode 100755 plugins/OMB/extlib/libomb/unsupportedserviceexception.php delete mode 100755 plugins/OMB/extlib/libomb/xrds_mapper.php delete mode 100755 plugins/OMB/extlib/libomb/xrds_writer.php delete mode 100644 plugins/OMB/lib/omb.php delete mode 100644 plugins/OMB/lib/omboauthdatastore.php delete mode 100644 plugins/OMB/lib/ombqueuehandler.php delete mode 100644 plugins/OMB/lib/profilequeuehandler.php delete mode 100644 plugins/OMB/locale/OMB.pot delete mode 100644 plugins/OMB/locale/br/LC_MESSAGES/OMB.po delete mode 100644 plugins/OMB/locale/ca/LC_MESSAGES/OMB.po delete mode 100644 plugins/OMB/locale/de/LC_MESSAGES/OMB.po delete mode 100644 plugins/OMB/locale/es/LC_MESSAGES/OMB.po delete mode 100644 plugins/OMB/locale/eu/LC_MESSAGES/OMB.po delete mode 100644 plugins/OMB/locale/fr/LC_MESSAGES/OMB.po delete mode 100644 plugins/OMB/locale/gl/LC_MESSAGES/OMB.po delete mode 100644 plugins/OMB/locale/ia/LC_MESSAGES/OMB.po delete mode 100644 plugins/OMB/locale/it/LC_MESSAGES/OMB.po delete mode 100644 plugins/OMB/locale/mk/LC_MESSAGES/OMB.po delete mode 100644 plugins/OMB/locale/nl/LC_MESSAGES/OMB.po delete mode 100644 plugins/OMB/locale/te/LC_MESSAGES/OMB.po delete mode 100644 plugins/OMB/locale/tl/LC_MESSAGES/OMB.po delete mode 100644 plugins/OStatus/scripts/updateostatus.php diff --git a/actions/apiaccountupdateprofile.php b/actions/apiaccountupdateprofile.php index fea6064f30..6b9c358e7b 100644 --- a/actions/apiaccountupdateprofile.php +++ b/actions/apiaccountupdateprofile.php @@ -131,8 +131,6 @@ class ApiAccountUpdateProfileAction extends ApiAuthAction return; } - common_broadcast_profile($profile); - $twitter_user = $this->twitterUserArray($profile, true); if ($this->format == 'xml') { diff --git a/actions/apiaccountupdateprofileimage.php b/actions/apiaccountupdateprofileimage.php index 6058d4fabd..383818415e 100644 --- a/actions/apiaccountupdateprofileimage.php +++ b/actions/apiaccountupdateprofileimage.php @@ -97,8 +97,6 @@ class ApiAccountUpdateProfileImageAction extends ApiAuthAction $profile = $this->user->getProfile(); $profile->setOriginal($filename); - common_broadcast_profile($profile); - $twitter_user = $this->twitterUserArray($profile, true); if ($this->format == 'xml') { diff --git a/actions/avatarsettings.php b/actions/avatarsettings.php index 76974265e6..dd8093b765 100644 --- a/actions/avatarsettings.php +++ b/actions/avatarsettings.php @@ -386,7 +386,6 @@ class AvatarsettingsAction extends SettingsAction $this->mode = 'upload'; // TRANS: Success message for having updated a user avatar. $this->showForm(_('Avatar updated.'), true); - common_broadcast_profile($profile); } else { // TRANS: Error displayed on the avatar upload page if the avatar could not be updated for an unknown reason. $this->showForm(_('Failed updating avatar.')); diff --git a/actions/profilesettings.php b/actions/profilesettings.php index 4f63966a40..3b71b99755 100644 --- a/actions/profilesettings.php +++ b/actions/profilesettings.php @@ -427,7 +427,6 @@ class ProfilesettingsAction extends SettingsAction $user->query('COMMIT'); Event::handle('EndProfileSaveForm', array($this)); - common_broadcast_profile($profile); // TRANS: Confirmation shown when user profile settings are saved. $this->showForm(_('Settings saved.'), true); diff --git a/actions/subscribe.php b/actions/subscribe.php index 5b74c2503b..36f9fc724b 100644 --- a/actions/subscribe.php +++ b/actions/subscribe.php @@ -35,8 +35,7 @@ if (!defined('STATUSNET')) { /** * Subscription action * - * Subscribing to a profile. Does not work for OMB 0.1 remote subscriptions, - * but may work for other remote subscription protocols, like OStatus. + * Subscribing to a profile. Likely to work for OStatus profiles. * * Takes parameters: * diff --git a/classes/Profile.php b/classes/Profile.php index e461254f9d..0175831a11 100644 --- a/classes/Profile.php +++ b/classes/Profile.php @@ -1376,7 +1376,7 @@ class Profile extends Managed_DataObject $profile = null; if (Event::handle('StartGetProfileFromURI', array($uri, &$profile))) { - // Get a local user or remote (OMB 0.1) profile + // Get a local user $user = User::getKV('uri', $uri); if (!empty($user)) { $profile = $user->getProfile(); diff --git a/classes/Remote_profile.php b/classes/Remote_profile.php deleted file mode 100644 index 46a187f25b..0000000000 --- a/classes/Remote_profile.php +++ /dev/null @@ -1,75 +0,0 @@ -. - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } - -/** - * Table Definition for remote_profile - */ -require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; - -class Remote_profile extends Managed_DataObject -{ - ###START_AUTOCODE - /* the code below is auto generated do not remove the above tag */ - - public $__table = 'remote_profile'; // table name - public $id; // int(4) primary_key not_null - public $uri; // varchar(255) unique_key - public $postnoticeurl; // varchar(255) - public $updateprofileurl; // varchar(255) - public $created; // datetime() not_null - public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP - - /* the code above is auto generated do not remove the tag below */ - ###END_AUTOCODE - - function hasRight($right) - { - $profile = Profile::getKV($this->id); - if ($profile) { - return $profile->hasright($right); - } else { - // TRANS: Exception thrown when a right for a non-existing user profile is checked. - throw new Exception(_("Missing profile.")); - } - } - - public static function schemaDef() - { - return array( - 'description' => 'remote people (OMB)', - 'fields' => array( - 'id' => array('type' => 'int', 'not null' => true, 'description' => 'foreign key to profile table'), - 'uri' => array('type' => 'varchar', 'length' => 255, 'description' => 'universally unique identifier, usually a tag URI'), - 'postnoticeurl' => array('type' => 'varchar', 'length' => 255, 'description' => 'URL we use for posting notices'), - 'updateprofileurl' => array('type' => 'varchar', 'length' => 255, 'description' => 'URL we use for updates to this profile'), - 'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'), - 'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'), - ), - 'primary key' => array('id'), - 'unique keys' => array( - 'remote_profile_uri_key' => array('uri'), - ), - 'foreign keys' => array( - 'remote_profile_id_fkey' => array('profile', array('id' => 'id')), - ), - ); - } -} diff --git a/db/core.php b/db/core.php index da2f5fde5f..db0c9371fa 100644 --- a/db/core.php +++ b/db/core.php @@ -34,7 +34,6 @@ $classes = array('Schema_version', 'Avatar', 'Sms_carrier', 'User', - 'Remote_profile', 'Subscription', 'Group_join_queue', 'Subscription_queue', diff --git a/lib/command.php b/lib/command.php index 6d0d7194f3..04c2e57ec8 100644 --- a/lib/command.php +++ b/lib/command.php @@ -770,12 +770,6 @@ class SubCommand extends Command $target = $this->getProfile($this->other); - $remote = Remote_profile::getKV('id', $target->id); - if ($remote) { - // TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. - throw new CommandException(_("Can't subscribe to OMB profiles by command.")); - } - try { Subscription::start($this->user->getProfile(), $target); // TRANS: Text shown after having subscribed to another user successfully. diff --git a/lib/default.php b/lib/default.php index fd505cd4c2..431eb6d9e6 100644 --- a/lib/default.php +++ b/lib/default.php @@ -300,8 +300,6 @@ $default = 'location' => array('share' => 'user', // whether to share location; 'always', 'user', 'never' 'sharedefault' => false), - 'omb' => - array('timeout' => 5), // HTTP request timeout in seconds when contacting remote hosts for OMB updates 'logincommand' => array('disabled' => true), 'plugins' => diff --git a/lib/installer.php b/lib/installer.php index a8f3e31a45..6292b18467 100644 --- a/lib/installer.php +++ b/lib/installer.php @@ -259,16 +259,12 @@ abstract class Installer */ function validateSiteProfile() { - $fail = false; - - $sprofile = $this->siteProfile; - - if (empty($sprofile)) { + if (empty($this->siteProfile)) { $this->updateStatus("No site profile selected.", true); - $fail = true; + return false; } - return !$fail; + return true; } /** @@ -563,6 +559,8 @@ abstract class Installer */ function doInstall() { + global $config; + $this->updateStatus("Initializing..."); ini_set('display_errors', 1); error_reporting(E_ALL); @@ -572,9 +570,15 @@ abstract class Installer if (!defined('STATUSNET')) { define('STATUSNET', true); } + require_once INSTALLDIR . '/lib/framework.php'; StatusNet::initDefaults($this->server, $this->path); + if ($this->siteProfile == "singleuser") { + // Until we use ['site']['profile']==='singleuser' everywhere + $config['singleuser']['enabled'] = true; + } + try { $this->db = $this->setupDatabase(); if (!$this->db) { diff --git a/lib/snapshot.php b/lib/snapshot.php index a16087ac00..54cf512743 100644 --- a/lib/snapshot.php +++ b/lib/snapshot.php @@ -136,7 +136,6 @@ class Snapshot $tables = array('user', 'notice', 'subscription', - 'remote_profile', 'user_group'); foreach ($tables as $table) { diff --git a/lib/util.php b/lib/util.php index 842889ec5b..5f6f032958 100644 --- a/lib/util.php +++ b/lib/util.php @@ -1513,21 +1513,6 @@ function common_enqueue_notice($notice) return true; } -/** - * Legacy function to broadcast profile updates to OMB remote subscribers. - * - * XXX: This probably needs killing, but there are several bits of code - * that broadcast profile changes that need to be dealt with. AFAIK - * this function is only used for OMB. -z - * - * Since this may be slow with a lot of subscribers or bad remote sites, - * this is run through the background queues if possible. - */ -function common_broadcast_profile(Profile $profile) -{ - Event::handle('BroadcastProfile', array($profile)); -} - function common_profile_url($nickname) { return common_local_url('showstream', array('nickname' => $nickname), diff --git a/plugins/ExtendedProfile/actions/profiledetailsettings.php b/plugins/ExtendedProfile/actions/profiledetailsettings.php index 016dad39ef..5bc2443481 100644 --- a/plugins/ExtendedProfile/actions/profiledetailsettings.php +++ b/plugins/ExtendedProfile/actions/profiledetailsettings.php @@ -633,7 +633,6 @@ class ProfileDetailSettingsAction extends ProfileSettingsAction } Event::handle('EndProfileSaveForm', array($this)); - common_broadcast_profile($profile); } } diff --git a/plugins/OMB/OMBPlugin.php b/plugins/OMB/OMBPlugin.php deleted file mode 100644 index 27c35a07de..0000000000 --- a/plugins/OMB/OMBPlugin.php +++ /dev/null @@ -1,381 +0,0 @@ -. - * - * @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 - * - * Depends on: WebFinger plugin - * - * @category Integration - * @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/ - */ -class OMBPlugin extends Plugin -{ - - /** - * 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::getKV('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::getKV('id', $action->profile->id); - if (empty($remote)) { - false; - } - return true; - } - - /** - * Check for illegal subscription attempts - * - * @param Profile $profile subscriber - * @param Profile $other subscribee - * @return hook return value - */ - function onStartSubscribe(Profile $profile, Profile $other) - { - // OMB 0.1 doesn't have a mechanism for local-server- - // originated subscription. - - $omb01 = Remote_profile::getKV('id', $other->id); - - if (!empty($omb01)) { - throw new ClientException( - // TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. - _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::getKV('id', $tagged_profile->id); - - if (!empty($omb01)) { - $this->clientError( - // TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. - _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::getKV('id', $ptag->tagged); - - if (!empty($omb01)) { - $this->clientError( - // TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. - _m('You cannot (un)list an OMB 0.1 ' - . 'remote profile with this action.') - ); - return false; - } - } - - /** - * Remove old OMB subscription tokens - * - * @param Profile $profile subscriber - * @param Profile $other subscribee - * @return hook return value - */ - function onEndUnsubscribe(Profile $profile, Profile $other) - { - $sub = Subscription::pkeyGet( - array('subscriber' => $profile->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__); - throw new Exception( - // TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. - _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::getKV('uri', $uri); - if (!empty($remote_profile)) { - $profile = Profile::getKV('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::getKV($profile->id); - if ($remote) { - $uri = $remote->uri; - return false; - } - return true; - } - - /** - * Broadcast a profile over OMB - * - * @param Profile $profile to broadcast - * @return false - */ - function onBroadcastProfile($profile) { - $qm = QueueManager::get(); - $qm->enqueue($profile, "profile"); - return true; - } - - function onStartProfileRemoteSubscribe($out, $profile) - { - $out->elementStart('li', 'entity_subscribe'); - $url = common_local_url('remotesubscribe', - array('nickname' => $this->profile->nickname)); - $out->element('a', array('href' => $url, - 'class' => 'entity_remote_subscribe'), - // TRANS: Link text for link that will subscribe to a remote profile. - _m('BUTTON','Subscribe')); - $out->elementEnd('li'); - - return false; - } - - /** - * 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', - // TRANS: Plugin description. - 'rawdescription' => _m('A sample plugin to show basics of development for new hackers.') - ); - - return true; - } -} diff --git a/plugins/OMB/README b/plugins/OMB/README deleted file mode 100644 index f296e38ff6..0000000000 --- a/plugins/OMB/README +++ /dev/null @@ -1,30 +0,0 @@ -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. diff --git a/plugins/OMB/actions/accesstoken.php b/plugins/OMB/actions/accesstoken.php deleted file mode 100644 index cd7a2f4588..0000000000 --- a/plugins/OMB/actions/accesstoken.php +++ /dev/null @@ -1,69 +0,0 @@ - - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - * - * StatusNet - the distributed open-source microblogging tool - * 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 - * 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 . - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} - -require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php'; -require_once dirname(__FILE__) . '/../lib/omb.php'; - -/** - * Access token class - * - * @category Action - * @package StatusNet - * @author Evan Prodromou - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - */ -class AccesstokenAction extends Action -{ - /** - * Class handler - * - * @param array $args query arguments - * - * @return nothing - * - **/ - function handle($args) - { - parent::handle($args); - try { - $srv = new OMB_Service_Provider(null, omb_oauth_datastore(), - omb_oauth_server()); - $srv->writeAccessToken(); - } catch (Exception $e) { - $this->serverError($e->getMessage()); - } - } -} diff --git a/plugins/OMB/actions/finishremotesubscribe.php b/plugins/OMB/actions/finishremotesubscribe.php deleted file mode 100644 index e933716f9e..0000000000 --- a/plugins/OMB/actions/finishremotesubscribe.php +++ /dev/null @@ -1,158 +0,0 @@ - - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - * - * StatusNet - the distributed open-source microblogging tool - * 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 - * 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 . - **/ - -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } - -require_once dirname(__FILE__) . '/../extlib/libomb/service_consumer.php'; -require_once dirname(__FILE__) . '/../lib/omb.php'; - -/** - * Handler for remote subscription finish callback - * - * When a remote user subscribes a local user, a redirect to this action is - * issued after the remote user authorized their service to subscribe. - * - * @category Action - * @package Laconica - * @author Evan Prodromou - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://laconi.ca/ - */ -class FinishremotesubscribeAction extends Action -{ - /** - * Class handler. - * - * @param array $args query arguments - * - * @return nothing - * - */ - function handle($args) - { - parent::handle($args); - - /* Restore session data. RemotesubscribeAction should have stored - this entry. */ - $service = unserialize($_SESSION['oauth_authorization_request']); - - if (!$service) { - // TRANS: Client error displayed when subscribing to a remote profile and an unexpected response is received. - $this->clientError(_('Not expecting this response!')); - return; - } - - common_debug('stored request: '. print_r($service, true), __FILE__); - - /* Create user objects for both users. Do it early for request - validation. */ - $user = User::getKV('uri', $service->getListeneeURI()); - - if (!$user) { - // TRANS: Client error displayed when subscribing to a remote profile that does not exist. - $this->clientError(_('User being listened to does not exist.')); - return; - } - - $other = User::getKV('uri', $service->getListenerURI()); - - if ($other) { - // TRANS: Client error displayed when subscribing to a remote profile that is a local profile. - $this->clientError(_('You can use the local subscription!')); - return; - } - - $remote = Remote_profile::getKV('uri', $service->getListenerURI()); - if ($remote) { - // Note remote profile may not have been saved yet. - // @fixme not convinced this is correct at all! - - $profile = Profile::getKV($remote->id); - - if ($user->hasBlocked($profile)) { - // TRANS: Client error displayed when subscribing to a remote profile that is blocked form subscribing to. - $this->clientError(_('That user has blocked you from subscribing.')); - return; - } - } - - /* Perform the handling itself via libomb. */ - try { - $service->finishAuthorization(); - } catch (OAuthException $e) { - if ($e->getMessage() == 'The authorized token does not equal the ' . - 'submitted token.') { - // TRANS: Client error displayed when subscribing to a remote profile without providing an authorised token. - $this->clientError(_('You are not authorized.')); - return; - } else { - // TRANS: Client error displayed when subscribing to a remote profile and conversion of the request token to access token fails. - $this->clientError(_('Could not convert request token to ' . - 'access token.')); - return; - } - } catch (OMB_RemoteServiceException $e) { - // TRANS: Client error displayed when subscribing to a remote profile fails because of an unsupported version of the OMB protocol. - $this->clientError(_('Remote service uses unknown version of ' . - 'OMB protocol.')); - return; - } catch (Exception $e) { - common_debug('Got exception ' . print_r($e, true), __FILE__); - $this->clientError($e->getMessage()); - return; - } - - /* The service URLs are not accessible from datastore, so setting them - after insertion of the profile. */ - $remote = Remote_profile::getKV('uri', $service->getListenerURI()); - $orig_remote = clone($remote); - - $remote->postnoticeurl = - $service->getServiceURI(OMB_ENDPOINT_POSTNOTICE); - $remote->updateprofileurl = - $service->getServiceURI(OMB_ENDPOINT_UPDATEPROFILE); - - if (!$remote->update($orig_remote)) { - // TRANS: Server error displayed when subscribing to a remote profile fails because the remote profile could not be updated. - $this->serverError(_('Error updating remote profile.')); - return; - } - - /* Clear the session data. */ - unset($_SESSION['oauth_authorization_request']); - - /* If we show subscriptions in reverse chronological order, the new one - should show up close to the top of the page. */ - common_redirect(common_local_url('subscribers', array('nickname' => - $user->nickname)), - 303); - } -} diff --git a/plugins/OMB/actions/postnotice.php b/plugins/OMB/actions/postnotice.php deleted file mode 100644 index c2128f7172..0000000000 --- a/plugins/OMB/actions/postnotice.php +++ /dev/null @@ -1,109 +0,0 @@ - - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - * - * StatusNet - the distributed open-source microblogging tool - * 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 - * 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 . - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } - -require_once dirname(__FILE__) . '/../lib/omb.php'; -require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php'; - -/** - * Handler for postnotice action - * - * @category Action - * @package StatusNet - * @author Evan Prodromou - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - */ -class PostnoticeAction extends Action -{ - /** - * For initializing members of the class. - * - * @param array $argarray misc. arguments - * - * @return boolean true - */ - function prepare($argarray) - { - StatusNet::setApi(true); // Send smaller error pages - - parent::prepare($argarray); - - try { - $this->checkNotice(); - } catch (Exception $e) { - $this->clientError($e->getMessage()); - return false; - } - return true; - } - - function handle($args) - { - parent::handle($args); - try { - $srv = new OMB_Service_Provider(null, omb_oauth_datastore(), - omb_oauth_server()); - $srv->handlePostNotice(); - } catch (OMB_RemoteServiceException $rse) { - $msg = $rse->getMessage(); - if (preg_match('/Revoked accesstoken/', $msg) || - preg_match('/No subscriber/', $msg)) { - $this->clientError($msg, 403); - } else { - $this->clientError($msg); - } - } catch (Exception $e) { - $this->serverError($e->getMessage()); - return; - } - } - - function checkNotice() - { - $content = common_shorten_links($_POST['omb_notice_content']); - if (Notice::contentTooLong($content)) { - // TRANS: Client error displayed if the notice posted has too many characters. - $this->clientError(_('Invalid notice content.'), 400); - return false; - } - $license = $_POST['omb_notice_license']; - $site_license = common_config('license', 'url'); - if ($license && !common_compatible_license($license, $site_license)) { - // TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license. - // TRANS: %1$s is the notice license, %2$s is the StatusNet site's license. - throw new Exception(sprintf(_('Notice license "%1$s" is not ' . - 'compatible with site license "%2$s".'), - $license, $site_license)); - } - } -} diff --git a/plugins/OMB/actions/remotesubscribe.php b/plugins/OMB/actions/remotesubscribe.php deleted file mode 100644 index 1f7b9c0839..0000000000 --- a/plugins/OMB/actions/remotesubscribe.php +++ /dev/null @@ -1,224 +0,0 @@ - - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - * - * StatusNet - the distributed open-source microblogging tool - * 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 - * 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 . - **/ - -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } - -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 - * - * @category Action - * @package StatusNet - * @author Evan Prodromou - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - */ -class RemotesubscribeAction extends Action -{ - var $nickname; - var $profile_url; - var $err; - - function prepare($args) - { - parent::prepare($args); - - if (common_logged_in()) { - // TRANS: Client error displayed when using remote subscribe for a local entity. - $this->clientError(_('You can use the local subscription!')); - return false; - } - - $this->nickname = $this->trimmed('nickname'); - $this->profile_url = $this->trimmed('profile_url'); - - return true; - } - - function handle($args) - { - parent::handle($args); - - if ($_SERVER['REQUEST_METHOD'] == 'POST') { - /* Use a session token for CSRF protection. */ - $token = $this->trimmed('token'); - if (!$token || $token != common_session_token()) { - // TRANS: Client error displayed when the session token does not match or is not given. - $this->showForm(_('There was a problem with your session token. '. - 'Try again, please.')); - return; - } - $this->remoteSubscription(); - } else { - $this->showForm(); - } - } - - function showForm($err=null) - { - $this->err = $err; - $this->showPage(); - } - - function showPageNotice() - { - if ($this->err) { - $this->element('div', 'error', $this->err); - } else { - // TRANS: Page notice for remote subscribe. This message contains Markdown links. - // TRANS: Ensure to keep the correct markup of [link description](link). - $inst = _('To subscribe, you can [login](%%action.login%%),' . - ' or [register](%%action.register%%) a new ' . - ' account. If you already have an account ' . - ' on a [compatible microblogging site](%%doc.openmublog%%), ' . - ' enter your profile URL below.'); - $output = common_markup_to_html($inst); - $this->elementStart('div', 'instructions'); - $this->raw($output); - $this->elementEnd('div'); - } - } - - function title() - { - // TRANS: Page title for Remote subscribe. - return _('Remote subscribe'); - } - - function showContent() - { - /* The id 'remotesubscribe' conflicts with the - button on profile page. */ - $this->elementStart('form', array('id' => 'form_remote_subscribe', - 'method' => 'post', - 'class' => 'form_settings', - 'action' => common_local_url('remotesubscribe'))); - $this->elementStart('fieldset'); - // TRANS: Field legend on page for remote subscribe. - $this->element('legend', _('Subscribe to a remote user')); - $this->hidden('token', common_session_token()); - - $this->elementStart('ul', 'form_data'); - $this->elementStart('li'); - // TRANS: Field label on page for remote subscribe. - $this->input('nickname', _('User nickname'), $this->nickname, - // TRANS: Field title on page for remote subscribe. - _('Nickname of the user you want to follow.')); - $this->elementEnd('li'); - $this->elementStart('li'); - // TRANS: Field label on page for remote subscribe. - $this->input('profile_url', _('Profile URL'), $this->profile_url, - // TRANS: Field title on page for remote subscribe. - _('URL of your profile on another compatible microblogging service.')); - $this->elementEnd('li'); - $this->elementEnd('ul'); - // TRANS: Button text on page for remote subscribe. - $this->submit('submit', _m('BUTTON','Subscribe')); - $this->elementEnd('fieldset'); - $this->elementEnd('form'); - } - - function remoteSubscription() - { - if (!$this->nickname) { - // TRANS: Form validation error on page for remote subscribe when no user was provided. - $this->showForm(_('No such user.')); - return; - } - - $user = User::getKV('nickname', $this->nickname); - - $this->profile_url = $this->trimmed('profile_url'); - - if (!$this->profile_url) { - // TRANS: Form validation error on page for remote subscribe when no user profile was found. - $this->showForm(_('No such user.')); - return; - } - - if (!common_valid_http_url($this->profile_url)) { - // TRANS: Form validation error on page for remote subscribe when an invalid profile URL was provided. - $this->showForm(_('Invalid profile URL (bad format).')); - return; - } - - try { - $service = new OMB_Service_Consumer($this->profile_url, - common_root_url(), - omb_oauth_datastore()); - } catch (OMB_InvalidYadisException $e) { - // TRANS: Form validation error on page for remote subscribe when no the provided profile URL - // TRANS: does not contain expected data. - $this->showForm(_('Not a valid profile URL (no YADIS document or ' . - 'invalid XRDS defined).')); - return; - } - - if ($service->getServiceURI(OAUTH_ENDPOINT_REQUEST) == - common_local_url('requesttoken') || - User::getKV('uri', $service->getRemoteUserURI())) { - // TRANS: Form validation error on page for remote subscribe. - $this->showForm(_('That is a local profile! Login to subscribe.')); - return; - } - - try { - $service->requestToken(); - } catch (OMB_RemoteServiceException $e) { - // TRANS: Form validation error on page for remote subscribe when the remote service is not providing a request token. - $this->showForm(_('Could not get a request token.')); - return; - } - - /* Create an OMB_Profile from $user. */ - $profile = $user->getProfile(); - if (!$profile) { - common_log_db_error($user, 'SELECT', __FILE__); - // TRANS: Error message displayed when referring to a user without a profile. - $this->serverError(_('User has no profile.')); - return; - } - - $target_url = $service->requestAuthorization( - profile_to_omb_profile($user->uri, $profile), - common_local_url('finishremotesubscribe')); - - common_ensure_session(); - - $_SESSION['oauth_authorization_request'] = serialize($service); - - /* Redirect to the remote service for authorization. */ - common_redirect($target_url, 303); - } -} diff --git a/plugins/OMB/actions/requesttoken.php b/plugins/OMB/actions/requesttoken.php deleted file mode 100644 index 57e8118456..0000000000 --- a/plugins/OMB/actions/requesttoken.php +++ /dev/null @@ -1,78 +0,0 @@ - - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - * - * StatusNet - the distributed open-source microblogging tool - * 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 - * 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 . - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} - -require_once dirname(__FILE__) . '/../lib/omb.php'; -require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php'; - -/** - * Request token action class. - * - * @category Action - * @package StatusNet - * @author Evan Prodromou - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - */ -class RequesttokenAction extends Action -{ - /** - * Is read only? - * - * @return boolean false - */ - function isReadOnly() - { - return false; - } - - /** - * Class handler. - * - * @param array $args array of arguments - * - * @return void - */ - function handle($args) - { - parent::handle($args); - try { - $srv = new OMB_Service_Provider(null, omb_oauth_datastore(), - omb_oauth_server()); - $srv->writeRequestToken(); - } catch (Exception $e) { - $this->serverError($e->getMessage()); - } - } -} diff --git a/plugins/OMB/actions/updateprofile.php b/plugins/OMB/actions/updateprofile.php deleted file mode 100644 index 29d334b302..0000000000 --- a/plugins/OMB/actions/updateprofile.php +++ /dev/null @@ -1,94 +0,0 @@ - - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - * - * StatusNet - the distributed open-source microblogging tool - * 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 - * 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 . - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } - -require_once dirname(__FILE__) . '/../lib/omb.php'; -require_once dirname(__FILE__) . '/../extlib/libomb/service_provider.php'; - -/** - * Handle an updateprofile action - * - * @category Action - * @package Laconica - * @author Evan Prodromou - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://laconi.ca/ - */ -class UpdateprofileAction extends Action -{ - /** - * For initializing members of the class. - * - * @param array $argarray misc. arguments - * - * @return boolean true - */ - function prepare($argarray) - { - StatusNet::setApi(true); // Send smaller error pages - - parent::prepare($argarray); - $license = $_POST['omb_listenee_license']; - $site_license = common_config('license', 'url'); - if (!common_compatible_license($license, $site_license)) { - // TRANS: Client error displayed when trying to update profile with an incompatible license. - // TRANS: %1$s is the license incompatible with site license %2$s. - $this->clientError(sprintf(_('Listenee stream license "%1$s" is not '. - 'compatible with site license "%2$s".'), - $license, $site_license)); - return false; - } - return true; - } - - function handle($args) - { - parent::handle($args); - - try { - $srv = new OMB_Service_Provider(null, omb_oauth_datastore(), - omb_oauth_server()); - $srv->handleUpdateProfile(); - } catch (OMB_RemoteServiceException $rse) { - $msg = $rse->getMessage(); - if (preg_match('/Revoked accesstoken/', $msg) || - preg_match('/No subscriber/', $msg)) { - $this->clientError($msg, 403); - } else { - $this->clientError($msg); - } - } catch (Exception $e) { - $this->serverError($e->getMessage()); - return; - } - } -} diff --git a/plugins/OMB/actions/userauthorization.php b/plugins/OMB/actions/userauthorization.php deleted file mode 100644 index 848cc77a71..0000000000 --- a/plugins/OMB/actions/userauthorization.php +++ /dev/null @@ -1,371 +0,0 @@ - - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - * - * StatusNet - the distributed open-source microblogging tool - * 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 - * 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 . - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } - -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. -class UserauthorizationAction extends Action -{ - var $error; - var $params; - - function handle($args) - { - parent::handle($args); - - if ($_SERVER['REQUEST_METHOD'] == 'POST') { - /* Use a session token for CSRF protection. */ - $token = $this->trimmed('token'); - if (!$token || $token != common_session_token()) { - $srv = $this->getStoredParams(); - // TRANS: Client error displayed when the session token does not match or is not given. - $this->showForm($srv->getRemoteUser(), _('There was a problem ' . - 'with your session token. Try again, ' . - 'please.')); - return; - } - /* We've shown the form, now post user's choice. */ - $this->sendAuthorization(); - } else { - if (!common_logged_in()) { - /* Go log in, and then come back. */ - common_set_returnto($_SERVER['REQUEST_URI']); - - common_redirect(common_local_url('login')); - return; - } - - $user = common_current_user(); - $profile = $user->getProfile(); - if (!$profile) { - common_log_db_error($user, 'SELECT', __FILE__); - // TRANS: Error message displayed when referring to a user without a profile. - $this->serverError(_('User has no profile.')); - return; - } - - /* TODO: If no token is passed the user should get a prompt to enter - it according to OAuth Core 1.0. */ - try { - $this->validateOmb(); - $srv = new OMB_Service_Provider( - profile_to_omb_profile($user->uri, $profile), - omb_oauth_datastore()); - - $remote_user = $srv->handleUserAuth(); - } catch (Exception $e) { - $this->clearParams(); - $this->clientError($e->getMessage()); - return; - } - - $this->storeParams($srv); - $this->showForm($remote_user); - } - } - - function showForm($params, $error=null) - { - $this->params = $params; - $this->error = $error; - $this->showPage(); - } - - function title() - { - // TRANS: Page title. - return _('Authorize subscription'); - } - - function showPageNotice() - { - // TRANS: Page notice on "Authorize subscription" page. - $this->element('p', null, _('Please check these details to make sure '. - 'that you want to subscribe to this ' . - 'user’s notices. If you didn’t just ask ' . - 'to subscribe to someone’s notices, '. - 'click "Reject".')); - } - - function showContent() - { - $params = $this->params; - - $nickname = $params->getNickname(); - $profile = $params->getProfileURL(); - $license = $params->getLicenseURL(); - $fullname = $params->getFullname(); - $homepage = $params->getHomepage(); - $bio = $params->getBio(); - $location = $params->getLocation(); - $avatar = $params->getAvatarURL(); - - $this->elementStart('div', 'entity_profile vcard'); - - if ($avatar) { - $this->element('img', array('src' => $avatar, - 'class' => 'photo avatar entity_depiction', - 'width' => AVATAR_PROFILE_SIZE, - 'height' => AVATAR_PROFILE_SIZE, - 'alt' => $nickname)); - } - - // TRANS: Label for nickname on user authorisation page. - $this->element('div', 'entity_nickname', _('Nickname')); - - $hasFN = ($fullname !== '') ? 'nickname' : 'fn nickname'; - - // XXX: why are these raw() instead of escaped...? - - $this->elementStart('a', array('href' => $profile, - 'class' => 'url '.$hasFN)); - $this->raw($nickname); - $this->elementEnd('a'); - - if (!is_null($fullname)) { - $this->elementStart('div', 'fn entity_fn'); - $this->raw($fullname); - $this->elementEnd('div'); - } - - if (!is_null($location)) { - $this->elementStart('div', 'label entity_location'); - $this->raw($location); - } - - if (!is_null($homepage)) { - $this->elementStart('a', array('href' => $homepage, - 'class' => 'url entity_url')); - $this->raw($homepage); - $this->elementEnd('a'); - } - - if (!is_null($bio)) { - $this->elementStart('div', 'note entity_note'); - $this->raw($bio); - $this->elementEnd('dd'); - } - - if (!is_null($license)) { - $this->element('a', array('href' => $license, - 'class' => 'license entity_license'), - $license); - } - - $this->elementEnd('div'); - - $this->elementStart('div', 'entity_actions'); - $this->elementStart('ul'); - $this->elementStart('li', 'entity_subscribe'); - $this->elementStart('form', array('method' => 'post', - 'id' => 'userauthorization', - 'class' => 'form_user_authorization', - 'name' => 'userauthorization', - 'action' => common_local_url( - 'userauthorization'))); - $this->hidden('token', common_session_token()); - - $this->submit('accept', - // TRANS: Button text on Authorise Subscription page. - _m('BUTTON','Accept'), 'submit accept', null, - // TRANS: Title for button on Authorise Subscription page. - _('Subscribe to this user.')); - $this->submit('reject', - // TRANS: Button text on Authorise Subscription page. - _m('BUTTON','Reject'), 'submit reject', null, - // TRANS: Title for button on Authorise Subscription page. - _('Reject this subscription.')); - $this->elementEnd('form'); - $this->elementEnd('li'); - $this->elementEnd('ul'); - $this->elementEnd('div'); - } - - function sendAuthorization() - { - $srv = $this->getStoredParams(); - - if (is_null($srv)) { - // TRANS: Client error displayed for an empty authorisation request. - $this->clientError(_('No authorization request!')); - return; - } - - $accepted = $this->arg('accept'); - try { - list($val, $token) = $srv->continueUserAuth($accepted); - } catch (Exception $e) { - $this->clientError($e->getMessage()); - return; - } - if ($val !== false) { - common_redirect($val, 303); - } elseif ($accepted) { - $this->showAcceptMessage($token); - } else { - $this->showRejectMessage(); - } - } - - function showAcceptMessage($tok) - { - // TRANS: Accept message header from Authorise subscription page. - common_show_header(_('Subscription authorized')); - $this->element('p', null, - // TRANS: Accept message text from Authorise subscription page. - _('The subscription has been authorized, but no '. - 'callback URL was passed. Check with the site\'s ' . - 'instructions for details on how to authorize the ' . - 'subscription. Your subscription token is:')); - $this->element('blockquote', 'token', $tok); - common_show_footer(); - } - - function showRejectMessage() - { - // TRANS: Reject message header from Authorise subscription page. - common_show_header(_('Subscription rejected')); - $this->element('p', null, - // TRANS: Reject message from Authorise subscription page. - _('The subscription has been rejected, but no '. - 'callback URL was passed. Check with the site\'s ' . - 'instructions for details on how to fully reject ' . - 'the subscription.')); - common_show_footer(); - } - - function storeParams($params) - { - common_ensure_session(); - $_SESSION['userauthorizationparams'] = serialize($params); - } - - function clearParams() - { - common_ensure_session(); - unset($_SESSION['userauthorizationparams']); - } - - function getStoredParams() - { - common_ensure_session(); - $params = unserialize($_SESSION['userauthorizationparams']); - return $params; - } - - function validateOmb() - { - $listener = $_GET['omb_listener']; - $listenee = $_GET['omb_listenee']; - $nickname = $_GET['omb_listenee_nickname']; - $profile = $_GET['omb_listenee_profile']; - - $user = User::getKV('uri', $listener); - if (!$user) { - // TRANS: Exception thrown when no valid user is found for an authorisation request. - // TRANS: %s is a listener URI. - throw new Exception(sprintf(_('Listener URI "%s" not found here.'), - $listener)); - } - - if (strlen($listenee) > 255) { - // TRANS: Exception thrown when listenee URI is too long for an authorisation request. - // TRANS: %s is a listenee URI. - throw new Exception(sprintf(_('Listenee URI "%s" is too long.'), - $listenee)); - } - - $other = User::getKV('uri', $listenee); - if ($other) { - // TRANS: Exception thrown when listenee URI is a local user for an authorisation request. - // TRANS: %s is a listenee URI. - throw new Exception(sprintf(_('Listenee URI "%s" is a local user.'), - $listenee)); - } - - $remote = Remote_profile::getKV('uri', $listenee); - if ($remote) { - $sub = new Subscription(); - $sub->subscriber = $user->id; - $sub->subscribed = $remote->id; - if ($sub->find(true)) { - // TRANS: Exception thrown when already subscribed. - throw new Exception('You are already subscribed to this user.'); - } - } - - if ($profile == common_profile_url($nickname)) { - // TRANS: Exception thrown when profile URL is a local user for an authorisation request. - // TRANS: %s is a profile URL. - throw new Exception(sprintf(_('Profile URL "%s" is for a local user.'), - $profile)); - - } - - $license = $_GET['omb_listenee_license']; - $site_license = common_config('license', 'url'); - if (!common_compatible_license($license, $site_license)) { - // TRANS: Exception thrown when licenses are not compatible for an authorisation request. - // TRANS: %1$s is the license for the listenee, %2$s is the license for "this" StatusNet site. - throw new Exception(sprintf(_('Listenee stream license "%1$s" is not ' . - 'compatible with site license "%2$s".'), - $license, $site_license)); - } - - $avatar = $_GET['omb_listenee_avatar']; - if ($avatar) { - if (!common_valid_http_url($avatar) || strlen($avatar) > 255) { - // TRANS: Exception thrown when avatar URL is invalid for an authorisation request. - // TRANS: %s is an avatar URL. - throw new Exception(sprintf(_('Avatar URL "%s" is not valid.'), - $avatar)); - } - $size = @getimagesize($avatar); - if (!$size) { - // TRANS: Exception thrown when avatar URL could not be read for an authorisation request. - // TRANS: %s is an avatar URL. - throw new Exception(sprintf(_('Cannot read avatar URL "%s".'), - $avatar)); - } - if (!in_array($size[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG, - IMAGETYPE_PNG))) { - // TRANS: Exception thrown when avatar URL return an invalid image type for an authorisation request. - // TRANS: %s is an avatar URL. - throw new Exception(sprintf(_('Wrong image type for avatar URL '. - '"%s".'), $avatar)); - } - } - } -} diff --git a/plugins/OMB/actions/xrds.php b/plugins/OMB/actions/xrds.php deleted file mode 100644 index 8248d460e9..0000000000 --- a/plugins/OMB/actions/xrds.php +++ /dev/null @@ -1,139 +0,0 @@ - - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - * - * StatusNet - the distributed open-source microblogging tool - * 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 - * 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 . - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} - -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 - * - * @category Action - * @package StatusNet - * @author Evan Prodromou - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - */ -class XrdsAction extends Action -{ - var $user; - - /** - * Is read only? - * - * @return boolean true - */ - function isReadOnly() - { - return true; - } - - function prepare($args) - { - parent::prepare($args); - $nickname = $this->trimmed('nickname'); - $this->user = User::getKV('nickname', $nickname); - if (!$this->user) { - // TRANS: Client error displayed providing a non-existing nickname. - $this->clientError(_('No such user.')); - return; - } - return true; - } - - /** - * Class handler. - * - * @param array $args query arguments - * - * @return void - */ - function handle($args) - { - parent::handle($args); - $xrdsOutputter = new XRDSOutputter(); - $xrdsOutputter->startXRDS(); - - Event::handle('StartUserXRDS', array($this,&$xrdsOutputter)); - - //oauth - $xrdsOutputter->elementStart('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', - 'xml:id' => 'oauth', - 'xmlns:simple' => 'http://xrds-simple.net/core/1.0', - 'version' => '2.0')); - $xrdsOutputter->element('Type', null, 'xri://$xrds*simple'); - $xrdsOutputter->showXrdsService(OAUTH_ENDPOINT_REQUEST, - common_local_url('requesttoken'), - array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY, OAUTH_HMAC_SHA1), - null, - $this->user->uri); - $xrdsOutputter->showXrdsService( OAUTH_ENDPOINT_AUTHORIZE, - common_local_url('userauthorization'), - array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY, OAUTH_HMAC_SHA1)); - $xrdsOutputter->showXrdsService(OAUTH_ENDPOINT_ACCESS, - common_local_url('accesstoken'), - array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY, OAUTH_HMAC_SHA1)); - $xrdsOutputter->showXrdsService(OAUTH_ENDPOINT_RESOURCE, - null, - array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY, OAUTH_HMAC_SHA1)); - $xrdsOutputter->elementEnd('XRD'); - - //omb - $xrdsOutputter->elementStart('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', - 'xml:id' => 'omb', - 'xmlns:simple' => 'http://xrds-simple.net/core/1.0', - 'version' => '2.0')); - $xrdsOutputter->element('Type', null, 'xri://$xrds*simple'); - $xrdsOutputter->showXrdsService(OMB_ENDPOINT_POSTNOTICE, - common_local_url('postnotice')); - $xrdsOutputter->showXrdsService(OMB_ENDPOINT_UPDATEPROFILE, - common_local_url('updateprofile')); - $xrdsOutputter->elementEnd('XRD'); - - Event::handle('EndUserXRDS', array($this,&$xrdsOutputter)); - - //misc - $xrdsOutputter->elementStart('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', - 'version' => '2.0')); - $xrdsOutputter->showXrdsService(OAUTH_DISCOVERY, - '#oauth'); - $xrdsOutputter->showXrdsService(OMB_VERSION, - '#omb'); - $xrdsOutputter->elementEnd('XRD'); - - $xrdsOutputter->endXRDS(); - } -} diff --git a/plugins/OMB/extlib/libomb/base_url_xrds_mapper.php b/plugins/OMB/extlib/libomb/base_url_xrds_mapper.php deleted file mode 100755 index d45d6d69f9..0000000000 --- a/plugins/OMB/extlib/libomb/base_url_xrds_mapper.php +++ /dev/null @@ -1,72 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -require_once 'xrds_mapper.php'; -require_once 'constants.php'; - -/** - * Map XRDS actions to URLs using base URLs - * - * This class realizes a simple mapping of action URIs to handler URLs. The - * target URLs are constructed using a base URL. - */ -class OMB_Base_URL_XRDS_Mapper implements OMB_XRDS_Mapper -{ - protected $urls; - - /** - * Constructor - * - * Initialize the XRDS mapper with base URLs for OAuth and OMB endpoints. - * - * @param string $oauth_base The base URL for OAuth endpoints - * @param string $omb_base The base URL for OMB endpoints - */ - public function __construct($oauth_base, $omb_base) - { - $this->urls = array( - OAUTH_ENDPOINT_REQUEST => $oauth_base . 'requesttoken', - OAUTH_ENDPOINT_AUTHORIZE => $oauth_base . 'userauthorization', - OAUTH_ENDPOINT_ACCESS => $oauth_base . 'accesstoken', - OMB_ENDPOINT_POSTNOTICE => $omb_base . 'postnotice', - OMB_ENDPOINT_UPDATEPROFILE => $omb_base . 'updateprofile'); - } - - /** - * Fetch an URL for a specified action - * - * Returns the action URL for an action specified by the endpoint URI. - * - * @param string $action The endpoint URI - * - * @return string The action URL - */ - public function getURL($action) - { - return $this->urls[$action]; - } -} -?> diff --git a/plugins/OMB/extlib/libomb/constants.php b/plugins/OMB/extlib/libomb/constants.php deleted file mode 100644 index 2f8c0e514d..0000000000 --- a/plugins/OMB/extlib/libomb/constants.php +++ /dev/null @@ -1,59 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -/** - * The OMB constants. - */ - -define('OMB_VERSION_01', 'http://openmicroblogging.org/protocol/0.1'); - -/* The OMB version supported by this libomb version. */ -define('OMB_VERSION', OMB_VERSION_01); - -define('OMB_ENDPOINT_UPDATEPROFILE', OMB_VERSION . '/updateProfile'); -define('OMB_ENDPOINT_POSTNOTICE', OMB_VERSION . '/postNotice'); - -/** - * The OAuth constants. - */ - -define('OAUTH_NAMESPACE', 'http://oauth.net/core/1.0/'); - -define('OAUTH_ENDPOINT_REQUEST', OAUTH_NAMESPACE.'endpoint/request'); -define('OAUTH_ENDPOINT_AUTHORIZE', OAUTH_NAMESPACE.'endpoint/authorize'); -define('OAUTH_ENDPOINT_ACCESS', OAUTH_NAMESPACE.'endpoint/access'); -define('OAUTH_ENDPOINT_RESOURCE', OAUTH_NAMESPACE.'endpoint/resource'); - -define('OAUTH_AUTH_HEADER', OAUTH_NAMESPACE.'parameters/auth-header'); -define('OAUTH_POST_BODY', OAUTH_NAMESPACE.'parameters/post-body'); - -define('OAUTH_HMAC_SHA1', OAUTH_NAMESPACE.'signature/HMAC-SHA1'); - -define('OAUTH_DISCOVERY', 'http://oauth.net/discovery/1.0'); -?> diff --git a/plugins/OMB/extlib/libomb/datastore.php b/plugins/OMB/extlib/libomb/datastore.php deleted file mode 100755 index d67aafcc56..0000000000 --- a/plugins/OMB/extlib/libomb/datastore.php +++ /dev/null @@ -1,212 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -require_once 'OAuth.php'; - -/** - * Data access interface - * - * This interface specifies data access methods libomb needs. It should be - * implemented by libomb users. OMB_Datastore is libomb’s main interface to the - * application’s data. Objects corresponding to this interface are used in - * OMB_Service_Provider and OMB_Service_Consumer. - * - * Note that it’s implemented as a class since OAuthDataStore is as well a - * class, though only declaring methods. - * - * OMB_Datastore extends OAuthDataStore with two OAuth-related methods for token - * revoking and authorizing and all OMB-related methods. - * Refer to OAuth.php for a complete specification of OAuth-related methods. - * - * It is the user’s duty to signal and handle errors. libomb does not check - * return values nor handle exceptions. It is suggested to use exceptions. - * Note that lookup_token and getProfile return null if the requested object - * is not available. This is NOT an error and should not raise an exception. - * Same applies for lookup_nonce which returns a boolean value. These methods - * may nevertheless throw an exception, for example in case of a storage errors. - * - * Most of the parameters passed to these methods are unescaped and unverified - * user input. Therefore they should be handled with extra care to avoid - * security problems like SQL injections. - */ -class OMB_Datastore extends OAuthDataStore -{ - - /********* - * OAUTH * - *********/ - - /** - * Revoke specified OAuth token - * - * Revokes the authorization token specified by $token_key. - * Throws exceptions in case of error. - * - * @param string $token_key The key of the token to be revoked - * - * @access public - */ - public function revoke_token($token_key) - { - throw new Exception(); - } - - /** - * Authorize specified OAuth token - * - * Authorizes the authorization token specified by $token_key. - * Throws exceptions in case of error. - * - * @param string $token_key The key of the token to be authorized - * - * @access public - */ - public function authorize_token($token_key) - { - throw new Exception(); - } - - /********* - * OMB * - *********/ - - /** - * Get profile by identifying URI - * - * Returns an OMB_Profile object representing the OMB profile identified by - * $identifier_uri. - * Returns null if there is no such OMB profile. - * Throws exceptions in case of other error. - * - * @param string $identifier_uri The OMB identifier URI specifying the - * requested profile - * - * @access public - * - * @return OMB_Profile The corresponding profile - */ - public function getProfile($identifier_uri) - { - throw new Exception(); - } - - /** - * Save passed profile - * - * Stores the OMB profile $profile. Overwrites an existing entry. - * Throws exceptions in case of error. - * - * @param OMB_Profile $profile The OMB profile which should be saved - * - * @access public - */ - public function saveProfile($profile) - { - throw new Exception(); - } - - /** - * Save passed notice - * - * Stores the OMB notice $notice. The datastore may change the passed - * notice. This might by necessary for URIs depending on a database key. - * Note that it is the user’s duty to present a mechanism for his - * OMB_Datastore to appropriately change his OMB_Notice. - * Throws exceptions in case of error. - * - * @param OMB_Notice &$notice The OMB notice which should be saved - * - * @access public - */ - public function saveNotice(&$notice) - { - throw new Exception(); - } - - /** - * Get subscriptions of a given profile - * - * Returns an array containing subscription informations for the specified - * profile. Every array entry should in turn be an array with keys - * 'uri´: The identifier URI of the subscriber - * 'token´: The subscribe token - * 'secret´: The secret token - * Throws exceptions in case of error. - * - * @param string $subscribed_user_uri The OMB identifier URI specifying the - * subscribed profile - * - * @access public - * - * @return mixed An array containing the subscriptions or 0 if no - * subscription has been found. - */ - public function getSubscriptions($subscribed_user_uri) - { - throw new Exception(); - } - - /** - * Delete a subscription - * - * Deletes the subscription from $subscriber_uri to $subscribed_user_uri. - * Throws exceptions in case of error. - * - * @param string $subscriber_uri The OMB identifier URI specifying the - * subscribing profile - * - * @param string $subscribed_user_uri The OMB identifier URI specifying the - * subscribed profile - * - * @access public - */ - public function deleteSubscription($subscriber_uri, $subscribed_user_uri) - { - throw new Exception(); - } - - /** - * Save a subscription - * - * Saves the subscription from $subscriber_uri to $subscribed_user_uri. - * Throws exceptions in case of error. - * - * @param string $subscriber_uri The OMB identifier URI specifying - * the subscribing profile - * - * @param string $subscribed_user_uri The OMB identifier URI specifying - * the subscribed profile - * @param OAuthToken $token The access token - * - * @access public - */ - public function saveSubscription($subscriber_uri, $subscribed_user_uri, - $token) - { - throw new Exception(); - } -} -?> diff --git a/plugins/OMB/extlib/libomb/helper.php b/plugins/OMB/extlib/libomb/helper.php deleted file mode 100644 index 08e6e7ab44..0000000000 --- a/plugins/OMB/extlib/libomb/helper.php +++ /dev/null @@ -1,104 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -require_once 'Validate.php'; - -/** - * Helper functions for libomb - * - * This class contains helper functions for libomb. - */ -class OMB_Helper -{ - - /** - * Non-scalar constants - * - * The set of OMB and OAuth Services an OMB Server has to implement. - */ - - public static $OMB_SERVICES = array(OMB_ENDPOINT_UPDATEPROFILE, - OMB_ENDPOINT_POSTNOTICE); - public static $OAUTH_SERVICES = array(OAUTH_ENDPOINT_REQUEST, - OAUTH_ENDPOINT_AUTHORIZE, - OAUTH_ENDPOINT_ACCESS); - - /** - * Validate URL - * - * Basic URL validation. Currently http, https, ftp and gopher are supported - * schemes. - * - * @param string $url The URL which is to be validated. - * - * @return bool Whether URL is valid. - * - * @access public - */ - public static function validateURL($url) - { - return Validate::uri($url, array('allowed_schemes' => array('http', - 'https', 'gopher', 'ftp'))); - } - - /** - * Validate Media type - * - * Basic Media type validation. Checks for valid maintype and correct - * format. - * - * @param string $mediatype The Media type which is to be validated. - * - * @return bool Whether media type is valid. - * - * @access public - */ - public static function validateMediaType($mediatype) - { - return preg_match('/^(\w+)\/([\w\d-+.]+)$/', $mediatype, $subtypes) > 0 - && - in_array(strtolower($subtypes[1]), array('application', 'audio', - 'image', 'message', 'model', 'multipart', 'text', 'video')); - } - - /** - * Remove escaping from request parameters - * - * Neutralise the evil effects of magic_quotes_gpc in the current request. - * This is used before handing a request off to OAuthRequest::from_request. - * Many thanks to Ciaran Gultnieks for this fix. - * - * @access public - */ - public static function removeMagicQuotesFromRequest() - { - if (get_magic_quotes_gpc() === 1) { - $_POST = array_map('stripslashes', $_POST); - $_GET = array_map('stripslashes', $_GET); - } - } -} -?> diff --git a/plugins/OMB/extlib/libomb/invalidparameterexception.php b/plugins/OMB/extlib/libomb/invalidparameterexception.php deleted file mode 100755 index d95c7022cb..0000000000 --- a/plugins/OMB/extlib/libomb/invalidparameterexception.php +++ /dev/null @@ -1,52 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -/** - * Exception stating that a passed parameter is invalid - * - * This exception is raised when a parameter does not obey the OMB standard. - */ -class OMB_InvalidParameterException extends Exception -{ - /** - * Constructor - * - * Creates a new exception based on a parameter name, value, and object - * type. - * - * @param string $value The wrong value passed - * @param string $type The object type the parameter belongs to; - * Currently OMB uses profiles and notices - * @param string $parameter The name of the parameter the wrong value has - * been passed for - */ - public function __construct($value, $type, $parameter) - { - parent::__construct("Invalid value ‘${value}’ for parameter " . - "‘${parameter}’ in $type"); - } -} -?> diff --git a/plugins/OMB/extlib/libomb/invalidyadisexception.php b/plugins/OMB/extlib/libomb/invalidyadisexception.php deleted file mode 100755 index dc61a13ad4..0000000000 --- a/plugins/OMB/extlib/libomb/invalidyadisexception.php +++ /dev/null @@ -1,37 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -/** - * Exception stating that a requested url does not resolve to a valid yadis - * - * This exception is raised when OMB_Service is not able to discover a valid - * yadis location with XRDS. - */ -class OMB_InvalidYadisException extends Exception -{ - -} -?> diff --git a/plugins/OMB/extlib/libomb/notice.php b/plugins/OMB/extlib/libomb/notice.php deleted file mode 100755 index 4963597b2e..0000000000 --- a/plugins/OMB/extlib/libomb/notice.php +++ /dev/null @@ -1,294 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -require_once 'invalidparameterexception.php'; -require_once 'Validate.php'; -require_once 'helper.php'; - -/** - * OMB Notice representation - * - * This class represents an OMB notice. - * - * Do not call the setters with null values. Instead, if you want to delete a - * field, pass an empty string. The getters will return null for empty fields. - */ -class OMB_Notice -{ - protected $author; - protected $uri; - protected $content; - protected $url; - protected $license_url; /* url is an own addition for clarification. */ - protected $seealso_url; /* url is an own addition for clarification. */ - protected $seealso_disposition; - protected $seealso_mediatype; - protected $seealso_license_url; /* url is an addition for clarification. */ - - /* The notice as OMB param array. Cached and rebuild on usage. - false while outdated. */ - protected $param_array; - - /** - * Constructor for OMB_Notice - * - * Initializes the OMB_Notice object with author, uri and content. - * These parameters are mandatory for postNotice. - * - * @param object $author An OMB_Profile object representing the author of - * the notice. - * @param string $uri The notice URI as defined by the OMB. A unique and - * never changing identifier for a notice. - * @param string $content The content of the notice. 140 chars recommended, - * but there is no limit. - * - * @access public - */ - public function __construct($author, $uri, $content) - { - $this->content = $content; - if (is_null($author)) { - throw new OMB_InvalidParameterException('', 'notice', 'omb_listenee'); - } - $this->author = $author; - - if (!Validate::uri($uri)) { - throw new OMB_InvalidParameterException($uri, 'notice', 'omb_notice'); - } - $this->uri = $uri; - - $this->param_array = false; - } - - /** - * Return the notice as array - * - * Returns an array which contains the whole notice as array. The array is - * cached and only rebuilt on changes of the notice. - * Empty optional values are not passed. - * - * @access public - * @return array The notice as parameter array - */ - public function asParameters() - { - if ($this->param_array !== false) { - return $this->param_array; - } - - $this->param_array = array( - 'omb_notice' => $this->uri, - 'omb_notice_content' => $this->content); - - if (!is_null($this->url)) - $this->param_array['omb_notice_url'] = $this->url; - - if (!is_null($this->license_url)) - $this->param_array['omb_notice_license'] = $this->license_url; - - if (!is_null($this->seealso_url)) { - $this->param_array['omb_seealso'] = $this->seealso_url; - - /* This is actually a free interpretation of the OMB standard. We - assume that additional seealso parameters are not of any use if - seealso itself is not set. */ - if (!is_null($this->seealso_disposition)) - $this->param_array['omb_seealso_disposition'] = - $this->seealso_disposition; - - if (!is_null($this->seealso_mediatype)) - $this->param_array['omb_seealso_mediatype'] = - $this->seealso_mediatype; - - if (!is_null($this->seealso_license_url)) - $this->param_array['omb_seealso_license'] = - $this->seealso_license_url; - } - return $this->param_array; - } - - /** - * Build an OMB_Notice object from array - * - * Builds an OMB_Notice object from the passed parameters array. The array - * MUST provide a notice URI and content. The array fields HAVE TO be named - * according to the OMB standard, i. e. omb_notice_* and omb_seealso_*. - * Values are handled as not passed if the corresponding array fields are - * not set or the empty string. - * - * @param object $author An OMB_Profile object representing the author - * of the notice. - * @param string $parameters An array containing the notice parameters. - * - * @access public - * - * @returns OMB_Notice The built OMB_Notice. - */ - public static function fromParameters($author, $parameters) - { - $notice = new OMB_Notice($author, $parameters['omb_notice'], - $parameters['omb_notice_content']); - - if (isset($parameters['omb_notice_url'])) { - $notice->setURL($parameters['omb_notice_url']); - } - - if (isset($parameters['omb_notice_license'])) { - $notice->setLicenseURL($parameters['omb_notice_license']); - } - - if (isset($parameters['omb_seealso'])) { - $notice->setSeealsoURL($parameters['omb_seealso']); - } - - if (isset($parameters['omb_seealso_disposition'])) { - $notice->setSeealsoDisposition($parameters['omb_seealso_disposition']); - } - - if (isset($parameters['omb_seealso_mediatype'])) { - $notice->setSeealsoMediatype($parameters['omb_seealso_mediatype']); - } - - if (isset($parameters['omb_seealso_license'])) { - $notice->setSeealsoLicenseURL($parameters['omb_seealso_license']); - } - return $notice; - } - - public function getAuthor() - { - return $this->author; - } - - public function getIdentifierURI() - { - return $this->uri; - } - - public function getContent() - { - return $this->content; - } - - public function getURL() - { - return $this->url; - } - - public function getLicenseURL() - { - return $this->license_url; - } - - public function getSeealsoURL() - { - return $this->seealso_url; - } - - public function getSeealsoDisposition() - { - return $this->seealso_disposition; - } - - public function getSeealsoMediatype() - { - return $this->seealso_mediatype; - } - - public function getSeealsoLicenseURL() - { - return $this->seealso_license_url; - } - - public function setURL($url) - { - $this->setVal('notice_url', $url, 'OMB_Helper::validateURL', 'url'); - } - - public function setLicenseURL($license_url) - { - $this->setVal('license', $license_url, 'OMB_Helper::validateURL', - 'license_url'); - } - - public function setSeealsoURL($seealso_url) - { - $this->setVal('seealso', $seealso_url, 'OMB_Helper::validateURL', - 'seealso_url'); - } - - public function setSeealsoDisposition($seealso_disposition) - { - $this->setVal('seealso_disposition', $seealso_disposition, - 'OMB_Notice::validateDisposition'); - } - - protected static function validateDisposition($str) - { - return in_array($str, array('link', 'inline')); - } - - public function setSeealsoMediatype($seealso_mediatype) - { - $this->setVal('seealso_mediatype', $seealso_mediatype, - 'OMB_Helper::validateMediaType'); - } - - public function setSeealsoLicenseURL($seealso_license_url) - { - $this->setVal('seealso_license', $seealso_license_url, - 'OMB_Helper::validateURL', 'seealso_license_url'); - } - - /** - * Set a value - * - * Updates a value specified by a parameter name and the new value. - * - * @param string $param The parameter name according to OMB - * @param string $value The new value - * @param callback $validator A validator function for the parameter - * @param string $field The name of the field in OMB_Notice - * @param bool $force Whether null values should be checked as well - */ - protected function setVal($param, $value, $validator, $field = null, - $force = false) - { - if (is_null($field)) { - $field = $param; - } - if ($value === '' && !$force) { - $value = null; - } elseif (!call_user_func($validator, $value)) { - throw new OMB_InvalidParameterException($value, 'notice', $param); - } - if ($this->$field !== $value) { - $this->$field = $value; - $this->param_array = false; - } - } -} -?> diff --git a/plugins/OMB/extlib/libomb/omb_yadis_xrds.php b/plugins/OMB/extlib/libomb/omb_yadis_xrds.php deleted file mode 100755 index a05477c103..0000000000 --- a/plugins/OMB/extlib/libomb/omb_yadis_xrds.php +++ /dev/null @@ -1,209 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -require_once 'Auth/Yadis/Yadis.php'; -require_once 'unsupportedserviceexception.php'; -require_once 'invalidyadisexception.php'; - -/** - * OMB XRDS representation - * - * This class represents a Yadis XRDS file for OMB. It adds some useful methods to - * Auth_Yadis_XRDS. - */ -class OMB_Yadis_XRDS extends Auth_Yadis_XRDS -{ - - protected $fetcher; - - /** - * Create an instance from URL - * - * Constructs an OMB_Yadis_XRDS object from a given URL. A full Yadis - * discovery is performed on the URL and the XRDS is parsed. - * Throws an OMB_InvalidYadisException when no Yadis is discovered or the - * detected XRDS file is broken. - * - * @param string $url The URL on which Yadis discovery - * should be performed on - * @param Auth_Yadis_HTTPFetcher $fetcher A fetcher used to get HTTP - * resources - * - * @access public - * - * @return OMB_Yadis_XRDS The initialized object representing the given - * resource - */ - public static function fromYadisURL($url, $fetcher) - { - /* Perform a Yadis discovery. */ - $yadis = Auth_Yadis_Yadis::discover($url, $fetcher); - if ($yadis->failed) { - throw new OMB_InvalidYadisException($url); - } - - /* Parse the XRDS file. */ - $xrds = OMB_Yadis_XRDS::parseXRDS($yadis->response_text); - if ($xrds === null) { - throw new OMB_InvalidYadisException($url); - } - $xrds->fetcher = $fetcher; - return $xrds; - } - - /** - * Get a specific service - * - * Returns the Auth_Yadis_Service object corresponding to the given service - * URI. - * Throws an OMB_UnsupportedServiceException if the service is not - * available. - * - * @param string $service URI specifier of the requested service - * - * @access public - * - * @return Auth_Yadis_Service The object representing the requested service - */ - public function getService($service) - { - $match = $this->services(array(create_function('$s', - "return in_array('$service', \$s->getTypes());"))); - if ($match === array()) { - throw new OMB_UnsupportedServiceException($service); - } - return $match[0]; - } - - /** - * Get a specific XRD - * - * Returns the OMB_Yadis_XRDS object corresponding to the given URI. - * Throws an OMB_UnsupportedServiceException if the XRD is not available. - * Note that getXRD tries to resolve external XRD parts as well. - * - * @param string $uri URI specifier of the requested XRD - * - * @access public - * - * @return OMB_Yadis_XRDS The object representing the requested XRD - */ - public function getXRD($uri) - { - $nexthash = strpos($uri, '#'); - if ($nexthash === false) { - throw new OMB_InvalidYadisException("‘$uri’ does not specify a " . - 'valid XML node.'); - } - - if ($nexthash > 0) { - $cururi = substr($uri, 0, $nexthash); - $nexturi = substr($uri, $nexthash); - return OMB_Yadis_XRDS::fromYadisURL($cururi, $this->fetcher) - ->getXRD($nexturi); - } - - $id = substr($uri, 1); - foreach ($this->allXrdNodes as $node) { - $attrs = $this->parser->attributes($node); - if (array_key_exists('xml:id', $attrs) && $attrs['xml:id'] == $id) { - /* Trick the constructor into thinking this is the only node. */ - $bogus_nodes = array($node); - return new OMB_Yadis_XRDS($this->parser, $bogus_nodes); - } - } - throw new OMB_UnsupportedServiceException($uri); - } - - /** - * Parse an XML string containing a XRDS document - * - * Parses an XML string (XRDS document) and returns either an - * Auth_Yadis_XRDS object or null, depending on whether the XRDS XML is - * valid. - * This method is just copy and paste from the parent class to select the - * correct constructor. - * - * @param string $xml_string An XRDS XML string - * @param array $extra_ns_map Additional namespace declarations - * - * @access public - * - * @return mixed An instance of OMB_Yadis_XRDS or null, - * depending on the validity of $xml_string - */ - public static function parseXRDS($xml_string, $extra_ns_map = null) - { - $_null = null; - - if (!$xml_string) { - return $_null; - } - - $parser = Auth_Yadis_getXMLParser(); - - $ns_map = Auth_Yadis_getNSMap(); - - if ($extra_ns_map && is_array($extra_ns_map)) { - $ns_map = array_merge($ns_map, $extra_ns_map); - } - - if (!($parser && $parser->init($xml_string, $ns_map))) { - return $_null; - } - - // Try to get root element. - $root = $parser->evalXPath('/xrds:XRDS[1]'); - if (!$root) { - return $_null; - } - - if (is_array($root)) { - $root = $root[0]; - } - - $attrs = $parser->attributes($root); - - if (array_key_exists('xmlns:xrd', $attrs) && - $attrs['xmlns:xrd'] != Auth_Yadis_XMLNS_XRDS) { - return $_null; - } else if (array_key_exists('xmlns', $attrs) && - preg_match('/xri/', $attrs['xmlns']) && - $attrs['xmlns'] != Auth_Yadis_XMLNS_XRD_2_0) { - return $_null; - } - - // Get the last XRD node. - $xrd_nodes = $parser->evalXPath('/xrds:XRDS[1]/xrd:XRD'); - - if (!$xrd_nodes) { - return $_null; - } - - $xrds = new OMB_Yadis_XRDS($parser, $xrd_nodes); - return $xrds; - } -} diff --git a/plugins/OMB/extlib/libomb/plain_xrds_writer.php b/plugins/OMB/extlib/libomb/plain_xrds_writer.php deleted file mode 100755 index ba1027b611..0000000000 --- a/plugins/OMB/extlib/libomb/plain_xrds_writer.php +++ /dev/null @@ -1,150 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -require_once 'xrds_writer.php'; - -/** - * Write OMB-specific XRDS using XMLWriter - * - * This class writes the XRDS file announcing the OMB server. It uses XMLWriter. - * An instance of OMB_Plain_XRDS_Writer should be passed to - * OMB_Service_Provider->writeXRDS. - */ -class OMB_Plain_XRDS_Writer implements OMB_XRDS_Writer -{ - /** - * Write XRDS using XMLWriter - * - * Outputs a XRDS document specifying an OMB service. - * - * @param OMB_profile $user The target user for the OMB service - * @param OMB_XRDS_Mapper $mapper An OMB_XRDS_Mapper providing endpoint URLs - */ - public function writeXRDS($user, $mapper) - { - header('Content-Type: application/xrds+xml'); - $xw = new XMLWriter(); - $xw->openURI('php://output'); - $xw->setIndent(true); - - $xw->startDocument('1.0', 'UTF-8'); - $this->_writeFullElement($xw, 'XRDS', array('xmlns' => 'xri://$xrds'), array( - array('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', - 'xml:id' => 'oauth', - 'xmlns:simple' => 'http://xrds-simple.net/core/1.0', - 'version' => '2.0'), array( - array('Type', null, 'xri://$xrds*simple'), - array('Service', null, array( - array('Type', null, OAUTH_ENDPOINT_REQUEST), - array('URI', null, $mapper->getURL(OAUTH_ENDPOINT_REQUEST)), - array('Type', null, OAUTH_AUTH_HEADER), - array('Type', null, OAUTH_POST_BODY), - array('Type', null, OAUTH_HMAC_SHA1), - array('LocalID', null, $user->getIdentifierURI()) - )), - array('Service', null, array( - array('Type', null, OAUTH_ENDPOINT_AUTHORIZE), - array('URI', null, $mapper->getURL(OAUTH_ENDPOINT_AUTHORIZE)), - array('Type', null, OAUTH_AUTH_HEADER), - array('Type', null, OAUTH_POST_BODY), - array('Type', null, OAUTH_HMAC_SHA1) - )), - array('Service', null, array( - array('Type', null, OAUTH_ENDPOINT_ACCESS), - array('URI', null, $mapper->getURL(OAUTH_ENDPOINT_ACCESS)), - array('Type', null, OAUTH_AUTH_HEADER), - array('Type', null, OAUTH_POST_BODY), - array('Type', null, OAUTH_HMAC_SHA1) - )), - array('Service', null, array( - array('Type', null, OAUTH_ENDPOINT_RESOURCE), - array('Type', null, OAUTH_AUTH_HEADER), - array('Type', null, OAUTH_POST_BODY), - array('Type', null, OAUTH_HMAC_SHA1) - )) - )), - array('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', - 'xml:id' => 'omb', - 'xmlns:simple' => 'http://xrds-simple.net/core/1.0', - 'version' => '2.0'), array( - array('Type', null, 'xri://$xrds*simple'), - array('Service', null, array( - array('Type', null, OMB_ENDPOINT_POSTNOTICE), - array('URI', null, $mapper->getURL(OMB_ENDPOINT_POSTNOTICE)) - )), - array('Service', null, array( - array('Type', null, OMB_ENDPOINT_UPDATEPROFILE), - array('URI', null, $mapper->getURL(OMB_ENDPOINT_UPDATEPROFILE)) - )) - )), - array('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', - 'version' => '2.0'), array( - array('Type', null, 'xri://$xrds*simple'), - array('Service', null, array( - array('Type', null, OAUTH_DISCOVERY), - array('URI', null, '#oauth') - )), - array('Service', null, array( - array('Type', null, OMB_VERSION), - array('URI', null, '#omb') - )) - )))); - $xw->endDocument(); - $xw->flush(); - } - - /** - * Write a complex XML element - * - * Outputs a XML element with attributes and content. - * - * @param XMLWriter $xw The XMLWriter used to output the element - * @param string $tag The tag name - * @param array|null $attributes A map of XML attributes - * @param array|string $content The content of the element; either an - * array of child nodes each specified by a - * three entry-array ($tag, $attributes, - * $content) or a string - */ - private function _writeFullElement($xw, $tag, $attributes, $content) - { - $xw->startElement($tag); - if (!is_null($attributes)) { - foreach ($attributes as $name => $value) { - $xw->writeAttribute($name, $value); - } - } - if (is_array($content)) { - foreach ($content as $val) { - $this->_writeFullElement($xw, $val[0], $val[1], $val[2]); - } - } else { - $xw->text($content); - } - $xw->fullEndElement(); - } -} -?> diff --git a/plugins/OMB/extlib/libomb/profile.php b/plugins/OMB/extlib/libomb/profile.php deleted file mode 100755 index d732e10d7d..0000000000 --- a/plugins/OMB/extlib/libomb/profile.php +++ /dev/null @@ -1,345 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -require_once 'invalidparameterexception.php'; -require_once 'Validate.php'; -require_once 'helper.php'; - -/** - * OMB profile representation - * - * This class represents an OMB profile. - * - * Do not call the setters with null values. Instead, if you want to delete a - * field, pass an empty string. The getters will return null for empty fields. - */ -class OMB_Profile -{ - protected $identifier_uri; - protected $profile_url; - protected $nickname; - protected $license_url; - protected $fullname; - protected $homepage; - protected $bio; - protected $location; - protected $avatar_url; - - /* The profile as OMB param array. Cached and rebuild on usage. - false while outdated. */ - protected $param_array; - - /** - * Constructor for OMB_Profile - * - * Initializes the OMB_Profile object with an identifier uri. - * - * @param string $identifier_uri The profile URI as defined by the OMB; - * A unique and never changing identifier for - * a profile - * - * @access public - */ - public function __construct($identifier_uri) - { - if (!Validate::uri($identifier_uri)) { - throw new OMB_InvalidParameterException($identifier_uri, 'profile', - 'omb_listenee or omb_listener'); - } - $this->identifier_uri = $identifier_uri; - $this->param_array = false; - } - - /** - * Return the profile as array - * - * Returns an array which contains the whole profile as array. - * The array is cached and only rebuilt on changes of the profile. - * - * @param string $prefix The common prefix to the key for all parameters - * @param bool $force_all Specifies whether empty fields should be added - * to the array as well; This is necessary to - * clear fields via updateProfile - * - * @access public - * - * @return array The profile as parameter array - */ - public function asParameters($prefix, $force_all = false) - { - if ($this->param_array === false) { - $this->param_array = array('' => $this->identifier_uri); - - if ($force_all || !is_null($this->profile_url)) { - $this->param_array['_profile'] = $this->profile_url; - } - - if ($force_all || !is_null($this->homepage)) { - $this->param_array['_homepage'] = $this->homepage; - } - - if ($force_all || !is_null($this->nickname)) { - $this->param_array['_nickname'] = $this->nickname; - } - - if ($force_all || !is_null($this->license_url)) { - $this->param_array['_license'] = $this->license_url; - } - - if ($force_all || !is_null($this->fullname)) { - $this->param_array['_fullname'] = $this->fullname; - } - - if ($force_all || !is_null($this->bio)) { - $this->param_array['_bio'] = $this->bio; - } - - if ($force_all || !is_null($this->location)) { - $this->param_array['_location'] = $this->location; - } - - if ($force_all || !is_null($this->avatar_url)) { - $this->param_array['_avatar'] = $this->avatar_url; - } - - } - $ret = array(); - foreach ($this->param_array as $k => $v) { - $ret[$prefix . $k] = $v; - } - return $ret; - } - - /** - * Build an OMB_Profile object from array - * - * Builds an OMB_Profile object from the passed parameters array. The - * array MUST provide a profile URI. The array fields HAVE TO be named - * according to the OMB standard. The prefix (omb_listener or omb_listenee) - * is passed as a parameter. - * - * @param string $parameters An array containing the profile parameters - * @param string $prefix The common prefix of the profile parameter keys - * - * @access public - * - * @returns OMB_Profile The built OMB_Profile - */ - public static function fromParameters($parameters, $prefix) - { - if (!isset($parameters[$prefix])) { - throw new OMB_InvalidParameterException('', 'profile', $prefix); - } - - $profile = new OMB_Profile($parameters[$prefix]); - $profile->updateFromParameters($parameters, $prefix); - return $profile; - } - - /** - * Update from array - * - * Updates from the passed parameters array. The array does not have to - * provide a profile URI. The array fields HAVE TO be named according to the - * OMB standard. The prefix (omb_listener or omb_listenee) is passed as a - * parameter. - * - * @param string $parameters An array containing the profile parameters - * @param string $prefix The common prefix of the profile parameter keys - * - * @access public - */ - public function updateFromParameters($parameters, $prefix) - { - if (isset($parameters[$prefix.'_profile'])) { - $this->setProfileURL($parameters[$prefix.'_profile']); - } - - if (isset($parameters[$prefix.'_license'])) { - $this->setLicenseURL($parameters[$prefix.'_license']); - } - - if (isset($parameters[$prefix.'_nickname'])) { - $this->setNickname($parameters[$prefix.'_nickname']); - } - - if (isset($parameters[$prefix.'_fullname'])) { - $this->setFullname($parameters[$prefix.'_fullname']); - } - - if (isset($parameters[$prefix.'_homepage'])) { - $this->setHomepage($parameters[$prefix.'_homepage']); - } - - if (isset($parameters[$prefix.'_bio'])) { - $this->setBio($parameters[$prefix.'_bio']); - } - - if (isset($parameters[$prefix.'_location'])) { - $this->setLocation($parameters[$prefix.'_location']); - } - - if (isset($parameters[$prefix.'_avatar'])) { - $this->setAvatarURL($parameters[$prefix.'_avatar']); - } - } - - public function getIdentifierURI() - { - return $this->identifier_uri; - } - - public function getProfileURL() - { - return $this->profile_url; - } - - public function getHomepage() - { - return $this->homepage; - } - - public function getNickname() - { - return $this->nickname; - } - - public function getLicenseURL() - { - return $this->license_url; - } - - public function getFullname() - { - return $this->fullname; - } - - public function getBio() - { - return $this->bio; - } - - public function getLocation() - { - return $this->location; - } - - public function getAvatarURL() - { - return $this->avatar_url; - } - - public function setProfileURL($profile_url) - { - $this->setVal('profile', $profile_url, 'OMB_Helper::validateURL', - 'profile_url'); - } - - public function setNickname($nickname) - { - $this->setVal('nickname', $nickname, 'OMB_Profile::validateNickname', - 'nickname', true); - } - - public function setLicenseURL($license_url) - { - $this->setVal('license', $license_url, 'OMB_Helper::validateURL', - 'license_url'); - } - - public function setFullname($fullname) - { - $this->setVal('fullname', $fullname, 'OMB_Profile::validate255'); - } - - public function setHomepage($homepage) - { - $this->setVal('homepage', $homepage, 'OMB_Helper::validateURL'); - } - - public function setBio($bio) - { - $this->setVal('bio', $bio, 'OMB_Profile::validate140'); - } - - public function setLocation($location) - { - $this->setVal('location', $location, 'OMB_Profile::validate255'); - } - - public function setAvatarURL($avatar_url) - { - $this->setVal('avatar', $avatar_url, 'OMB_Helper::validateURL', - 'avatar_url'); - } - - protected static function validate255($str) - { - return Validate::string($str, array('max_length' => 255)); - } - - protected static function validate140($str) - { - return Validate::string($str, array('max_length' => 140)); - } - - protected static function validateNickname($str) - { - return Validate::string($str, - array('min_length' => 1, - 'max_length' => 64, - 'format' => VALIDATE_NUM . VALIDATE_ALPHA)); - } - - /** - * Set a value - * - * Updates a value specified by a parameter name and the new value. - * - * @param string $param The parameter name according to OMB - * @param string $value The new value - * @param callback $validator A validator function for the parameter - * @param string $field The name of the field in OMB_Profile - * @param bool $force Whether null values should be checked as well - */ - protected function setVal($param, $value, $validator, $field = null, - $force = false) - { - if (is_null($field)) { - $field = $param; - } - if ($value === '' && !$force) { - $value = null; - } elseif (!call_user_func($validator, $value)) { - throw new OMB_InvalidParameterException($value, 'profile', $param); - } - if ($this->$field !== $value) { - $this->$field = $value; - $this->param_array = false; - } - } -} -?> diff --git a/plugins/OMB/extlib/libomb/remoteserviceexception.php b/plugins/OMB/extlib/libomb/remoteserviceexception.php deleted file mode 100755 index f8341e82b6..0000000000 --- a/plugins/OMB/extlib/libomb/remoteserviceexception.php +++ /dev/null @@ -1,73 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -/** - * Exception stating that the remote service had a failure - * - * This exception is raised when a remote service failed to return a valid - * response to a request or send a valid request. - */ -class OMB_RemoteServiceException extends Exception -{ - /** - * Create exception from Yadis response - * - * Creates an exception from a passed yadis result. - * - * @param string $request_uri The target URI for the failed - * request - * @param Auth_Yadis_HTTPResponse $result The result of the failed - * request - * - * @return OMB_RemoteServiceException A new exception - */ - public static function fromYadis($request_uri, $result) - { - if ($result->status == 200) { - $err = 'Got wrong response ' . $result->body; - } else { - $err = 'Got error code ' . $result->status . ' with response ' . - $result->body; - } - return OMB_RemoteServiceException::forRequest($request_uri, $err); - } - - /** - * Create exception for a call to a resource - * - * Creates an exception for a given error message and target URI. - * - * @param string $action_uri The target URI for the failed request - * @param string $failure An error message - * - * @return OMB_RemoteServiceException A new exception - */ - public static function forRequest($action_uri, $failure) - { - return new OMB_RemoteServiceException("Handler for $action_uri: $failure"); - } -} -?> diff --git a/plugins/OMB/extlib/libomb/service_consumer.php b/plugins/OMB/extlib/libomb/service_consumer.php deleted file mode 100755 index 33ebccc654..0000000000 --- a/plugins/OMB/extlib/libomb/service_consumer.php +++ /dev/null @@ -1,461 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -require_once 'Validate.php'; -require_once 'Auth/Yadis/Yadis.php'; -require_once 'OAuth.php'; -require_once 'constants.php'; -require_once 'helper.php'; -require_once 'omb_yadis_xrds.php'; -require_once 'profile.php'; -require_once 'remoteserviceexception.php'; -require_once 'unsupportedserviceexception.php'; - -/** - * OMB service representation - * - * This class represents a complete remote OMB service. It provides discovery - * and execution of the service’s methods. - */ -class OMB_Service_Consumer -{ - protected $url; /* The service URL */ - protected $services; /* An array of strings mapping service URI to - service URL */ - - protected $token; /* An OAuthToken */ - - protected $listener_uri; /* The URI identifying the listener, i. e. the - remote user. */ - - protected $listenee_uri; /* The URI identifying the listenee, i. e. the - local user during an auth request. */ - - /** - * According to OAuth Core 1.0, an user authorization request is no - * full-blown OAuth request. nonce, timestamp, consumer_key and signature - * are not needed in this step. See http://laconi.ca/trac/ticket/827 for - * more informations. - * - * Since Laconica up to version 0.7.2 performs a full OAuth request check, a - * correct request would fail. - */ - public $performLegacyAuthRequest = true; - - /* Helper stuff we are going to need. */ - protected $fetcher; - protected $oauth_consumer; - protected $datastore; - - /** - * Constructor for OMB_Service_Consumer - * - * Initializes an OMB_Service_Consumer object representing the OMB service - * specified by $service_url. Performs a complete service discovery using - * Yadis. - * Throws OMB_UnsupportedServiceException if XRDS file does not specify a - * complete OMB service. - * - * @param string $service_url The URL of the service - * @param string $consumer_url An URL representing the consumer - * @param OMB_Datastore $datastore An instance of a class implementing - * OMB_Datastore - * - * @access public - */ - public function __construct ($service_url, $consumer_url, $datastore) - { - $this->url = $service_url; - $this->fetcher = Auth_Yadis_Yadis::getHTTPFetcher(); - $this->datastore = $datastore; - $this->oauth_consumer = new OAuthConsumer($consumer_url, ''); - - $xrds = OMB_Yadis_XRDS::fromYadisURL($service_url, $this->fetcher); - - /* Detect our services. This performs a validation as well, since - getService und getXRD throw exceptions on failure. */ - $this->services = array(); - - foreach (array(OAUTH_DISCOVERY => OMB_Helper::$OAUTH_SERVICES, - OMB_VERSION => OMB_Helper::$OMB_SERVICES) - as $service_root => $targetservices) { - $uris = $xrds->getService($service_root)->getURIs(); - $xrd = $xrds->getXRD($uris[0]); - foreach ($targetservices as $targetservice) { - $yadis_service = $xrd->getService($targetservice); - if ($targetservice == OAUTH_ENDPOINT_REQUEST) { - $localid = - $yadis_service->getElements('xrd:LocalID'); - $this->listener_uri = - $yadis_service->parser->content($localid[0]); - } - $uris = $yadis_service->getURIs(); - $this->services[$targetservice] = $uris[0]; - } - } - } - - /** - * Get the handler URI for a service - * - * Returns the URI the remote web service has specified for the given - * service. - * - * @param string $service The URI identifying the service - * - * @access public - * - * @return string The service handler URI - */ - public function getServiceURI($service) - { - return $this->services[$service]; - } - - /** - * Get the remote user’s URI - * - * Returns the URI of the remote user, i. e. the listener. - * - * @access public - * - * @return string The remote user’s URI - */ - public function getRemoteUserURI() - { - return $this->listener_uri; - } - - /** - * Get the listenee’s URI - * - * Returns the URI of the user being subscribed to, i. e. the local user. - * - * @access public - * - * @return string The local user’s URI - */ - public function getListeneeURI() - { - return $this->listenee_uri; - } - - /** - * Request a request token - * - * Performs a token request on the service. Returns an OAuthToken on success. - * Throws an exception if the request fails. - * - * @access public - * - * @return OAuthToken An unauthorized request token - */ - public function requestToken() - { - /* Set the token to null just in case the user called setToken. */ - $this->token = null; - - $result = $this->performAction(OAUTH_ENDPOINT_REQUEST, - array('omb_listener' => $this->listener_uri)); - if ($result->status != 200) { - throw OMB_RemoteServiceException::fromYadis(OAUTH_ENDPOINT_REQUEST, - $result); - } - parse_str($result->body, $return); - if (!isset($return['oauth_token']) || - !isset($return['oauth_token_secret'])) { - throw OMB_RemoteServiceException::fromYadis(OAUTH_ENDPOINT_REQUEST, - $result); - } - $this->setToken($return['oauth_token'], $return['oauth_token_secret']); - return $this->token; - } - - /** - * Request authorization - * - * Returns an URL which equals to an authorization request. The end user - * should be redirected to this location to perform authorization. - * The $finish_url should be a local resource which invokes - * OMB_Consumer::finishAuthorization on request. - * - * @param OMB_Profile $profile An OMB_Profile object representing the - * soon-to-be subscribed (i. e. local) user - * @param string $finish_url Target location after successful - * authorization - * - * @access public - * - * @return string An URL representing an authorization request - */ - public function requestAuthorization($profile, $finish_url) - { - if ($this->performLegacyAuthRequest) { - $params = $profile->asParameters('omb_listenee', - false); - $params['omb_listener'] = $this->listener_uri; - $params['oauth_callback'] = $finish_url; - - $url = $this->prepareAction(OAUTH_ENDPOINT_AUTHORIZE, $params, - 'GET')->to_url(); - } else { - $params = array('oauth_callback' => $finish_url, - 'oauth_token' => $this->token->key, - 'omb_version' => OMB_VERSION, - 'omb_listener' => $this->listener_uri); - - $params = array_merge($profile->asParameters('omb_listenee', false), - $params); - - /* Build result URL. */ - $url = $this->services[OAUTH_ENDPOINT_AUTHORIZE] . - (strrpos($url, '?') === false ? '?' : '&'); - foreach ($params as $k => $v) { - $url .= OAuthUtil::urlencode_rfc3986($k) . '=' . - OAuthUtil::urlencode_rfc3986($v) . '&'; - } - } - - $this->listenee_uri = $profile->getIdentifierURI(); - - return $url; - } - - /** - * Finish authorization - * - * Finish the subscription process by converting the received and authorized - * request token into an access token. After that, the subscriber’s profile - * and the subscription are stored in the database. - * Expects an OAuthRequest in query parameters. - * Throws exceptions on failure. - * - * @access public - */ - public function finishAuthorization() - { - OMB_Helper::removeMagicQuotesFromRequest(); - $req = OAuthRequest::from_request(); - if ($req->get_parameter('oauth_token') != $this->token->key) { - /* That’s not the token I wanted to get authorized. */ - throw new OAuthException('The authorized token does not equal ' . - 'the submitted token.'); - } - - if ($req->get_parameter('omb_version') != OMB_VERSION) { - throw new OMB_RemoteServiceException('The remote service uses an ' . - 'unsupported OMB version'); - } - - /* Construct the profile to validate it. */ - - /* Fix OMB bug. Listener URI is not passed. */ - if ($_SERVER['REQUEST_METHOD'] == 'POST') { - $params = $_POST; - } else { - $params = $_GET; - } - $params['omb_listener'] = $this->listener_uri; - - $listener = OMB_Profile::fromParameters($params, 'omb_listener'); - - /* Ask the remote service to convert the authorized request token into - an access token. */ - - $result = $this->performAction(OAUTH_ENDPOINT_ACCESS, array()); - if ($result->status != 200) { - throw new OAuthException('Could not get access token'); - } - - parse_str($result->body, $return); - if (!isset($return['oauth_token']) || - !isset($return['oauth_token_secret'])) { - throw new OAuthException('Could not get access token'); - } - $this->setToken($return['oauth_token'], $return['oauth_token_secret']); - - /* Subscription is finished and valid. Now store the new subscriber and - the subscription in the database. */ - - $this->datastore->saveProfile($listener); - $this->datastore->saveSubscription($this->listener_uri, - $this->listenee_uri, - $this->token); - } - - /** - * Return the URI identifying the listener - * - * Returns the URI for the OMB user who tries to subscribe or already has - * subscribed our user. This method is a workaround for a serious OMB flaw: - * The Listener URI is not passed in the finishauthorization call. - * - * @access public - * - * @return string the listener’s URI - */ - public function getListenerURI() - { - return $this->listener_uri; - } - - /** - * Inform the service about a profile update - * - * Sends an updated profile to the service. - * - * @param OMB_Profile $profile The profile that has changed - * - * @access public - */ - public function updateProfile($profile) - { - $params = $profile->asParameters('omb_listenee', true); - $this->performOMBAction(OMB_ENDPOINT_UPDATEPROFILE, $params, - $profile->getIdentifierURI()); - } - - /** - * Inform the service about a new notice - * - * Sends a notice to the service. - * - * @param OMB_Notice $notice The notice - * - * @access public - */ - public function postNotice($notice) - { - $params = $notice->asParameters(); - $params['omb_listenee'] = $notice->getAuthor()->getIdentifierURI(); - $this->performOMBAction(OMB_ENDPOINT_POSTNOTICE, $params, - $params['omb_listenee']); - } - - /** - * Set the token member variable - * - * Initializes the token based on given token and secret token. - * - * @param string $token The token - * @param string $secret The secret token - * - * @access public - */ - public function setToken($token, $secret) - { - $this->token = new OAuthToken($token, $secret); - } - - /** - * Prepare an OAuthRequest object - * - * Creates an OAuthRequest object mapping the request specified by the - * parameters. - * - * @param string $action_uri The URI specifying the target service - * @param array $params Additional parameters for the service call - * @param string $method The HTTP method used to call the service - * ('POST' or 'GET', usually) - * - * @access protected - * - * @return OAuthRequest the prepared request - */ - protected function prepareAction($action_uri, $params, $method) - { - $url = $this->services[$action_uri]; - - $url_params = array(); - parse_str(parse_url($url, PHP_URL_QUERY), $url_params); - - /* Add OMB version. */ - $url_params['omb_version'] = OMB_VERSION; - - /* Add user-defined parameters. */ - $url_params = array_merge($url_params, $params); - - $req = OAuthRequest::from_consumer_and_token($this->oauth_consumer, - $this->token, $method, - $url, $url_params); - - /* Sign the request. */ - $req->sign_request(new OAuthSignatureMethod_HMAC_SHA1(), - $this->oauth_consumer, $this->token); - - return $req; - } - - /** - * Perform a service call - * - * Creates an OAuthRequest object and execute the mapped call as POST - * request. - * - * @param string $action_uri The URI specifying the target service - * @param array $params Additional parameters for the service call - * - * @access protected - * - * @return Auth_Yadis_HTTPResponse The POST request response - */ - protected function performAction($action_uri, $params) - { - $req = $this->prepareAction($action_uri, $params, 'POST'); - - /* Return result page. */ - return $this->fetcher->post($req->get_normalized_http_url(), - $req->to_postdata(), array()); - } - - /** - * Perform an OMB action - * - * Executes an OMB action – as of OMB 0.1, it’s one of updateProfile and - * postNotice. - * - * @param string $action_uri The URI specifying the target service - * @param array $params Additional parameters for the service call - * @param string $listenee_uri The URI identifying the local user for whom - * the action is performed - * - * @access protected - */ - protected function performOMBAction($action_uri, $params, $listenee_uri) - { - $result = $this->performAction($action_uri, $params); - if ($result->status == 403) { - /* The remote user unsubscribed us. */ - $this->datastore->deleteSubscription($this->listener_uri, - $listenee_uri); - } else if ($result->status != 200 || - strpos($result->body, 'omb_version=' . OMB_VERSION) === false) { - /* The server signaled an error or sent an incorrect response. */ - throw OMB_RemoteServiceException::fromYadis($action_uri, $result); - } - } -} -?> diff --git a/plugins/OMB/extlib/libomb/service_provider.php b/plugins/OMB/extlib/libomb/service_provider.php deleted file mode 100755 index 9a1a488a6b..0000000000 --- a/plugins/OMB/extlib/libomb/service_provider.php +++ /dev/null @@ -1,461 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -require_once 'constants.php'; -require_once 'helper.php'; -require_once 'notice.php'; -require_once 'remoteserviceexception.php'; - -/** - * OMB service realization - * - * This class realizes a complete, simple OMB service. - */ -class OMB_Service_Provider -{ - protected $user; /* An OMB_Profile representing the user */ - protected $datastore; /* AN OMB_Datastore */ - - protected $remote_user; /* An OMB_Profile representing the remote user - during the authorization process */ - - protected $oauth_server; /* An OAuthServer; should only be accessed via - getOAuthServer. */ - - /** - * Initialize an OMB_Service_Provider object - * - * Constructs an OMB_Service_Provider instance that provides OMB services - * referring to a particular user. - * - * @param OMB_Profile $user An OMB_Profile; mandatory for XRDS - * output, user auth handling and OMB - * action performing - * @param OMB_Datastore $datastore An OMB_Datastore; mandatory for - * everything but XRDS output - * @param OAuthServer $oauth_server An OAuthServer; used for token writing - * and OMB action handling; will use - * default value if not set - * - * @access public - */ - public function __construct ($user = null, $datastore = null, - $oauth_server = null) - { - $this->user = $user; - $this->datastore = $datastore; - $this->oauth_server = $oauth_server; - } - - /** - * Return the remote user during user authorization - * - * Returns an OMB_Profile representing the remote user during the user - * authorization request. - * - * @return OMB_Profile The remote user - */ - public function getRemoteUser() - { - return $this->remote_user; - } - - /** - * Write a XRDS document - * - * Writes a XRDS document specifying the OMB service. Optionally uses a - * given object of a class implementing OMB_XRDS_Writer for output. Else - * OMB_Plain_XRDS_Writer is used. - * - * @param OMB_XRDS_Mapper $xrds_mapper An object mapping actions to URLs - * @param OMB_XRDS_Writer $xrds_writer Optional; The OMB_XRDS_Writer used to - * write the XRDS document - * - * @access public - * - * @return mixed Depends on the used OMB_XRDS_Writer; OMB_Plain_XRDS_Writer - * returns nothing. - */ - public function writeXRDS($xrds_mapper, $xrds_writer = null) - { - if ($xrds_writer == null) { - require_once 'plain_xrds_writer.php'; - $xrds_writer = new OMB_Plain_XRDS_Writer(); - } - return $xrds_writer->writeXRDS($this->user, $xrds_mapper); - } - - /** - * Echo a request token - * - * Outputs an unauthorized request token for the query found in $_GET or - * $_POST. - * - * @access public - */ - public function writeRequestToken() - { - OMB_Helper::removeMagicQuotesFromRequest(); - echo $this->getOAuthServer()->fetch_request_token( - OAuthRequest::from_request()); - } - - /** - * Handle an user authorization request. - * - * Parses an authorization request. This includes OAuth and OMB - * verification. - * Throws exceptions on failures. Returns an OMB_Profile object representing - * the remote user. - * - * The OMB_Profile passed to the constructor of OMB_Service_Provider should - * not represent the user specified in the authorization request, but the - * one currently logged in to the service. This condition being satisfied, - * handleUserAuth will check whether the listener specified in the request - * is identical to the logged in user. - * - * @access public - * - * @return OMB_Profile The profile of the soon-to-be subscribed, i. e. - * remote user - */ - public function handleUserAuth() - { - OMB_Helper::removeMagicQuotesFromRequest(); - - /* Verify the request token. */ - - $this->token = $this->datastore->lookup_token(null, "request", - $_GET['oauth_token']); - if (is_null($this->token)) { - throw new OAuthException('The given request token has not been ' . - 'issued by this service.'); - } - - /* Verify the OMB part. */ - - if ($_GET['omb_version'] !== OMB_VERSION) { - throw OMB_RemoteServiceException::forRequest(OAUTH_ENDPOINT_AUTHORIZE, - 'Wrong OMB version ' . - $_GET['omb_version']); - } - - if ($_GET['omb_listener'] !== $this->user->getIdentifierURI()) { - throw OMB_RemoteServiceException::forRequest(OAUTH_ENDPOINT_AUTHORIZE, - 'Wrong OMB listener ' . - $_GET['omb_listener']); - } - - foreach (array('omb_listenee', 'omb_listenee_profile', - 'omb_listenee_nickname', 'omb_listenee_license') as $param) { - if (!isset($_GET[$param]) || is_null($_GET[$param])) { - throw OMB_RemoteServiceException::forRequest( - OAUTH_ENDPOINT_AUTHORIZE, - "Required parameter '$param' not found"); - } - } - - /* Store given callback for later use. */ - if (isset($_GET['oauth_callback']) && $_GET['oauth_callback'] !== '') { - $this->callback = $_GET['oauth_callback']; - if (!OMB_Helper::validateURL($this->callback)) { - throw OMB_RemoteServiceException::forRequest( - OAUTH_ENDPOINT_AUTHORIZE, - 'Invalid callback URL specified'); - } - } - $this->remote_user = OMB_Profile::fromParameters($_GET, 'omb_listenee'); - - return $this->remote_user; - } - - /** - * Continue the OAuth dance after user authorization - * - * Performs the appropriate actions after user answered the authorization - * request. - * - * @param bool $accepted Whether the user granted authorization - * - * @access public - * - * @return array A two-component array with the values: - * - callback The callback URL or null if none given - * - token The authorized request token or null if not - * authorized. - */ - public function continueUserAuth($accepted) - { - $callback = $this->callback; - if (!$accepted) { - $this->datastore->revoke_token($this->token->key); - $this->token = null; - - } else { - $this->datastore->authorize_token($this->token->key); - $this->datastore->saveProfile($this->remote_user); - $this->datastore->saveSubscription($this->user->getIdentifierURI(), - $this->remote_user->getIdentifierURI(), - $this->token); - - if (!is_null($this->callback)) { - /* Callback wants to get some informations as well. */ - $params = $this->user->asParameters('omb_listener', false); - - $params['oauth_token'] = $this->token->key; - $params['omb_version'] = OMB_VERSION; - - $callback .= (parse_url($this->callback, PHP_URL_QUERY) ? '&' : '?'); - foreach ($params as $k => $v) { - $callback .= OAuthUtil::urlencode_rfc3986($k) . '=' . - OAuthUtil::urlencode_rfc3986($v) . '&'; - } - } - } - return array($callback, $this->token); - } - - /** - * Echo an access token - * - * Outputs an access token for the query found in $_POST. OMB 0.1 specifies - * that the access token request has to be a POST even if OAuth allows GET - * as well. - * - * @access public - */ - public function writeAccessToken() - { - OMB_Helper::removeMagicQuotesFromRequest(); - echo $this->getOAuthServer()->fetch_access_token( - OAuthRequest::from_request('POST')); - } - - /** - * Handle an updateprofile request - * - * Handles an updateprofile request posted to this service. Updates the - * profile through the OMB_Datastore. - * - * @access public - * - * @return OMB_Profile The updated profile - */ - public function handleUpdateProfile() - { - list($req, $profile) = $this->handleOMBRequest(OMB_ENDPOINT_UPDATEPROFILE); - $profile->updateFromParameters($req->get_parameters(), 'omb_listenee'); - $this->datastore->saveProfile($profile); - $this->finishOMBRequest(); - return $profile; - } - - /** - * Handle a postnotice request - * - * Handles a postnotice request posted to this service. Saves the notice - * through the OMB_Datastore. - * - * @access public - * - * @return OMB_Notice The received notice - */ - public function handlePostNotice() - { - list($req, $profile) = $this->handleOMBRequest(OMB_ENDPOINT_POSTNOTICE); - - $notice = OMB_Notice::fromParameters($profile, $req->get_parameters()); - $this->datastore->saveNotice($notice); - $this->finishOMBRequest(); - - return $notice; - } - - /** - * Handle an OMB request - * - * Performs common OMB request handling. - * - * @param string $uri The URI defining the OMB endpoint being served - * - * @access protected - * - * @return array(OAuthRequest, OMB_Profile) - */ - protected function handleOMBRequest($uri) - { - OMB_Helper::removeMagicQuotesFromRequest(); - $req = OAuthRequest::from_request('POST'); - $listenee = $req->get_parameter('omb_listenee'); - - try { - list($consumer, $token) = $this->getOAuthServer()->verify_request($req); - } catch (OAuthException $e) { - header('HTTP/1.1 403 Forbidden'); - throw OMB_RemoteServiceException::forRequest($uri, - 'Revoked accesstoken for ' . $listenee); - } - - $version = $req->get_parameter('omb_version'); - if ($version !== OMB_VERSION) { - header('HTTP/1.1 400 Bad Request'); - throw OMB_RemoteServiceException::forRequest($uri, - 'Wrong OMB version ' . $version); - } - - $profile = $this->datastore->getProfile($listenee); - if (is_null($profile)) { - header('HTTP/1.1 400 Bad Request'); - throw OMB_RemoteServiceException::forRequest($uri, - 'Unknown remote profile ' . $listenee); - } - - $subscribers = $this->datastore->getSubscriptions($listenee); - if (count($subscribers) === 0) { - header('HTTP/1.1 403 Forbidden'); - throw OMB_RemoteServiceException::forRequest($uri, - 'No subscriber for ' . $listenee); - } - - return array($req, $profile); - } - - /** - * Finishes an OMB request handling - * - * Performs common OMB request handling finishing. - * - * @access protected - */ - protected function finishOMBRequest() - { - header('HTTP/1.1 200 OK'); - header('Content-type: text/plain'); - /* There should be no clutter but the version. */ - echo "omb_version=" . OMB_VERSION; - } - - /** - * Return an OAuthServer - * - * Checks whether the OAuthServer is null. If so, initializes it with a - * default value. Returns the OAuth server. - * - * @access protected - */ - protected function getOAuthServer() - { - if (is_null($this->oauth_server)) { - $this->oauth_server = new OAuthServer($this->datastore); - $this->oauth_server->add_signature_method( - new OAuthSignatureMethod_HMAC_SHA1()); - } - return $this->oauth_server; - } - - /** - * Publish a notice - * - * Posts an OMB notice. This includes storing the notice and posting it to - * subscribed users. - * - * @param OMB_Notice $notice The new notice - * - * @access public - * - * @return array An array mapping subscriber URIs to the exception posting - * to them has raised; Empty array if no exception occured - */ - public function postNotice($notice) - { - $uri = $this->user->getIdentifierURI(); - - /* $notice is passed by reference and may change. */ - $this->datastore->saveNotice($notice); - $subscribers = $this->datastore->getSubscriptions($uri); - - /* No one to post to. */ - if (is_null($subscribers)) { - return array(); - } - - require_once 'service_consumer.php'; - - $err = array(); - foreach ($subscribers as $subscriber) { - try { - $service = new OMB_Service_Consumer($subscriber['uri'], $uri, - $this->datastore); - $service->setToken($subscriber['token'], $subscriber['secret']); - $service->postNotice($notice); - } catch (Exception $e) { - $err[$subscriber['uri']] = $e; - continue; - } - } - return $err; - } - - /** - * Publish a profile update - * - * Posts the current profile as an OMB profile update. This includes - * updating the stored profile and posting it to subscribed users. - * - * @access public - * - * @return array An array mapping subscriber URIs to the exception posting - * to them has raised; Empty array if no exception occured - */ - public function updateProfile() - { - $uri = $this->user->getIdentifierURI(); - - $this->datastore->saveProfile($this->user); - $subscribers = $this->datastore->getSubscriptions($uri); - - /* No one to post to. */ - if (is_null($subscribers)) { - return array(); - } - - require_once 'service_consumer.php'; - - $err = array(); - foreach ($subscribers as $subscriber) { - try { - $service = new OMB_Service_Consumer($subscriber['uri'], $uri, - $this->datastore); - $service->setToken($subscriber['token'], $subscriber['secret']); - $service->updateProfile($this->user); - } catch (Exception $e) { - $err[$subscriber['uri']] = $e; - continue; - } - } - return $err; - } -} diff --git a/plugins/OMB/extlib/libomb/unsupportedserviceexception.php b/plugins/OMB/extlib/libomb/unsupportedserviceexception.php deleted file mode 100755 index be30a1f69b..0000000000 --- a/plugins/OMB/extlib/libomb/unsupportedserviceexception.php +++ /dev/null @@ -1,36 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -/** - * Exception stating that a requested service is not available - * - * This exception is raised when OMB_Service is asked to call a service the - * remote server does not provide. - */ -class OMB_UnsupportedServiceException extends Exception -{ -} -?> diff --git a/plugins/OMB/extlib/libomb/xrds_mapper.php b/plugins/OMB/extlib/libomb/xrds_mapper.php deleted file mode 100755 index 8fbe65249c..0000000000 --- a/plugins/OMB/extlib/libomb/xrds_mapper.php +++ /dev/null @@ -1,47 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -/** - * Map XRDS actions to URLs - * - * This interface specifies classes which write the XRDS file announcing - * the OMB server. An instance of an implementing class should be passed to - * OMB_Service_Provider->writeXRDS. - */ -interface OMB_XRDS_Mapper -{ - /** - * Fetch an URL for a specified action - * - * Returns the action URL for an action specified by the endpoint URI. - * - * @param string $action The endpoint URI - * - * @return string The action URL - */ - public function getURL($action); -} -?> diff --git a/plugins/OMB/extlib/libomb/xrds_writer.php b/plugins/OMB/extlib/libomb/xrds_writer.php deleted file mode 100755 index c7939d60ad..0000000000 --- a/plugins/OMB/extlib/libomb/xrds_writer.php +++ /dev/null @@ -1,46 +0,0 @@ -. - * - * @package OMB - * @author Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - * @version 0.1a-20090828 - * @link http://adrianlang.de/libomb - */ - -/** - * Write OMB-specific XRDS - * - * This interface specifies classes which write the XRDS file announcing - * the OMB server. An instance of an implementing class should be passed to - * OMB_Service_Provider->writeXRDS. - */ -interface OMB_XRDS_Writer -{ - /** - * Write XRDS - * - * Outputs a XRDS document specifying an OMB service. - * - * @param OMB_profile $user The target user for the OMB service - * @param OMB_XRDS_Mapper $mapper An OMB_XRDS_Mapper providing endpoint URLs - */ - public function writeXRDS($user, $mapper); -} -?> diff --git a/plugins/OMB/lib/omb.php b/plugins/OMB/lib/omb.php deleted file mode 100644 index 4731440a31..0000000000 --- a/plugins/OMB/lib/omb.php +++ /dev/null @@ -1,235 +0,0 @@ -. - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } - -$dir = dirname(__FILE__); - -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() -{ - // Don't try to make this static. Leads to issues in - // multi-site setups - Z - return new OAuthConsumer(common_root_url(), ''); -} - -function omb_oauth_server() -{ - static $server = null; - if (is_null($server)) { - $server = new OAuthServer(omb_oauth_datastore()); - $server->add_signature_method(omb_hmac_sha1()); - } - return $server; -} - -function omb_oauth_datastore() -{ - static $store = null; - if (is_null($store)) { - $store = new OMBOAuthDataStore(); - } - return $store; -} - -function omb_hmac_sha1() -{ - static $hmac_method = null; - if (is_null($hmac_method)) { - $hmac_method = new OAuthSignatureMethod_HMAC_SHA1(); - } - return $hmac_method; -} - -function omb_broadcast_notice($notice) -{ - try { - $omb_notice = notice_to_omb_notice($notice); - } catch (Exception $e) { - // @fixme we should clean up or highlight the problem item - common_log(LOG_ERR, 'Invalid OMB outgoing notice for notice ' . $notice->id); - common_log(LOG_ERR, 'Error status '.$e); - return true; - } - - /* Get remote users subscribed to this profile. */ - $rp = new Remote_profile(); - - $rp->query('SELECT remote_profile.*, secret, token ' . - 'FROM subscription JOIN remote_profile ' . - 'ON subscription.subscriber = remote_profile.id ' . - 'WHERE subscription.subscribed = ' . $notice->profile_id . ' '); - - $posted = array(); - - while ($rp->fetch()) { - if (isset($posted[$rp->postnoticeurl])) { - /* We already posted to this url. */ - continue; - } - common_debug('Posting to ' . $rp->postnoticeurl, __FILE__); - - /* Post notice. */ - $service = new StatusNet_OMB_Service_Consumer( - array(OMB_ENDPOINT_POSTNOTICE => $rp->postnoticeurl), - $rp->uri); - try { - $service->setToken($rp->token, $rp->secret); - $service->postNotice($omb_notice); - } catch (Exception $e) { - common_log(LOG_ERR, 'Failed posting to ' . $rp->postnoticeurl); - common_log(LOG_ERR, 'Error status '.$e); - continue; - } - $posted[$rp->postnoticeurl] = true; - - common_debug('Finished to ' . $rp->postnoticeurl, __FILE__); - } - - return true; -} - -function omb_broadcast_profile($profile) -{ - $user = User::getKV('id', $profile->id); - - if (!$user) { - return false; - } - - $profile = $user->getProfile(); - - $omb_profile = profile_to_omb_profile($user->uri, $profile, true); - - /* Get remote users subscribed to this profile. */ - $rp = new Remote_profile(); - - $rp->query('SELECT remote_profile.*, secret, token ' . - 'FROM subscription JOIN remote_profile ' . - 'ON subscription.subscriber = remote_profile.id ' . - 'WHERE subscription.subscribed = ' . $profile->id . ' '); - - $posted = array(); - - while ($rp->fetch()) { - if (isset($posted[$rp->updateprofileurl])) { - /* We already posted to this url. */ - continue; - } - common_debug('Posting to ' . $rp->updateprofileurl, __FILE__); - - /* Update profile. */ - $service = new StatusNet_OMB_Service_Consumer( - array(OMB_ENDPOINT_UPDATEPROFILE => $rp->updateprofileurl), - $rp->uri); - try { - $service->setToken($rp->token, $rp->secret); - $service->updateProfile($omb_profile); - } catch (Exception $e) { - common_log(LOG_ERR, 'Failed posting to ' . $rp->updateprofileurl); - common_log(LOG_ERR, 'Error status '.$e); - continue; - } - $posted[$rp->updateprofileurl] = true; - - common_debug('Finished to ' . $rp->updateprofileurl, __FILE__); - } - - return; -} - -class StatusNet_OMB_Service_Consumer extends OMB_Service_Consumer { - public function __construct($urls, $listener_uri=null) - { - $this->services = $urls; - $this->datastore = omb_oauth_datastore(); - $this->oauth_consumer = omb_oauth_consumer(); - $this->fetcher = Auth_Yadis_Yadis::getHTTPFetcher(); - $this->fetcher->timeout = intval(common_config('omb', 'timeout')); - $this->listener_uri = $listener_uri; - } - -} - -function profile_to_omb_profile($uri, $profile, $force = false) -{ - $omb_profile = new OMB_Profile($uri); - $omb_profile->setNickname($profile->nickname); - $omb_profile->setLicenseURL(common_config('license', 'url')); - if (!is_null($profile->fullname)) { - $omb_profile->setFullname($profile->fullname); - } elseif ($force) { - $omb_profile->setFullname(''); - } - if (!is_null($profile->homepage)) { - $omb_profile->setHomepage($profile->homepage); - } elseif ($force) { - $omb_profile->setHomepage(''); - } - if (!is_null($profile->bio)) { - $omb_profile->setBio($profile->bio); - } elseif ($force) { - $omb_profile->setBio(''); - } - if (!is_null($profile->location)) { - $omb_profile->setLocation($profile->location); - } elseif ($force) { - $omb_profile->setLocation(''); - } - if (!is_null($profile->profileurl)) { - $omb_profile->setProfileURL($profile->profileurl); - } elseif ($force) { - $omb_profile->setProfileURL(''); - } - - $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); - if ($avatar) { - $omb_profile->setAvatarURL($avatar->url); - } elseif ($force) { - $omb_profile->setAvatarURL(''); - } - return $omb_profile; -} - -function notice_to_omb_notice($notice) -{ - /* Create an OMB_Notice for $notice. */ - $user = User::getKV('id', $notice->profile_id); - - if (!$user) { - return null; - } - - $profile = $user->getProfile(); - - $omb_notice = new OMB_Notice(profile_to_omb_profile($user->uri, $profile), - $notice->uri, - $notice->content); - $omb_notice->setURL(common_local_url('shownotice', array('notice' => - $notice->id))); - $omb_notice->setLicenseURL(common_config('license', 'url')); - - return $omb_notice; -} - diff --git a/plugins/OMB/lib/omboauthdatastore.php b/plugins/OMB/lib/omboauthdatastore.php deleted file mode 100644 index 13bd793ecc..0000000000 --- a/plugins/OMB/lib/omboauthdatastore.php +++ /dev/null @@ -1,502 +0,0 @@ -. - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } - -require_once dirname(__FILE__) . '/../extlib/libomb/datastore.php'; - -// @todo FIXME: Class documentation missing. -class OMBOAuthDataStore extends OAuthDataStore -{ - // We keep a record of who's contacted us - function lookup_consumer($consumer_key) - { - $con = Consumer::getKV('consumer_key', $consumer_key); - if (!$con) { - $con = new Consumer(); - $con->consumer_key = $consumer_key; - $con->seed = common_random_hexstr(16); - $con->created = common_sql_now(); - if (!$con->insert()) { - return null; - } - } - return new OAuthConsumer($con->consumer_key, ''); - } - - 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; - } - } - - // 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 - 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 = common_sql_now(); - $n->insert(); - return false; - } - } - - function new_request_token($consumer) - { - $t = new Token(); - $t->consumer_key = $consumer->key; - $t->tok = common_random_hexstr(16); - $t->secret = common_random_hexstr(16); - $t->type = 0; // request - $t->state = 0; // unauthorized - $t->created = common_sql_now(); - if (!$t->insert()) { - return null; - } else { - return new OAuthToken($t->tok, $t->secret); - } - } - - // defined in OAuthDataStore, but not implemented anywhere - function fetch_request_token($consumer) - { - return $this->new_request_token($consumer); - } - - function new_access_token($token, $consumer) - { - common_debug('new_access_token("'.$token->key.'","'.$consumer->key.'")', __FILE__); - $rt = new Token(); - $rt->consumer_key = $consumer->key; - $rt->tok = $token->key; - $rt->type = 0; // request - if ($rt->find(true) && $rt->state == 1) { // authorized - common_debug('request token found.', __FILE__); - $at = new Token(); - $at->consumer_key = $consumer->key; - $at->tok = common_random_hexstr(16); - $at->secret = common_random_hexstr(16); - $at->type = 1; // access - $at->created = common_sql_now(); - if (!$at->insert()) { - $e = $at->_lastError; - common_debug('access token "'.$at->tok.'" not inserted: "'.$e->message.'"', __FILE__); - return null; - } else { - common_debug('access token "'.$at->tok.'" inserted', __FILE__); - // burn the old one - $orig_rt = clone($rt); - $rt->state = 2; // used - if (!$rt->update($orig_rt)) { - return null; - } - common_debug('request token "'.$rt->tok.'" updated', __FILE__); - // Update subscription - // XXX: mixing levels here - $sub = Subscription::getKV('token', $rt->tok); - if (!$sub) { - return null; - } - common_debug('subscription for request token found', __FILE__); - $orig_sub = clone($sub); - $sub->token = $at->tok; - $sub->secret = $at->secret; - if (!$sub->update($orig_sub)) { - return null; - } else { - common_debug('subscription updated to use access token', __FILE__); - return new OAuthToken($at->tok, $at->secret); - } - } - } else { - return null; - } - } - - // defined in OAuthDataStore, but not implemented anywhere - function fetch_access_token($consumer) - { - return $this->new_access_token($consumer); - } - - /** - * Revoke specified OAuth token - * - * Revokes the authorization token specified by $token_key. - * Throws exceptions in case of error. - * - * @param string $token_key The token to be revoked - * - * @access public - **/ - public function revoke_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 revoke unknown token'); - } - if (!$rt->delete()) { - throw new Exception('Failed to delete revoked token'); - } - } - - /** - * 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'); - } - } - - /** - * Get profile by identifying URI - * - * Returns an OMB_Profile object representing the OMB profile identified by - * $identifier_uri. - * Returns null if there is no such OMB profile. - * Throws exceptions in case of other error. - * - * @param string $identifier_uri The OMB identifier URI specifying the - * requested profile - * - * @access public - * - * @return OMB_Profile The corresponding profile - **/ - public function getProfile($identifier_uri) { - /* getProfile is only used for remote profiles by libomb. - @TODO: Make it work with local ones anyway. */ - $remote = Remote_profile::getKV('uri', $identifier_uri); - if (!$remote) throw new Exception('No such remote profile'); - $profile = Profile::getKV('id', $remote->id); - if (!$profile) throw new Exception('No profile for remote user'); - - require_once dirname(__FILE__) . '/omb.php'; - return profile_to_omb_profile($identifier_uri, $profile); - } - - /** - * Save passed profile - * - * Stores the OMB profile $profile. Overwrites an existing entry. - * Throws exceptions in case of error. - * - * @param OMB_Profile $profile The OMB profile which should be saved - * - * @access public - **/ - public function saveProfile($omb_profile) { - if (common_profile_url($omb_profile->getNickname()) == - $omb_profile->getProfileURL()) { - throw new Exception('Not implemented'); - } else { - $remote = Remote_profile::getKV('uri', $omb_profile->getIdentifierURI()); - - if ($remote) { - $exists = true; - $profile = Profile::getKV($remote->id); - $orig_remote = clone($remote); - $orig_profile = clone($profile); - // XXX: compare current postNotice and updateProfile URLs to the ones - // stored in the DB to avoid (possibly...) above attack - } else { - $exists = false; - $remote = new Remote_profile(); - $remote->uri = $omb_profile->getIdentifierURI(); - $profile = new Profile(); - } - - $profile->nickname = $omb_profile->getNickname(); - $profile->profileurl = $omb_profile->getProfileURL(); - - $fullname = $omb_profile->getFullname(); - $profile->fullname = is_null($fullname) ? '' : $fullname; - $homepage = $omb_profile->getHomepage(); - $profile->homepage = is_null($homepage) ? '' : $homepage; - $bio = $omb_profile->getBio(); - $profile->bio = is_null($bio) ? '' : $bio; - $location = $omb_profile->getLocation(); - $profile->location = is_null($location) ? '' : $location; - - if ($exists) { - $profile->update($orig_profile); - } else { - $profile->created = common_sql_now(); # current time - $id = $profile->insert(); - if (!$id) { - // TRANS: Exception thrown when creating a new profile fails in OAuth store. - throw new Exception(_('Error inserting new profile.')); - } - $remote->id = $id; - } - - $avatar_url = $omb_profile->getAvatarURL(); - if ($avatar_url) { - if (!$this->add_avatar($profile, $avatar_url)) { - // TRANS: Exception thrown when creating a new avatar fails in OAuth store. - throw new Exception(_('Error inserting avatar.')); - } - } else { - Avatar::deleteFromProfile($profile); - } - - if ($exists) { - if (!$remote->update($orig_remote)) { - // TRANS: Exception thrown when updating a remote profile fails in OAuth store. - throw new Exception(_('Error updating remote profile.')); - } - } else { - $remote->created = common_sql_now(); # current time - if (!$remote->insert()) { - // TRANS: Exception thrown when creating a remote profile fails in OAuth store. - throw new Exception(_('Error inserting remote profile.')); - } - } - } - } - - function add_avatar($profile, $url) - { - $temp_filename = tempnam(sys_get_temp_dir(), 'listener_avatar'); - try { - copy($url, $temp_filename); - $imagefile = new ImageFile($profile->id, $temp_filename); - $filename = Avatar::filename($profile->id, - image_type_to_extension($imagefile->type), - null, - common_timestamp()); - rename($temp_filename, Avatar::path($filename)); - } catch (Exception $e) { - unlink($temp_filename); - throw $e; - } - return $profile->setOriginal($filename); - } - - /** - * Save passed notice - * - * Stores the OMB notice $notice. The datastore may change the passed notice. - * This might by neccessary for URIs depending on a database key. Note that - * it is the user’s duty to present a mechanism for his OMB_Datastore to - * appropriately change his OMB_Notice. - * Throws exceptions in case of error. - * - * @param OMB_Notice $notice The OMB notice which should be saved - * - * @access public - **/ - public function saveNotice(&$omb_notice) { - if (Notice::getKV('uri', $omb_notice->getIdentifierURI())) { - // TRANS: Exception thrown when a notice is denied because it has been sent before. - throw new Exception(_('Duplicate notice.')); - } - $author_uri = $omb_notice->getAuthor()->getIdentifierURI(); - common_log(LOG_DEBUG, $author_uri, __FILE__); - $author = Remote_profile::getKV('uri', $author_uri); - if (!$author) { - $author = User::getKV('uri', $author_uri); - } - if (!$author) { - throw new Exception('No such user.'); - } - - common_log(LOG_DEBUG, print_r($author, true), __FILE__); - - $notice = Notice::saveNew($author->id, - $omb_notice->getContent(), - 'omb', - array('is_local' => Notice::REMOTE, - 'uri' => $omb_notice->getIdentifierURI())); - - } - - /** - * Get subscriptions of a given profile - * - * Returns an array containing subscription informations for the specified - * profile. Every array entry should in turn be an array with keys - * 'uri´: The identifier URI of the subscriber - * 'token´: The subscribe token - * 'secret´: The secret token - * Throws exceptions in case of error. - * - * @param string $subscribed_user_uri The OMB identifier URI specifying the - * subscribed profile - * - * @access public - * - * @return mixed An array containing the subscriptions or 0 if no - * subscription has been found. - **/ - public function getSubscriptions($subscribed_user_uri) { - $sub = new Subscription(); - - $user = $this->_getAnyProfile($subscribed_user_uri); - - $sub->subscribed = $user->id; - - if (!$sub->find(true)) { - return array(); - } - - /* Since we do not use OMB_Service_Provider’s action methods, there - is no need to actually return the subscriptions. */ - return 1; - } - - private function _getAnyProfile($uri) - { - $user = Remote_profile::getKV('uri', $uri); - if (!$user) { - $user = User::getKV('uri', $uri); - } - if (!$user) { - throw new Exception('No such user.'); - } - return $user; - } - - /** - * Delete a subscription - * - * Deletes the subscription from $subscriber_uri to $subscribed_user_uri. - * Throws exceptions in case of error. - * - * @param string $subscriber_uri The OMB identifier URI specifying the - * subscribing profile - * - * @param string $subscribed_user_uri The OMB identifier URI specifying the - * subscribed profile - * - * @access public - **/ - public function deleteSubscription($subscriber_uri, $subscribed_user_uri) - { - $sub = new Subscription(); - - $subscribed = $this->_getAnyProfile($subscribed_user_uri); - $subscriber = $this->_getAnyProfile($subscriber_uri); - - $sub->subscribed = $subscribed->id; - $sub->subscriber = $subscriber->id; - - $sub->delete(); - } - - /** - * Save a subscription - * - * Saves the subscription from $subscriber_uri to $subscribed_user_uri. - * Throws exceptions in case of error. - * - * @param string $subscriber_uri The OMB identifier URI specifying - * the subscribing profile - * - * @param string $subscribed_user_uri The OMB identifier URI specifying - * the subscribed profile - * @param OAuthToken $token The access token - * - * @access public - **/ - public function saveSubscription($subscriber_uri, $subscribed_user_uri, - $token) - { - $sub = new Subscription(); - - $subscribed = $this->_getAnyProfile($subscribed_user_uri); - $subscriber = $this->_getAnyProfile($subscriber_uri); - - if (!$subscriber->hasRight(Right::SUBSCRIBE)) { - common_log(LOG_INFO, __METHOD__ . ": remote subscriber banned ($subscriber_uri subbing to $subscribed_user_uri)"); - // TRANS: Error message displayed to a banned user when they try to subscribe. - return _('You have been banned from subscribing.'); - } - - $sub->subscribed = $subscribed->id; - $sub->subscriber = $subscriber->id; - - $sub_exists = $sub->find(true); - - if ($sub_exists) { - $orig_sub = clone($sub); - } else { - $sub->created = common_sql_now(); - } - - $sub->token = $token->key; - $sub->secret = $token->secret; - - if ($sub_exists) { - $result = $sub->update($orig_sub); - } else { - $result = $sub->insert(); - } - - if (!$result) { - common_log_db_error($sub, ($sub_exists) ? 'UPDATE' : 'INSERT', __FILE__); - // TRANS: Exception thrown when creating a new subscription fails in OAuth store. - throw new Exception(_('Could not insert new subscription.')); - return; - } - - /* Notify user, if necessary. */ - - if ($subscribed instanceof User) { - mail_subscribe_notify_profile($subscribed, - Profile::getKV($subscriber->id)); - } - } -} diff --git a/plugins/OMB/lib/ombqueuehandler.php b/plugins/OMB/lib/ombqueuehandler.php deleted file mode 100644 index df443513fa..0000000000 --- a/plugins/OMB/lib/ombqueuehandler.php +++ /dev/null @@ -1,56 +0,0 @@ -. - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} - -/** - * Queue handler for pushing new notices to OpenMicroBlogging subscribers. - */ -class OmbQueueHandler extends QueueHandler -{ - - function transport() - { - return 'omb'; - } - - /** - * @fixme doesn't currently report failure back to the queue manager - * because omb_broadcast_notice() doesn't report it to us - */ - function handle($notice) - { - if ($this->is_remote($notice)) { - common_log(LOG_DEBUG, 'Ignoring remote notice ' . $notice->id); - return true; - } else { - require_once(dirname(__FILE__) . '/omb.php'); - omb_broadcast_notice($notice); - return true; - } - } - - function is_remote($notice) - { - $user = User::getKV($notice->profile_id); - return is_null($user); - } -} diff --git a/plugins/OMB/lib/profilequeuehandler.php b/plugins/OMB/lib/profilequeuehandler.php deleted file mode 100644 index 5c67b0bfbe..0000000000 --- a/plugins/OMB/lib/profilequeuehandler.php +++ /dev/null @@ -1,52 +0,0 @@ -. - */ - -/** - * @package QueueHandler - * @maintainer Brion Vibber - */ - -class ProfileQueueHandler extends QueueHandler -{ - - function transport() - { - return 'profile'; - } - - function handle($profile) - { - if (!($profile instanceof Profile)) { - common_log(LOG_ERR, "Got a bogus profile, not broadcasting"); - return true; - } - - if (Event::handle('StartBroadcastProfile', array($profile))) { - require_once(dirname(__FILE__) . '/omb.php'); - try { - omb_broadcast_profile($profile); - } catch (Exception $e) { - common_log(LOG_ERR, "Failed sending OMB profiles: " . $e->getMessage()); - } - } - Event::handle('EndBroadcastProfile', array($profile)); - return true; - } - -} diff --git a/plugins/OMB/locale/OMB.pot b/plugins/OMB/locale/OMB.pot deleted file mode 100644 index ca260238ec..0000000000 --- a/plugins/OMB/locale/OMB.pot +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -#: actions/remotesubscribe.php:147 OMBPlugin.php:388 -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "" - -#. TRANS: Button text on Authorise Subscription page. -#: actions/userauthorization.php:202 -msgctxt "BUTTON" -msgid "Accept" -msgstr "" - -#. TRANS: Button text on Authorise Subscription page. -#: actions/userauthorization.php:207 -msgctxt "BUTTON" -msgid "Reject" -msgstr "" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -#: OMBPlugin.php:233 -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "" - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -#: OMBPlugin.php:260 -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "" - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -#: OMBPlugin.php:284 -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "" - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -#: OMBPlugin.php:318 -msgid "Could not delete subscription OMB token." -msgstr "" - -#. TRANS: Plugin description. -#: OMBPlugin.php:408 -msgid "A sample plugin to show basics of development for new hackers." -msgstr "" diff --git a/plugins/OMB/locale/br/LC_MESSAGES/OMB.po b/plugins/OMB/locale/br/LC_MESSAGES/OMB.po deleted file mode 100644 index 26cbec56ed..0000000000 --- a/plugins/OMB/locale/br/LC_MESSAGES/OMB.po +++ /dev/null @@ -1,58 +0,0 @@ -# Translation of StatusNet - OMB to Breton (brezhoneg) -# Exported from translatewiki.net -# -# Author: Y-M D -# -- -# This file is distributed under the same license as the StatusNet package. -# -msgid "" -msgstr "" -"Project-Id-Version: StatusNet - OMB\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: 2012-06-30 11:09:22+0000\n" -"Language-Team: Breton \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-POT-Import-Date: 2012-01-02 10:11:37+0000\n" -"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n" -"X-Translation-Project: translatewiki.net \n" -"X-Language-Code: br\n" -"X-Message-Group: #out-statusnet-plugin-omb\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "Koumanantiñ" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Accept" -msgstr "Asantiñ" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Reject" -msgstr "Disteurel" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "" - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "" - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "" - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -msgid "Could not delete subscription OMB token." -msgstr "" - -#. TRANS: Plugin description. -msgid "A sample plugin to show basics of development for new hackers." -msgstr "" diff --git a/plugins/OMB/locale/ca/LC_MESSAGES/OMB.po b/plugins/OMB/locale/ca/LC_MESSAGES/OMB.po deleted file mode 100644 index 81f4a9b858..0000000000 --- a/plugins/OMB/locale/ca/LC_MESSAGES/OMB.po +++ /dev/null @@ -1,58 +0,0 @@ -# Translation of StatusNet - OMB to Catalan (català) -# Exported from translatewiki.net -# -# Author: Toniher -# -- -# This file is distributed under the same license as the StatusNet package. -# -msgid "" -msgstr "" -"Project-Id-Version: StatusNet - OMB\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: 2012-06-30 11:09:22+0000\n" -"Language-Team: Catalan \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-POT-Import-Date: 2012-01-02 10:11:37+0000\n" -"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n" -"X-Translation-Project: translatewiki.net \n" -"X-Language-Code: ca\n" -"X-Message-Group: #out-statusnet-plugin-omb\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "Subscriu" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Accept" -msgstr "Accepta" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Reject" -msgstr "Rebutja" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "" - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "" - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "" - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -msgid "Could not delete subscription OMB token." -msgstr "" - -#. TRANS: Plugin description. -msgid "A sample plugin to show basics of development for new hackers." -msgstr "" diff --git a/plugins/OMB/locale/de/LC_MESSAGES/OMB.po b/plugins/OMB/locale/de/LC_MESSAGES/OMB.po deleted file mode 100644 index 2dd3c16b29..0000000000 --- a/plugins/OMB/locale/de/LC_MESSAGES/OMB.po +++ /dev/null @@ -1,61 +0,0 @@ -# Translation of StatusNet - OMB to German (Deutsch) -# Exported from translatewiki.net -# -# Author: Alphakilo -# Author: Marcel083 -# Author: PtM -# Author: Tiin -# -- -# This file is distributed under the same license as the StatusNet package. -# -msgid "" -msgstr "" -"Project-Id-Version: StatusNet - OMB\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: 2012-06-30 11:09:22+0000\n" -"Language-Team: German \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-POT-Import-Date: 2012-01-02 10:11:37+0000\n" -"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n" -"X-Translation-Project: translatewiki.net \n" -"X-Language-Code: de\n" -"X-Message-Group: #out-statusnet-plugin-omb\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "Abonnieren" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Accept" -msgstr "Annehmen" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Reject" -msgstr "Ablehnen" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Sie können mit dieser Aktion kein OMB0.1 Profil abonnieren." - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "Du kannst mit dieser Aktion kein OMB-0.1-Profil auflisten." - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "Du kannst mit dieser Aktion kein OMB-0.1-Profil (ab)listen." - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -msgid "Could not delete subscription OMB token." -msgstr "Konnte Abonnement-OMB-Token nicht löschen." - -#. TRANS: Plugin description. -msgid "A sample plugin to show basics of development for new hackers." -msgstr "Ein Beispiel-Plugin Grundlagen der Entwicklung neuen Hacker zu zeigen." diff --git a/plugins/OMB/locale/es/LC_MESSAGES/OMB.po b/plugins/OMB/locale/es/LC_MESSAGES/OMB.po deleted file mode 100644 index 5d8e828139..0000000000 --- a/plugins/OMB/locale/es/LC_MESSAGES/OMB.po +++ /dev/null @@ -1,57 +0,0 @@ -# Translation of StatusNet - OMB to Spanish (español) -# Exported from translatewiki.net -# -# Author: Armando-Martin -# -- -# This file is distributed under the same license as the StatusNet package. -# -msgid "" -msgstr "" -"Project-Id-Version: StatusNet - OMB\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: 2012-06-30 11:09:22+0000\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-POT-Import-Date: 2012-01-02 10:11:37+0000\n" -"X-Translation-Project: translatewiki.net \n" -"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "Suscribirse" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Accept" -msgstr "Aceptar" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Reject" -msgstr "Rechazar" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "No es posible suscribirse a un perfil remoto OMB 0.1 con esta acción." - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "No puede listar un perfil remoto OMB 0.1 con esta acción." - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "No puede (des)listar un perfil remoto OMB 0.1 con esta acción." - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -msgid "Could not delete subscription OMB token." -msgstr "No se pudo eliminar el token de suscripción OMB." - -#. TRANS: Plugin description. -msgid "A sample plugin to show basics of development for new hackers." -msgstr "" -"Un complemento (plugin) de ejemplo para mostrar los principios básicos de " -"desarrollo a los nuevos programadores." diff --git a/plugins/OMB/locale/eu/LC_MESSAGES/OMB.po b/plugins/OMB/locale/eu/LC_MESSAGES/OMB.po deleted file mode 100644 index 64b40617b5..0000000000 --- a/plugins/OMB/locale/eu/LC_MESSAGES/OMB.po +++ /dev/null @@ -1,60 +0,0 @@ -# Translation of StatusNet - OMB to Basque (euskara) -# Exported from translatewiki.net -# -# Author: An13sa -# Author: Artsuaga -# -- -# This file is distributed under the same license as the StatusNet package. -# -msgid "" -msgstr "" -"Project-Id-Version: StatusNet - OMB\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: 2012-06-30 11:09:22+0000\n" -"Language-Team: Basque \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-POT-Import-Date: 2012-01-02 10:11:37+0000\n" -"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n" -"X-Translation-Project: translatewiki.net \n" -"X-Language-Code: eu\n" -"X-Message-Group: #out-statusnet-plugin-omb\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "Harpidetu" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Accept" -msgstr "Onartu" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Reject" -msgstr "Baztertu" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Ezin zaitezke OMB 0.1 hurruneko profilera harpidetu ekintza honekin." - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "Ezin duzu OMB 0.1 hurruneko profil bat zerrendatu ekintza honekin." - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "" -"Ezin duzu OMB 0.1 hurruneko profil bat (des)zerrendatu ekintza honekin." - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -msgid "Could not delete subscription OMB token." -msgstr "OMB token harpidetza ezin da ezabatu." - -#. TRANS: Plugin description. -msgid "A sample plugin to show basics of development for new hackers." -msgstr "Frogako plugin bat, hacker berriei garapen oinarriak erakusteko." diff --git a/plugins/OMB/locale/fr/LC_MESSAGES/OMB.po b/plugins/OMB/locale/fr/LC_MESSAGES/OMB.po deleted file mode 100644 index b7f9e272bb..0000000000 --- a/plugins/OMB/locale/fr/LC_MESSAGES/OMB.po +++ /dev/null @@ -1,62 +0,0 @@ -# Translation of StatusNet - OMB to French (français) -# Exported from translatewiki.net -# -# Author: Gomoko -# Author: Od1n -# -- -# This file is distributed under the same license as the StatusNet package. -# -msgid "" -msgstr "" -"Project-Id-Version: StatusNet - OMB\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: 2012-06-30 11:09:22+0000\n" -"Language-Team: French \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-POT-Import-Date: 2012-01-02 10:11:37+0000\n" -"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n" -"X-Translation-Project: translatewiki.net \n" -"X-Language-Code: fr\n" -"X-Message-Group: #out-statusnet-plugin-omb\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "S’abonner" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Accept" -msgstr "Accepter" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Reject" -msgstr "Rejeter" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Impossible de s'abonner à un profil distant OMB 0.1 avec cette action." - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "Impossible de lister un profil distant OMB 0.1 avec cette action." - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "" -"Impossible de (ne plus) lister un profil distant OMB 0.1 avec cette action." - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -msgid "Could not delete subscription OMB token." -msgstr "Impossible de supprimer le jeton d'abonnement OMB." - -#. TRANS: Plugin description. -msgid "A sample plugin to show basics of development for new hackers." -msgstr "" -"Un exemple de plugin pour montrer les bases de développement pour les " -"nouveaux codeurs." diff --git a/plugins/OMB/locale/gl/LC_MESSAGES/OMB.po b/plugins/OMB/locale/gl/LC_MESSAGES/OMB.po deleted file mode 100644 index 3da5fc9ace..0000000000 --- a/plugins/OMB/locale/gl/LC_MESSAGES/OMB.po +++ /dev/null @@ -1,60 +0,0 @@ -# Translation of StatusNet - OMB to Galician (galego) -# Exported from translatewiki.net -# -# Author: Toliño -# -- -# This file is distributed under the same license as the StatusNet package. -# -msgid "" -msgstr "" -"Project-Id-Version: StatusNet - OMB\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: 2012-06-30 11:09:22+0000\n" -"Language-Team: Galician \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-POT-Import-Date: 2012-01-02 10:11:37+0000\n" -"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n" -"X-Translation-Project: translatewiki.net \n" -"X-Language-Code: gl\n" -"X-Message-Group: #out-statusnet-plugin-omb\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "Subscribirse" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Accept" -msgstr "Aceptar" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Reject" -msgstr "Rexeitar" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Non se pode subscribir a un perfil remoto OMB 0.1 con esta acción." - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "Non pode listar un perfil remoto OMB 0.1 con esta acción." - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "Non pode (des)listar un perfil remoto OMB 0.1 con esta acción." - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -msgid "Could not delete subscription OMB token." -msgstr "Non se puido borrar o pase de subscrición OMB." - -#. TRANS: Plugin description. -msgid "A sample plugin to show basics of development for new hackers." -msgstr "" -"Un complemento de exemplo para mostrar os principios básicos de " -"desenvolvemento aos novos programadores." diff --git a/plugins/OMB/locale/ia/LC_MESSAGES/OMB.po b/plugins/OMB/locale/ia/LC_MESSAGES/OMB.po deleted file mode 100644 index f4bead31e6..0000000000 --- a/plugins/OMB/locale/ia/LC_MESSAGES/OMB.po +++ /dev/null @@ -1,60 +0,0 @@ -# Translation of StatusNet - OMB to Interlingua (interlingua) -# Exported from translatewiki.net -# -# Author: McDutchie -# -- -# This file is distributed under the same license as the StatusNet package. -# -msgid "" -msgstr "" -"Project-Id-Version: StatusNet - OMB\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: 2012-06-30 11:09:22+0000\n" -"Language-Team: Interlingua \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-POT-Import-Date: 2012-01-02 10:11:37+0000\n" -"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n" -"X-Translation-Project: translatewiki.net \n" -"X-Language-Code: ia\n" -"X-Message-Group: #out-statusnet-plugin-omb\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "Subscriber" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Accept" -msgstr "Acceptar" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Reject" -msgstr "Rejectar" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Tu non pote subscriber te a un profilo remote OMB 0.1 con iste action." - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "Tu non pote listar un profilo remote OMB 0.1 con iste action." - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "Tu non pote (dis)listar un profilo remote OMB 0.1 con iste action." - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -msgid "Could not delete subscription OMB token." -msgstr "Non poteva deler le indicio OMB del subscription." - -#. TRANS: Plugin description. -msgid "A sample plugin to show basics of development for new hackers." -msgstr "" -"Un plug-in de exemplo pro demonstrar le principios de disveloppamento pro " -"nove programmatores." diff --git a/plugins/OMB/locale/it/LC_MESSAGES/OMB.po b/plugins/OMB/locale/it/LC_MESSAGES/OMB.po deleted file mode 100644 index 17b5d8a563..0000000000 --- a/plugins/OMB/locale/it/LC_MESSAGES/OMB.po +++ /dev/null @@ -1,63 +0,0 @@ -# Translation of StatusNet - OMB to Italian (italiano) -# Exported from translatewiki.net -# -# Author: GreenFox -# -- -# This file is distributed under the same license as the StatusNet package. -# -msgid "" -msgstr "" -"Project-Id-Version: StatusNet - OMB\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: 2012-06-30 11:09:22+0000\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-POT-Import-Date: 2012-01-02 10:11:37+0000\n" -"X-Translation-Project: translatewiki.net \n" -"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "Iscriviti" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Accept" -msgstr "Accetta" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Reject" -msgstr "Rifiuta" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "" -"Non è possibile iscriversi ad un profilo remoto di tipo OMB 0.1 con questa " -"azione." - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "" -"Non è possibile aggiungere alla lista un profilo remoto di tipo OMB 0.1 con " -"questa azione." - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "" -"Non è possibile rimuovere dalla lista un profilo remoto di tipo OMB 0.1 con " -"questa azione." - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -msgid "Could not delete subscription OMB token." -msgstr "Impossibile cancellare il token di iscrizione OMB dal server." - -#. TRANS: Plugin description. -msgid "A sample plugin to show basics of development for new hackers." -msgstr "" -"Un esempio di estensione per mostrare i fondamentali di sviluppo per i nuovi " -"programmatori" diff --git a/plugins/OMB/locale/mk/LC_MESSAGES/OMB.po b/plugins/OMB/locale/mk/LC_MESSAGES/OMB.po deleted file mode 100644 index 2c28bc9f5a..0000000000 --- a/plugins/OMB/locale/mk/LC_MESSAGES/OMB.po +++ /dev/null @@ -1,62 +0,0 @@ -# Translation of StatusNet - OMB to Macedonian (македонски) -# Exported from translatewiki.net -# -# Author: Bjankuloski06 -# -- -# This file is distributed under the same license as the StatusNet package. -# -msgid "" -msgstr "" -"Project-Id-Version: StatusNet - OMB\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: 2012-06-30 11:09:22+0000\n" -"Language-Team: Macedonian \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-POT-Import-Date: 2012-01-02 10:11:37+0000\n" -"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n" -"X-Translation-Project: translatewiki.net \n" -"X-Language-Code: mk\n" -"X-Message-Group: #out-statusnet-plugin-omb\n" -"Plural-Forms: nplurals=2; plural=(n == 1 || n%10 == 1) ? 0 : 1;\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "Претплати се" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Accept" -msgstr "Прифати" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Reject" -msgstr "Одбиј" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "" -"Не можете да се претплатите на далечински профил OMB 0.1 со ова дејство." - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "Не можете да наведете далечински профил OMB 0.1 со ова дејство." - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "" -"Не можете да наведете/отстраните од список далечински профил OMB 0.1 со ова " -"дејство." - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -msgid "Could not delete subscription OMB token." -msgstr "Не можам да го избришам OMB-жетонот за претплата." - -#. TRANS: Plugin description. -msgid "A sample plugin to show basics of development for new hackers." -msgstr "" -"Приклучок-пример за основите на развојното програмирање за нови хакери." diff --git a/plugins/OMB/locale/nl/LC_MESSAGES/OMB.po b/plugins/OMB/locale/nl/LC_MESSAGES/OMB.po deleted file mode 100644 index 14338dedd2..0000000000 --- a/plugins/OMB/locale/nl/LC_MESSAGES/OMB.po +++ /dev/null @@ -1,67 +0,0 @@ -# Translation of StatusNet - OMB to Dutch (Nederlands) -# Exported from translatewiki.net -# -# Author: SPQRobin -# Author: Siebrand -# -- -# This file is distributed under the same license as the StatusNet package. -# -msgid "" -msgstr "" -"Project-Id-Version: StatusNet - OMB\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: 2012-06-30 11:09:23+0000\n" -"Language-Team: Dutch \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-POT-Import-Date: 2012-01-02 10:11:37+0000\n" -"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n" -"X-Translation-Project: translatewiki.net \n" -"X-Language-Code: nl\n" -"X-Message-Group: #out-statusnet-plugin-omb\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "Abonneren" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Accept" -msgstr "Aanvaarden" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Reject" -msgstr "Weigeren" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "" -"U kunt via deze handeling niet abonneren op een extern OMB 1.0-profiel." - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "" -"U kunt een extern OMB 1.0-profiel niet opnemen in een lijst via deze " -"handeling." - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "" -"U kunt een extern OMB 1.0-profiel niet opnemen in of verwijderen uit een " -"lijst via deze handeling." - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -msgid "Could not delete subscription OMB token." -msgstr "" -"Het was niet mogelijk om het OMB-token voor het abonnement te verwijderen." - -#. TRANS: Plugin description. -msgid "A sample plugin to show basics of development for new hackers." -msgstr "" -"Een voorbeeldplug-in om de basisprogrammeertechnieken te demonstreren aan " -"nieuwe ontwikkelaars." diff --git a/plugins/OMB/locale/te/LC_MESSAGES/OMB.po b/plugins/OMB/locale/te/LC_MESSAGES/OMB.po deleted file mode 100644 index e4b785222f..0000000000 --- a/plugins/OMB/locale/te/LC_MESSAGES/OMB.po +++ /dev/null @@ -1,55 +0,0 @@ -# Translation of StatusNet - OMB to Telugu (తెలుగు) -# Exported from translatewiki.net -# -# Author: Veeven -# -- -# This file is distributed under the same license as the StatusNet package. -# -msgid "" -msgstr "" -"Project-Id-Version: StatusNet - OMB\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: 2012-06-30 11:09:23+0000\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-POT-Import-Date: 2012-01-02 10:11:37+0000\n" -"X-Translation-Project: translatewiki.net \n" -"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "చందాచేరు" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Accept" -msgstr "అంగీకరించు" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Reject" -msgstr "తిరస్కరించు" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "" - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "" - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "" - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -msgid "Could not delete subscription OMB token." -msgstr "" - -#. TRANS: Plugin description. -msgid "A sample plugin to show basics of development for new hackers." -msgstr "" diff --git a/plugins/OMB/locale/tl/LC_MESSAGES/OMB.po b/plugins/OMB/locale/tl/LC_MESSAGES/OMB.po deleted file mode 100644 index 99f881c73f..0000000000 --- a/plugins/OMB/locale/tl/LC_MESSAGES/OMB.po +++ /dev/null @@ -1,63 +0,0 @@ -# Translation of StatusNet - OMB to Tagalog (Tagalog) -# Exported from translatewiki.net -# -# Author: AnakngAraw -# -- -# This file is distributed under the same license as the StatusNet package. -# -msgid "" -msgstr "" -"Project-Id-Version: StatusNet - OMB\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-30 11:07+0000\n" -"PO-Revision-Date: 2012-06-30 11:09:23+0000\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-POT-Import-Date: 2012-01-02 10:11:37+0000\n" -"X-Translation-Project: translatewiki.net \n" -"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. TRANS: Button text on page for remote subscribe. -#. TRANS: Link text for link that will subscribe to a remote profile. -msgctxt "BUTTON" -msgid "Subscribe" -msgstr "Tumanggap ng sipi" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Accept" -msgstr "Tanggapin" - -#. TRANS: Button text on Authorise Subscription page. -msgctxt "BUTTON" -msgid "Reject" -msgstr "Tanggihan" - -#. TRANS: Client error displayed trying to subscribe to an OMB 0.1 remote profile. -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "" -"Hindi ka makasisipi sa isang malayong balangkas ng 0.1 na OMB sa pamamagitan " -"ng galaw na ito." - -#. TRANS: Client error displayed when trying to add an OMB 0.1 remote profile to a list. -msgid "You cannot list an OMB 0.1 remote profile with this action." -msgstr "" -"Hindi mo maililista ang isang 0.1 na malayong balangkas ng OMB sa " -"pamamagitan ng galaw na ito." - -#. TRANS: Client error displayed when trying to (un)list an OMB 0.1 remote profile. -msgid "You cannot (un)list an OMB 0.1 remote profile with this action." -msgstr "" -"(Hindi) mo maililista ang isang 0.1 na malayong balangkas ng OMB sa " -"pamamagitan ng galaw na ito." - -#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. -msgid "Could not delete subscription OMB token." -msgstr "Hindi mabura ang panghalip na pagsipi ng OMB." - -#. TRANS: Plugin description. -msgid "A sample plugin to show basics of development for new hackers." -msgstr "" -"Isang payak na pampasak upang maipakita ang mga saligan ng kaunlaran para sa " -"bagong mga mangunguha." diff --git a/plugins/OStatus/scripts/updateostatus.php b/plugins/OStatus/scripts/updateostatus.php deleted file mode 100644 index e19b853aac..0000000000 --- a/plugins/OStatus/scripts/updateostatus.php +++ /dev/null @@ -1,131 +0,0 @@ -#!/usr/bin/env php -. - */ - -define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..')); - -$shortoptions = 'i:n:a'; -$longoptions = array('id=', 'nickname=', 'all'); - -$helptext = <<find()) { - while ($user->fetch()) { - try { - updateOStatus($user); - } catch (Exception $e) { - common_log(LOG_NOTICE, "Couldn't convert OMB subscriptions ". - "for {$user->nickname} to OStatus: " . $e->getMessage()); - } - } - } - } else { - show_help(); - exit(1); - } -} catch (Exception $e) { - print $e->getMessage()."\n"; - exit(1); -} - -function updateOStatus($user) -{ - if (!have_option('q', 'quiet')) { - echo "{$user->nickname}..."; - } - - $up = $user->getProfile(); - - $sp = $up->getSubscribed(); - - $rps = array(); - - while ($sp->fetch()) { - $remote = Remote_profile::getKV('id', $sp->id); - - if (!empty($remote)) { - $rps[] = clone($sp); - } - } - - if (!have_option('q', 'quiet')) { - echo count($rps) . "\n"; - } - - foreach ($rps as $rp) { - try { - if (!have_option('q', 'quiet')) { - echo "Checking {$rp->nickname}..."; - } - - $op = Ostatus_profile::ensureProfileURL($rp->profileurl); - - if (empty($op)) { - echo "can't convert.\n"; - continue; - } else { - if (!have_option('q', 'quiet')) { - echo "Converting..."; - } - Subscription::start($up, $op->localProfile()); - Subscription::cancel($up, $rp); - if (!have_option('q', 'quiet')) { - echo "done.\n"; - } - } - - } catch (Exception $e) { - if (!have_option('q', 'quiet')) { - echo "fail.\n"; - } - common_log(LOG_NOTICE, "Couldn't convert OMB subscription (" . $up->nickname . ", " . $rp->nickname . - ") to OStatus: " . $e->getMessage()); - continue; - } - } -} diff --git a/plugins/TwitterBridge/lib/twitterimport.php b/plugins/TwitterBridge/lib/twitterimport.php index e6ddc3b3ac..2d481688aa 100644 --- a/plugins/TwitterBridge/lib/twitterimport.php +++ b/plugins/TwitterBridge/lib/twitterimport.php @@ -271,28 +271,6 @@ class TwitterImport return false; } - // check for remote profile - $remote_pro = Remote_profile::getKV('uri', $profileurl); - - if (!($remote_pro instanceof Remote_profile)) { - $remote_pro = new Remote_profile(); - $remote_pro->id = $id; - $remote_pro->uri = $profileurl; - $remote_pro->created = common_sql_now(); - - try { - $rid = $remote_pro->insert(); - if (empty($rid)) { - throw new Exception('Failed insert'); - } - } catch (Exception $e) { - common_log(LOG_WARNING, __METHOD__ . " Couldn't save remote profile: " . $e->getMessage()); - common_log_db_error($profile, 'INSERT', __FILE__); - $profile->query("ROLLBACK"); - return false; - } - } - $profile->query("COMMIT"); $this->updateAvatar($twuser, $profile); return $profile; diff --git a/scripts/updateurls.php b/scripts/updateurls.php index eb0706f22f..35b835e494 100644 --- a/scripts/updateurls.php +++ b/scripts/updateurls.php @@ -52,11 +52,6 @@ function updateUserUrls() updateProfileUrl($profile); updateAvatarUrls($profile); - - // Broadcast for remote users - - common_broadcast_profile($profile); - } catch (Exception $e) { echo "Error updating URLs: " . $e->getMessage(); }