From 097d0bd2faad9e067367e88e4ad166b14b0f98b6 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Thu, 16 Sep 2010 14:43:27 -0700 Subject: Ticket #2731: Fix for regression in posting to remote groups (regression in 2d4e0693c88bb8cad47f917db3ac5ecfacf28619) Changes in 2d4e0693c88bb8cad47f917db3ac5ecfacf28619 changed Ostatus_profile::filterReplies() (which sorts out the local, remote, and group recipients on incoming remote messages) from checking for remote profiles with a safe call to Ostatus_profile::staticGet() to calls through Ostatus_profile::ensureProfileURL() and Ostatus_profile::ensureWebfinger(), which throw exceptions and thus abort processing. Since this was done before checking for local groups, the filter would fail when the ensure* functions determined it was looking at a local group and rightfully refused to create a remote group profile for it. Changing the calls to the ensure* functions was done so we can record remote reply recipients for future reply-to-reply processing (the staticGet() call was a cheaper way to do a lookup when we knew we only actually had to process groups that somebody signed up to); most important fix is simply to actually check for the exception! :) Here I'm changing the order of processing so we do the local group lookup first -- where it's nice and safe -- and then when we do the remote checks, we'll go ahead and gracefully skip that entry if the full remote lookup fails, so we'll still process any following recipients. --- plugins/OStatus/classes/Ostatus_profile.php | 33 ++++++++++++++--------------- 1 file changed, 16 insertions(+), 17 deletions(-) (limited to 'plugins/OStatus/classes/Ostatus_profile.php') diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php index 19fe5169b..11ca67b25 100644 --- a/plugins/OStatus/classes/Ostatus_profile.php +++ b/plugins/OStatus/classes/Ostatus_profile.php @@ -703,23 +703,7 @@ class Ostatus_profile extends Memcached_DataObject continue; } - // Is the recipient a remote group? - $oprofile = Ostatus_profile::ensureProfileURI($recipient); - - if ($oprofile) { - if ($oprofile->isGroup()) { - // Deliver to local members of this remote group. - // @fixme sender verification? - $groups[] = $oprofile->group_id; - } else { - // may be canonicalized or something - $replies[] = $oprofile->uri; - } - continue; - } - // Is the recipient a local group? - // @fixme uri on user_group isn't reliable yet // $group = User_group::staticGet('uri', $recipient); $id = OStatusPlugin::localGroupFromUrl($recipient); if ($id) { @@ -738,7 +722,22 @@ class Ostatus_profile extends Memcached_DataObject } } - common_log(LOG_DEBUG, "Skipping reply to unrecognized profile $recipient"); + // Is the recipient a remote user or group? + try { + $oprofile = Ostatus_profile::ensureProfileURI($recipient); + if ($oprofile->isGroup()) { + // Deliver to local members of this remote group. + // @fixme sender verification? + $groups[] = $oprofile->group_id; + } else { + // may be canonicalized or something + $replies[] = $oprofile->uri; + } + continue; + } catch (Exception $e) { + // Neither a recognizable local nor remote user! + common_log(LOG_DEBUG, "Skipping reply to unrecognized profile $recipient: " . $e->getMessage()); + } } $attention_uris = $replies; -- cgit v1.2.3-54-g00ecf From 5a6f6162061985c9d0e67b7d25b94b5a53205ace Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Sun, 19 Sep 2010 15:17:36 +0200 Subject: * i18n/L10n update * translator comments added * remove superfluous whitespace --- plugins/OStatus/OStatusPlugin.php | 37 +++++++----- plugins/OStatus/actions/groupsalmon.php | 30 ++++++---- plugins/OStatus/actions/hostmeta.php | 1 - plugins/OStatus/actions/ostatusgroup.php | 8 ++- plugins/OStatus/actions/ostatusinit.php | 22 +++++-- plugins/OStatus/actions/ostatussub.php | 42 ++++++++----- plugins/OStatus/actions/ownerxrd.php | 2 +- plugins/OStatus/actions/pushcallback.php | 26 ++++---- plugins/OStatus/actions/pushhub.php | 37 ++++++------ plugins/OStatus/actions/usersalmon.php | 48 ++++++++------- plugins/OStatus/actions/userxrd.php | 8 +-- plugins/OStatus/classes/FeedSub.php | 9 +-- plugins/OStatus/classes/HubSub.php | 13 ++-- plugins/OStatus/classes/Magicsig.php | 4 -- plugins/OStatus/classes/Ostatus_profile.php | 93 +++++++++++++++-------------- plugins/OStatus/classes/Ostatus_source.php | 4 -- plugins/OStatus/lib/discovery.php | 4 +- plugins/OStatus/lib/discoveryhints.php | 1 - plugins/OStatus/lib/linkheader.php | 3 + plugins/OStatus/lib/magicenvelope.php | 6 +- plugins/OStatus/lib/ostatusqueuehandler.php | 1 - plugins/OStatus/lib/pushinqueuehandler.php | 1 - plugins/OStatus/lib/salmon.php | 5 +- plugins/OStatus/lib/salmonaction.php | 17 +++++- plugins/OStatus/lib/xrd.php | 7 ++- plugins/OStatus/lib/xrdaction.php | 1 - 26 files changed, 236 insertions(+), 194 deletions(-) (limited to 'plugins/OStatus/classes/Ostatus_profile.php') diff --git a/plugins/OStatus/OStatusPlugin.php b/plugins/OStatus/OStatusPlugin.php index 77bc9872b..2dddfcbe2 100644 --- a/plugins/OStatus/OStatusPlugin.php +++ b/plugins/OStatus/OStatusPlugin.php @@ -223,6 +223,7 @@ class OStatusPlugin extends Plugin array('nickname' => $profile->nickname)); $output->element('a', array('href' => $url, 'class' => 'entity_remote_subscribe'), + // TRANS: Link description for link to subscribe to a remote user. _m('Subscribe')); $output->elementEnd('li'); @@ -241,6 +242,7 @@ class OStatusPlugin extends Plugin array('group' => $group->nickname)); $output->element('a', array('href' => $url, 'class' => 'entity_remote_subscribe'), + // TRANS: Link description for link to join a remote group. _m('Join')); } @@ -453,6 +455,7 @@ class OStatusPlugin extends Plugin } $url = $notice->url; + // TRANSLATE: %s is a domain. $title = sprintf(_m("Sent from %s via OStatus"), $domain); return false; } @@ -524,6 +527,7 @@ class OStatusPlugin extends Plugin } if (!$oprofile->subscribe()) { + // TRANS: Exception. throw new Exception(_m('Could not set up remote subscription.')); } } @@ -563,10 +567,10 @@ class OStatusPlugin extends Plugin common_date_iso8601(time())); $act->time = time(); - $act->title = _("Follow"); + $act->title = _m("Follow"); // TRANS: Success message for subscribe to user attempt through OStatus. // TRANS: %1$s is the subscriber name, %2$s is the subscribed user's name. - $act->content = sprintf(_("%1$s is now following %2$s."), + $act->content = sprintf(_m('%1$s is now following %2$s.'), $subscriber->getBestName(), $other->getBestName()); @@ -613,10 +617,10 @@ class OStatusPlugin extends Plugin common_date_iso8601(time())); $act->time = time(); - $act->title = _("Unfollow"); + $act->title = _m('Unfollow'); // TRANS: Success message for unsubscribe from user attempt through OStatus. // TRANS: %1$s is the unsubscriber's name, %2$s is the unsubscribed user's name. - $act->content = sprintf(_("%1$s stopped following %2$s."), + $act->content = sprintf(_m('%1$s stopped following %2$s.'), $profile->getBestName(), $other->getBestName()); @@ -671,6 +675,7 @@ class OStatusPlugin extends Plugin return true; } else { $oprofile->garbageCollect(); + // TRANS: Exception. throw new Exception(_m("Failed joining remote group.")); } } @@ -729,7 +734,6 @@ class OStatusPlugin extends Plugin * @param Notice $notice being favored * @return hook return value */ - function onEndFavorNotice(Profile $profile, Notice $notice) { $user = User::staticGet('id', $profile->id); @@ -753,10 +757,10 @@ class OStatusPlugin extends Plugin common_date_iso8601(time())); $act->time = time(); - $act->title = _("Favor"); + $act->title = _m('Favor'); // TRANS: Success message for adding a favorite notice through OStatus. // TRANS: %1$s is the favoring user's name, %2$s is URI to the favored notice. - $act->content = sprintf(_("%1$s marked notice %2$s as a favorite."), + $act->content = sprintf(_m('%1$s marked notice %2$s as a favorite.'), $profile->getBestName(), $notice->uri); @@ -799,10 +803,10 @@ class OStatusPlugin extends Plugin $notice->id, common_date_iso8601(time())); $act->time = time(); - $act->title = _("Disfavor"); + $act->title = _m('Disfavor'); // TRANS: Success message for remove a favorite notice through OStatus. // TRANS: %1$s is the unfavoring user's name, %2$s is URI to the no longer favored notice. - $act->content = sprintf(_("%1$s marked notice %2$s as no longer a favorite."), + $act->content = sprintf(_m('%1$s marked notice %2$s as no longer a favorite.'), $profile->getBestName(), $notice->uri); @@ -876,8 +880,9 @@ class OStatusPlugin extends Plugin $action->elementStart('p', array('id' => 'entity_remote_subscribe', 'class' => 'entity_subscribe')); $action->element('a', array('href' => common_local_url($target), - 'class' => 'entity_remote_subscribe') - , _m('Remote')); // @todo: i18n: Add translator hint for this text. + 'class' => 'entity_remote_subscribe'), + // TRANS: Link text for link to remote subscribe. + _m('Remote')); $action->elementEnd('p'); $action->elementEnd('div'); } @@ -916,6 +921,7 @@ class OStatusPlugin extends Plugin $profile->id, common_date_iso8601(time())); $act->time = time(); + // TRANS: Title for activity. $act->title = _m("Profile update"); // TRANS: Ping text for remote profile update through OStatus. // TRANS: %s is user that updated their profile. @@ -948,7 +954,8 @@ class OStatusPlugin extends Plugin array('nickname' => $profileUser->nickname)); $output->element('a', array('href' => $url, 'class' => 'entity_remote_subscribe'), - _m('Subscribe')); // @todo: i18n: Add context. + // TRANS: Link text for a user to subscribe to an OStatus user. + _m('Subscribe')); $output->elementEnd('li'); } } @@ -962,9 +969,9 @@ class OStatusPlugin extends Plugin 'version' => STATUSNET_VERSION, 'author' => 'Evan Prodromou, James Walker, Brion Vibber, Zach Copley', 'homepage' => 'http://status.net/wiki/Plugin:OStatus', - 'rawdescription' => - _m('Follow people across social networks that implement '. - 'OStatus.')); // @todo i18n: Add translator hint. + // TRANS: Plugin description. + 'rawdescription' => _m('Follow people across social networks that implement '. + 'OStatus.')); return true; } diff --git a/plugins/OStatus/actions/groupsalmon.php b/plugins/OStatus/actions/groupsalmon.php index 5094dccf0..3a3d63fe2 100644 --- a/plugins/OStatus/actions/groupsalmon.php +++ b/plugins/OStatus/actions/groupsalmon.php @@ -17,15 +17,14 @@ * along with this program. If not, see . */ -/** - * @package OStatusPlugin - * @author James Walker - */ - if (!defined('STATUSNET')) { exit(1); } +/** + * @package OStatusPlugin + * @author James Walker + */ class GroupsalmonAction extends SalmonAction { var $group = null; @@ -37,17 +36,20 @@ class GroupsalmonAction extends SalmonAction $id = $this->trimmed('id'); if (!$id) { - $this->clientError(_('No ID.')); + // TRANS: Client error. + $this->clientError(_m('No ID.')); } $this->group = User_group::staticGet('id', $id); if (empty($this->group)) { - $this->clientError(_('No such group.')); + // TRANS: Client error. + $this->clientError(_m('No such group.')); } $oprofile = Ostatus_profile::staticGet('group_id', $id); if ($oprofile) { + // TRANS: Client error. $this->clientError(_m("Can't accept remote posts for a remote group.")); } @@ -57,7 +59,6 @@ class GroupsalmonAction extends SalmonAction /** * We've gotten a post event on the Salmon backchannel, probably a reply. */ - function handlePost() { // @fixme process all objects? @@ -69,18 +70,20 @@ class GroupsalmonAction extends SalmonAction case ActivityObject::COMMENT: break; default: + // TRANS: Client exception. throw new ClientException("Can't handle that kind of post."); } // Notice must be to the attention of this group - $context = $this->activity->context; if (empty($context->attention)) { + // TRANS: Client exception. throw new ClientException("Not to the attention of anyone."); } else { $uri = common_local_url('groupbyid', array('id' => $this->group->id)); if (!in_array($uri, $context->attention)) { + // TRANS: Client exception. throw new ClientException("Not to the attention of this group."); } } @@ -116,14 +119,15 @@ class GroupsalmonAction extends SalmonAction * currently we're doing the main logic in joingroup action * and so have to repeat it here. */ - function handleJoin() { $oprofile = $this->ensureProfile(); if (!$oprofile) { + // TRANS: Client error. $this->clientError(_m("Can't read profile to set up group membership.")); } if ($oprofile->isGroup()) { + // TRANS: Client error. $this->clientError(_m("Groups can't join groups.")); } @@ -137,7 +141,7 @@ class GroupsalmonAction extends SalmonAction } if (Group_block::isBlocked($this->group, $profile)) { - $this->clientError(_('You have been blocked from that group by the admin.'), 403); + $this->clientError(_m('You have been blocked from that group by the admin.'), 403); return false; } @@ -151,6 +155,7 @@ class GroupsalmonAction extends SalmonAction //Event::handle('EndJoinGroup', array($this->group, $profile)); //} } catch (Exception $e) { + // TRANS: Server error. %1$s is a profile URI, %2$s is a group nickname. $this->serverError(sprintf(_m('Could not join remote user %1$s to group %2$s.'), $oprofile->uri, $this->group->nickname)); } @@ -159,7 +164,6 @@ class GroupsalmonAction extends SalmonAction /** * A remote user left our group. */ - function handleLeave() { $oprofile = $this->ensureProfile(); @@ -180,10 +184,10 @@ class GroupsalmonAction extends SalmonAction //Event::handle('EndLeaveGroup', array($this->group, $profile)); //} } catch (Exception $e) { + // TRANS: Server error. %1$s is a profile URI, %2$s is a group nickname. $this->serverError(sprintf(_m('Could not remove remote user %1$s from group %2$s.'), $oprofile->uri, $this->group->nickname)); return; } } - } diff --git a/plugins/OStatus/actions/hostmeta.php b/plugins/OStatus/actions/hostmeta.php index 8ca07f916..db4c913e1 100644 --- a/plugins/OStatus/actions/hostmeta.php +++ b/plugins/OStatus/actions/hostmeta.php @@ -26,7 +26,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } class HostMetaAction extends Action { - function handle() { parent::handle(); diff --git a/plugins/OStatus/actions/ostatusgroup.php b/plugins/OStatus/actions/ostatusgroup.php index 1861e866f..7db00ffbe 100644 --- a/plugins/OStatus/actions/ostatusgroup.php +++ b/plugins/OStatus/actions/ostatusgroup.php @@ -72,13 +72,16 @@ class OStatusGroupAction extends OStatusSubAction $this->elementStart('ul', 'form_data'); $this->elementStart('li'); $this->input('profile', + // TRANS: Field label. _m('Join group'), $this->profile_uri, + // TRANS: Tooltip for field label "Join group". _m("OStatus group's address, like http://example.net/group/nickname.")); $this->elementEnd('li'); $this->elementEnd('ul'); - $this->submit('validate', _m('Continue')); + // TRANS: Button text. + $this->submit('validate', _m('BUTTON','Continue')); $this->elementEnd('fieldset'); @@ -156,7 +159,6 @@ class OStatusGroupAction extends OStatusSubAction * * @return string Title of the page */ - function title() { // TRANS: Page title for OStatus remote group join form @@ -168,9 +170,9 @@ class OStatusGroupAction extends OStatusSubAction * * @return instructions for use */ - function getInstructions() { + // TRANS: Instructions. return _m('You can subscribe to groups from other supported sites. Paste the group\'s profile URI below:'); } diff --git a/plugins/OStatus/actions/ostatusinit.php b/plugins/OStatus/actions/ostatusinit.php index 0c991aba9..f576823e3 100644 --- a/plugins/OStatus/actions/ostatusinit.php +++ b/plugins/OStatus/actions/ostatusinit.php @@ -27,7 +27,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } class OStatusInitAction extends Action { - var $nickname; var $group; var $profile; @@ -38,6 +37,7 @@ class OStatusInitAction extends Action parent::prepare($args); if (common_logged_in()) { + // TRANS: Client error. $this->clientError(_m('You can use the local subscription!')); return false; } @@ -78,6 +78,7 @@ class OStatusInitAction extends Action $this->xw->startDocument('1.0', 'UTF-8'); $this->elementStart('html'); $this->elementStart('head'); + // TRANS: Form title. $this->element('title', null, _m('Subscribe to user')); $this->elementEnd('head'); $this->elementStart('body'); @@ -92,11 +93,15 @@ class OStatusInitAction extends Action function showContent() { if ($this->group) { + // TRANS: Form legend. $header = sprintf(_m('Join group %s'), $this->group); - $submit = _m('Join'); + // TRANS: Button text. + $submit = _m('BUTTON','Join'); } else { + // TRANS: Form legend. $header = sprintf(_m('Subscribe to %s'), $this->nickname); - $submit = _m('Subscribe'); + // TRANS: Button text. + $submit = _m('BUTTON','Subscribe'); } $this->elementStart('form', array('id' => 'form_ostatus_connect', 'method' => 'post', @@ -108,12 +113,15 @@ class OStatusInitAction extends Action $this->elementStart('ul', 'form_data'); $this->elementStart('li', array('id' => 'ostatus_nickname')); + // TRANS: Field label. $this->input('nickname', _m('User nickname'), $this->nickname, _m('Nickname of the user you want to follow.')); $this->hidden('group', $this->group); // pass-through for magic links $this->elementEnd('li'); $this->elementStart('li', array('id' => 'ostatus_profile')); + // TRANS: Field label. $this->input('profile', _m('Profile Account'), $this->profile, + // TRANS: Tooltip for field label "Profile Account". _m('Your account id (e.g. user@identi.ca).')); $this->elementEnd('li'); $this->elementEnd('ul'); @@ -135,6 +143,7 @@ class OStatusInitAction extends Action } elseif (strpos($this->profile, '@') !== false) { $this->connectWebfinger($this->profile); } else { + // TRANS: Client error. $this->clientError(_m("Must provide a remote profile.")); } } @@ -146,6 +155,7 @@ class OStatusInitAction extends Action $disco = new Discovery; $result = $disco->lookup($acct); if (!$result) { + // TRANS: Client error. $this->clientError(_m("Couldn't look up OStatus account profile.")); } @@ -158,6 +168,7 @@ class OStatusInitAction extends Action } } + // TRANS: Client error. $this->clientError(_m("Couldn't confirm remote profile address.")); } @@ -183,6 +194,7 @@ class OStatusInitAction extends Action if ($user) { return common_local_url('userbyid', array('id' => $user->id)); } else { + // TRANS: Client error. $this->clientError("No such user."); } } else if ($this->group) { @@ -190,16 +202,18 @@ class OStatusInitAction extends Action if ($group) { return common_local_url('groupbyid', array('id' => $group->group_id)); } else { + // TRANS: Client error. $this->clientError("No such group."); } } else { + // TRANS: Client error. $this->clientError("No local user or group nickname provided."); } } function title() { + // TRANS: Page title. return _m('OStatus Connect'); } - } diff --git a/plugins/OStatus/actions/ostatussub.php b/plugins/OStatus/actions/ostatussub.php index 4cbd7d034..493b51965 100644 --- a/plugins/OStatus/actions/ostatussub.php +++ b/plugins/OStatus/actions/ostatussub.php @@ -62,13 +62,15 @@ class OStatusSubAction extends Action $this->elementStart('ul', 'form_data'); $this->elementStart('li'); $this->input('profile', + // TRANS: Field label for a field that takes an OStatus user address. _m('Subscribe to'), $this->profile_uri, - _m("OStatus user's address, like nickname@example.com or http://example.net/nickname")); // @todo i18n FIXME: needs context/translator hint. + // TRANS: Tooltip for field label "Subscribe to". + _m('OStatus user\'s address, like nickname@example.com or http://example.net/nickname')); $this->elementEnd('li'); $this->elementEnd('ul'); - - $this->submit('validate', _m('Continue')); // @todo i18n FIXME: needs context/translator hint. + // TRANS: Button text. + $this->submit('validate', _m('BUTTON','Continue')); $this->elementEnd('fieldset'); @@ -103,10 +105,14 @@ class OStatusSubAction extends Action $this->hidden('profile', $this->profile_uri); if ($this->oprofile->isGroup()) { $this->submit('submit', _m('Join'), 'submit', null, - _m('Join this group')); // @todo i18n FIXME: needs context/translator hint. + // TRANS: Button text. + // TRANS: Tooltip for button "Join". + _m('BUTTON','Join this group')); } else { - $this->submit('submit', _m('Confirm'), 'submit', null, - _m('Subscribe to this user')); // @todo i18n FIXME: needs context/translator hint. + // TRANS: Button text. + $this->submit('submit', _m('BUTTON','Confirm'), 'submit', null, + // TRANS: Tooltip for button "Confirm". + _m('Subscribe to this user')); } $this->elementEnd('fieldset'); $this->elementEnd('form'); @@ -156,7 +162,7 @@ class OStatusSubAction extends Action $this->elementStart('div', 'entity_profile vcard'); $this->elementStart('dl', 'entity_depiction'); - $this->element('dt', null, _('Photo')); + $this->element('dt', null, _m('Photo')); $this->elementStart('dd'); $this->element('img', array('src' => $avatar, 'class' => 'photo avatar', @@ -167,7 +173,7 @@ class OStatusSubAction extends Action $this->elementEnd('dl'); $this->elementStart('dl', 'entity_nickname'); - $this->element('dt', null, _('Nickname')); + $this->element('dt', null, _m('Nickname')); $this->elementStart('dd'); $hasFN = ($fullname !== '') ? 'nickname' : 'fn nickname'; $this->elementStart('a', array('href' => $profile, @@ -188,7 +194,7 @@ class OStatusSubAction extends Action } if (!is_null($location)) { $this->elementStart('dl', 'entity_location'); - $this->element('dt', null, _('Location')); + $this->element('dt', null, _m('Location')); $this->elementStart('dd', 'label'); $this->raw($location); $this->elementEnd('dd'); @@ -197,7 +203,7 @@ class OStatusSubAction extends Action if (!is_null($homepage)) { $this->elementStart('dl', 'entity_url'); - $this->element('dt', null, _('URL')); + $this->element('dt', null, _m('URL')); $this->elementStart('dd'); $this->elementStart('a', array('href' => $homepage, 'class' => 'url')); @@ -209,7 +215,7 @@ class OStatusSubAction extends Action if (!is_null($note)) { $this->elementStart('dl', 'entity_note'); - $this->element('dt', null, _('Note')); + $this->element('dt', null, _m('Note')); $this->elementStart('dd', 'note'); $this->raw($note); $this->elementEnd('dd'); @@ -244,31 +250,39 @@ class OStatusSubAction extends Action } else if (Validate::uri($this->profile_uri)) { $this->oprofile = Ostatus_profile::ensureProfileURL($this->profile_uri); } else { + // TRANS: Error text. $this->error = _m("Sorry, we could not reach that address. Please make sure that the OStatus address is like nickname@example.com or http://example.net/nickname."); common_debug('Invalid address format.', __FILE__); return false; } return true; } catch (FeedSubBadURLException $e) { + // TRANS: Error text. $this->error = _m("Sorry, we could not reach that address. Please make sure that the OStatus address is like nickname@example.com or http://example.net/nickname."); common_debug('Invalid URL or could not reach server.', __FILE__); } catch (FeedSubBadResponseException $e) { + // TRANS: Error text. $this->error = _m("Sorry, we could not reach that feed. Please try that OStatus address again later."); common_debug('Cannot read feed; server returned error.', __FILE__); } catch (FeedSubEmptyException $e) { + // TRANS: Error text. $this->error = _m("Sorry, we could not reach that feed. Please try that OStatus address again later."); common_debug('Cannot read feed; server returned an empty page.', __FILE__); } catch (FeedSubBadHTMLException $e) { + // TRANS: Error text. $this->error = _m("Sorry, we could not reach that feed. Please try that OStatus address again later."); common_debug('Bad HTML, could not find feed link.', __FILE__); } catch (FeedSubNoFeedException $e) { + // TRANS: Error text. $this->error = _m("Sorry, we could not reach that feed. Please try that OStatus address again later."); common_debug('Could not find a feed linked from this URL.', __FILE__); } catch (FeedSubUnrecognizedTypeException $e) { + // TRANS: Error text. $this->error = _m("Sorry, we could not reach that feed. Please try that OStatus address again later."); common_debug('Not a recognized feed type.', __FILE__); } catch (Exception $e) { // Any new ones we forgot about + // TRANS: Error text. $this->error = _m("Sorry, we could not reach that address. Please make sure that the OStatus address is like nickname@example.com or http://example.net/nickname."); common_debug(sprintf('Bad feed URL: %s %s', get_class($e), $e->getMessage()), __FILE__); } @@ -350,7 +364,7 @@ class OStatusSubAction extends Action // CSRF protection $token = $this->trimmed('token'); if (!$token || $token != common_session_token()) { - $this->showForm(_('There was a problem with your session token. '. + $this->showForm(_m('There was a problem with your session token. '. 'Try again, please.')); return; } @@ -377,6 +391,7 @@ class OStatusSubAction extends Action $this->xw->startDocument('1.0', 'UTF-8'); $this->elementStart('html'); $this->elementStart('head'); + // TRANS: Form title. $this->element('title', null, _m('Subscribe to user')); $this->elementEnd('head'); $this->elementStart('body'); @@ -408,6 +423,7 @@ class OStatusSubAction extends Action function getInstructions() { + // TRANS: Instructions. return _m('You can subscribe to users from other supported sites. Paste their address or profile URI below:'); } @@ -426,7 +442,6 @@ class OStatusSubAction extends Action * * @return void */ - function showContent() { if ($this->oprofile) { @@ -459,5 +474,4 @@ class OStatusSubAction extends Action function showNoticeForm() { // nop } - } diff --git a/plugins/OStatus/actions/ownerxrd.php b/plugins/OStatus/actions/ownerxrd.php index 3fcb982b8..9e84f72ec 100644 --- a/plugins/OStatus/actions/ownerxrd.php +++ b/plugins/OStatus/actions/ownerxrd.php @@ -34,7 +34,7 @@ class OwnerxrdAction extends XrdAction $this->user = User::siteOwner(); if (!$this->user) { - $this->clientError(_('No such user.'), 404); + $this->clientError(_m('No such user.'), 404); return false; } diff --git a/plugins/OStatus/actions/pushcallback.php b/plugins/OStatus/actions/pushcallback.php index 6c6978745..701a39c16 100644 --- a/plugins/OStatus/actions/pushcallback.php +++ b/plugins/OStatus/actions/pushcallback.php @@ -24,7 +24,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } - class PushCallbackAction extends Action { function handle() @@ -46,13 +45,13 @@ class PushCallbackAction extends Action $feedid = $this->arg('feed'); common_log(LOG_INFO, "POST for feed id $feedid"); if (!$feedid) { - throw new ServerException('Empty or invalid feed id.', 400); + throw new ServerException(_m('Empty or invalid feed id.'), 400); } $feedsub = FeedSub::staticGet('id', $feedid); if (!$feedsub) { - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ServerException('Unknown PuSH feed id ' . $feedid, 400); + // TRANS: Server exception. %s is a feed ID. + throw new ServerException(sprintf(_m('Unknown PuSH feed id %s'),$feedid), 400); } $hmac = ''; @@ -84,30 +83,31 @@ class PushCallbackAction extends Action $verify_token = $this->arg('hub_verify_token'); if ($mode != 'subscribe' && $mode != 'unsubscribe') { - throw new ClientException("Bad hub.mode $mode", 404); + // TRANS: Client exception. %s is an invalid value for hub.mode. + throw new ClientException(sprintf(_m('Bad hub.mode "$s".',$mode)), 404); } $feedsub = FeedSub::staticGet('uri', $topic); if (!$feedsub) { - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ClientException("Bad hub.topic feed $topic.", 404); + // TRANS: Client exception. %s is an invalid feed name. + throw new ClientException(sprintf(_m('Bad hub.topic feed "%s".'),$topic), 404); } if ($feedsub->verify_token !== $verify_token) { - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ClientException("Bad hub.verify_token $token for $topic.", 404); + // TRANS: Client exception. %1$s the invalid token, %2$s is the topic for which the invalid token was given. + throw new ClientException(sprintf(_m('Bad hub.verify_token %1$s for %2$s.'),$token,$topic), 404); } if ($mode == 'subscribe') { // We may get re-sub requests legitimately. if ($feedsub->sub_state != 'subscribe' && $feedsub->sub_state != 'active') { - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ClientException("Unexpected subscribe request for $topic.", 404); + // TRANS: Client exception. %s is an invalid topic. + throw new ClientException(sprintf(_m('Unexpected subscribe request for %s.'),$topic), 404); } } else { if ($feedsub->sub_state != 'unsubscribe') { - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ClientException("Unexpected unsubscribe request for $topic.", 404); + // TRANS: Client exception. %s is an invalid topic. + throw new ClientException(sprintf(_m('Unexpected unsubscribe request for %s.'),$topic), 404); } } diff --git a/plugins/OStatus/actions/pushhub.php b/plugins/OStatus/actions/pushhub.php index 6909b8539..68035ab5c 100644 --- a/plugins/OStatus/actions/pushhub.php +++ b/plugins/OStatus/actions/pushhub.php @@ -62,11 +62,11 @@ class PushHubAction extends Action $this->subunsub($mode); break; case "publish": - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ClientException("Publishing outside feeds not supported.", 400); + // TRANS: Client exception. + throw new ClientException(_m('Publishing outside feeds not supported.'), 400); default: - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ClientException("Unrecognized mode '$mode'.", 400); + // TRANS: Client exception. %s is a mode. + throw new ClientException(sprintf(_m('Unrecognized mode "%s".'),$mode), 400); } } @@ -85,28 +85,28 @@ class PushHubAction extends Action $topic = $this->argUrl('hub.topic'); if (!$this->recognizedFeed($topic)) { - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ClientException("Unsupported hub.topic $topic; this hub only serves local user and group Atom feeds."); + // TRANS: Client exception. %s is a topic. + throw new ClientException(sprintf(_m('Unsupported hub.topic %s this hub only serves local user and group Atom feeds.'),$topic)); } $verify = $this->arg('hub.verify'); // @fixme may be multiple if ($verify != 'sync' && $verify != 'async') { - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ClientException("Invalid hub.verify $verify; must be sync or async."); + // TRANS: Client exception. + throw new ClientException(sprintf(_m('Invalid hub.verify "%s". It must be sync or async.'),$verify)); } $lease = $this->arg('hub.lease_seconds', null); if ($mode == 'subscribe' && $lease != '' && !preg_match('/^\d+$/', $lease)) { - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ClientException("Invalid hub.lease $lease; must be empty or positive integer."); + // TRANS: Client exception. + throw new ClientException(sprintf(_m('Invalid hub.lease "%s". It must be empty or positive integer.'),$lease)); } $token = $this->arg('hub.verify_token', null); $secret = $this->arg('hub.secret', null); if ($secret != '' && strlen($secret) >= 200) { - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ClientException("Invalid hub.secret $secret; must be under 200 bytes."); + // TRANS: Client exception. + throw new ClientException(sprintf(_m('Invalid hub.secret "%s". It must be under 200 bytes.'),$secret)); } $sub = HubSub::staticGet($topic, $callback); @@ -157,8 +157,8 @@ class PushHubAction extends Action if ($feed == $userFeed) { $user = User::staticGet('id', $id); if (!$user) { - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ClientException("Invalid hub.topic $feed; user doesn't exist."); + // TRANS: Client exception. + throw new ClientException(sprintt(_m('Invalid hub.topic "%s". User doesn\'t exist.'),$feed)); } else { return true; } @@ -166,8 +166,8 @@ class PushHubAction extends Action if ($feed == $groupFeed) { $user = User_group::staticGet('id', $id); if (!$user) { - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ClientException("Invalid hub.topic $feed; group doesn't exist."); + // TRANS: Client exception. + throw new ClientException(sprintf(_m('Invalid hub.topic "%s". Group doesn\'t exist.'),$feed)); } else { return true; } @@ -190,8 +190,9 @@ class PushHubAction extends Action if (Validate::uri($url, $params)) { return $url; } else { - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new ClientException("Invalid URL passed for $arg: '$url'"); + // TRANS: Client exception. + // TRANS: %1$s is this argument to the method this exception occurs in, %2$s is a URL. + throw new ClientException(sprintf(_m('Invalid URL passed for %1$s: "%2$s"'),$arg,$url)); } } diff --git a/plugins/OStatus/actions/usersalmon.php b/plugins/OStatus/actions/usersalmon.php index 06a72bf02..e78c65330 100644 --- a/plugins/OStatus/actions/usersalmon.php +++ b/plugins/OStatus/actions/usersalmon.php @@ -17,15 +17,14 @@ * along with this program. If not, see . */ -/** - * @package OStatusPlugin - * @author James Walker - */ - if (!defined('STATUSNET')) { exit(1); } +/** + * @package OStatusPlugin + * @author James Walker + */ class UsersalmonAction extends SalmonAction { function prepare($args) @@ -35,13 +34,13 @@ class UsersalmonAction extends SalmonAction $id = $this->trimmed('id'); if (!$id) { - $this->clientError(_('No ID.')); + $this->clientError(_m('No ID.')); } $this->user = User::staticGet('id', $id); if (empty($this->user)) { - $this->clientError(_('No such user.')); + $this->clientError(_m('No such user.')); } return true; @@ -78,20 +77,24 @@ class UsersalmonAction extends SalmonAction if (!empty($context->replyToID)) { $notice = Notice::staticGet('uri', $context->replyToID); if (empty($notice)) { - throw new ClientException("In reply to unknown notice"); + // TRANS: Client exception. + throw new ClientException(_m('In reply to unknown notice.')); } if ($notice->profile_id != $this->user->id && !in_array($this->user->id, $notice->getReplies())) { - throw new ClientException("In reply to a notice not by this user and not mentioning this user"); + // TRANS: Client exception. + throw new ClientException(_m('In reply to a notice not by this user and not mentioning this user.')); } } else if (!empty($context->attention)) { if (!in_array($this->user->uri, $context->attention) && !in_array(common_profile_url($this->user->nickname), $context->attention)) { common_log(LOG_ERR, "{$this->user->uri} not in attention list (".implode(',', $context->attention).")"); - throw new ClientException("To the attention of user(s) not including this one!"); + // TRANS: Client exception. + throw new ClientException('To the attention of user(s), not including this one.'); } } else { - throw new ClientException("Not to anyone in reply to anything!"); + // TRANS: Client exception. + throw new ClientException('Not to anyone in reply to anything.'); } $existing = Notice::staticGet('uri', $this->activity->objects[0]->id); @@ -108,7 +111,6 @@ class UsersalmonAction extends SalmonAction * We've gotten a follow/subscribe notification from a remote user. * Save a subscription relationship for them. */ - function handleFollow() { $oprofile = $this->ensureProfile(); @@ -152,11 +154,13 @@ class UsersalmonAction extends SalmonAction 'notice_id' => $notice->id)); if (!empty($old)) { - throw new ClientException("We already know that's a fave!"); + // TRANS: Client exception. + throw new ClientException(_('This is already a favorite.')); } if (!Fave::addNew($profile, $notice)) { - throw new ClientException("Could not save new favorite."); + // TRANS: Client exception. + throw new ClientException(_m('Could not save new favorite.')); } } @@ -172,7 +176,8 @@ class UsersalmonAction extends SalmonAction $fave = Fave::pkeyGet(array('user_id' => $profile->id, 'notice_id' => $notice->id)); if (empty($fave)) { - throw new ClientException("Notice wasn't favorited!"); + // TRANS: Client exception. + throw new ClientException(_('Notice wasn\'t favorited!')); } $fave->delete(); @@ -186,7 +191,8 @@ class UsersalmonAction extends SalmonAction function getNotice($object) { if (!$object) { - throw new ClientException("Can't favorite/unfavorite without an object."); + // TRANS: Client exception. + throw new ClientException(_m('Can\'t favorite/unfavorite without an object.')); } switch ($object->type) { @@ -197,20 +203,22 @@ class UsersalmonAction extends SalmonAction case ActivityObject::COMMENT: break; default: - throw new ClientException("Can't handle that kind of object for liking/faving."); + // TRANS: Client exception. + throw new ClientException(_m('Can\'t handle that kind of object for liking/faving.')); } $notice = Notice::staticGet('uri', $object->id); if (empty($notice)) { - throw new ClientException("Notice with ID $object->id unknown."); + // TRANS: Client exception. %s is an object ID. + throw new ClientException(sprintf(_m('Notice with ID %s unknown.'),$object->id)); } if ($notice->profile_id != $this->user->id) { - throw new ClientException("Notice with ID $object->id not posted by $this->user->id."); + // TRANS: Client exception. %1$s is a notice ID, %2$s is a user ID. + throw new ClientException(sprintf(_m('Notice with ID %1$s not posted by %2$s.'),$object->id,$this->user->id)); } return $notice; } - } diff --git a/plugins/OStatus/actions/userxrd.php b/plugins/OStatus/actions/userxrd.php index dd720568b..9aa7c0306 100644 --- a/plugins/OStatus/actions/userxrd.php +++ b/plugins/OStatus/actions/userxrd.php @@ -17,16 +17,14 @@ * along with this program. If not, see . */ +if (!defined('STATUSNET')) { exit(1); } + /** * @package OStatusPlugin * @maintainer James Walker */ - -if (!defined('STATUSNET')) { exit(1); } - class UserxrdAction extends XrdAction { - function prepare($args) { parent::prepare($args); @@ -46,7 +44,7 @@ class UserxrdAction extends XrdAction $this->user = User::staticGet('uri', $this->uri); } if (!$this->user) { - $this->clientError(_('No such user.'), 404); + $this->clientError(_m('No such user.'), 404); return false; } diff --git a/plugins/OStatus/classes/FeedSub.php b/plugins/OStatus/classes/FeedSub.php index 6f9e0856a..58beec673 100644 --- a/plugins/OStatus/classes/FeedSub.php +++ b/plugins/OStatus/classes/FeedSub.php @@ -39,7 +39,6 @@ PuSH subscription flow: hub sends us updates via POST */ - class FeedDBException extends FeedSubException { public $obj; @@ -88,7 +87,6 @@ class FeedSub extends Memcached_DataObject * * @return array array of column definitions */ - function table() { return array('id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, @@ -143,7 +141,6 @@ class FeedSub extends Memcached_DataObject * * @return array key definitions */ - function keys() { return array_keys($this->keyTypes()); @@ -157,7 +154,6 @@ class FeedSub extends Memcached_DataObject * * @return array key definitions */ - function keyTypes() { return array('id' => 'K', 'uri' => 'U'); @@ -249,7 +245,7 @@ class FeedSub extends Memcached_DataObject // We'll never actually get updates in this mode. return true; } else { - throw new ServerException("Attempting to start PuSH subscription for feed with no hub."); + throw new ServerException(_m('Attempting to start PuSH subscription for feed with no hub.')); } } @@ -279,7 +275,7 @@ class FeedSub extends Memcached_DataObject // We'll never actually get updates in this mode. return true; } else { - throw new ServerException("Attempting to end PuSH subscription for feed with no hub."); + throw new ServerException(_m('Attempting to end PuSH subscription for feed with no hub.')); } } @@ -500,5 +496,4 @@ class FeedSub extends Memcached_DataObject } return false; } - } diff --git a/plugins/OStatus/classes/HubSub.php b/plugins/OStatus/classes/HubSub.php index e01ae4e79..825d36ebd 100644 --- a/plugins/OStatus/classes/HubSub.php +++ b/plugins/OStatus/classes/HubSub.php @@ -54,7 +54,6 @@ class HubSub extends Memcached_DataObject * * @return array array of column definitions */ - function table() { return array('hashkey' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL, @@ -112,7 +111,6 @@ class HubSub extends Memcached_DataObject * * @return array key definitions */ - function keyTypes() { return array('hashkey' => 'K'); @@ -206,8 +204,8 @@ class HubSub extends Memcached_DataObject if ($status >= 200 && $status < 300) { common_log(LOG_INFO, "Verified $mode of $this->callback:$this->topic"); } else { - // @todo i18n FIXME: add i18n and use sprintf for parameter. - throw new ClientException("Hub subscriber verification returned HTTP $status"); + // TRANS: Client exception. %s is a HTTP status code. + throw new ClientException(sprintf(_m('Hub subscriber verification returned HTTP %s.'),$status)); } $old = HubSub::staticGet($this->topic, $this->callback); @@ -353,10 +351,9 @@ class HubSub extends Memcached_DataObject if ($response->isOk()) { return true; } else { - throw new Exception("Callback returned status: " . - $response->getStatus() . - "; body: " . - trim($response->getBody())); + // TRANS: Exception. %1$s is a response status code, %2$s is the body of the response. + throw new Exception(sprintf(_m('Callback returned status: %1$s. Body: %2$s'), + $response->getStatus(),trim($response->getBody()))); } } } diff --git a/plugins/OStatus/classes/Magicsig.php b/plugins/OStatus/classes/Magicsig.php index e39a6d8f7..20025c37a 100644 --- a/plugins/OStatus/classes/Magicsig.php +++ b/plugins/OStatus/classes/Magicsig.php @@ -31,7 +31,6 @@ require_once 'Crypt/RSA.php'; class Magicsig extends Memcached_DataObject { - const PUBLICKEYREL = 'magic-public-key'; public $__table = 'magicsig'; @@ -86,7 +85,6 @@ class Magicsig extends Memcached_DataObject 64, false)); } - function keys() { return array_keys($this->keyTypes()); @@ -126,7 +124,6 @@ class Magicsig extends Memcached_DataObject $this->insert(); } - public function toString($full_pair = true) { $mod = Magicsig::base64_url_encode($this->publicKey->modulus->toBytes()); @@ -197,7 +194,6 @@ class Magicsig extends Memcached_DataObject case 'RSA-SHA256': return 'sha256'; } - } public function sign($bytes) diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php index 11ca67b25..402d1967f 100644 --- a/plugins/OStatus/classes/Ostatus_profile.php +++ b/plugins/OStatus/classes/Ostatus_profile.php @@ -21,7 +21,6 @@ * @package OStatusPlugin * @maintainer Brion Vibber */ - class Ostatus_profile extends Memcached_DataObject { public $__table = 'ostatus_profile'; @@ -51,7 +50,6 @@ class Ostatus_profile extends Memcached_DataObject * * @return array array of column definitions */ - function table() { return array('uri' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL, @@ -92,7 +90,6 @@ class Ostatus_profile extends Memcached_DataObject * * @return array key definitions */ - function keys() { return array_keys($this->keyTypes()); @@ -106,7 +103,6 @@ class Ostatus_profile extends Memcached_DataObject * * @return array key definitions */ - function keyTypes() { return array('uri' => 'K', 'profile_id' => 'U', 'group_id' => 'U', 'feeduri' => 'U'); @@ -188,11 +184,11 @@ class Ostatus_profile extends Memcached_DataObject } else if ($this->group_id && !$this->profile_id) { return true; } else if ($this->group_id && $this->profile_id) { - // @todo i18n FIXME: use sprintf and add i18n. - throw new ServerException("Invalid ostatus_profile state: both group and profile IDs set for $this->uri."); + // TRANS: Server exception. + throw new ServerException(sprintf(_m('Invalid ostatus_profile state: both group and profile IDs set for %s.'),$this->uri)); } else { - // @todo i18n FIXME: use sprintf and add i18n. - throw new ServerException("Invalid ostatus_profile state: both group and profile IDs empty for $this->uri."); + // TRANS: Server exception. + throw new ServerException(sprintf(_m('Invalid ostatus_profile state: both group and profile IDs empty for %s.'),$this->uri)); } } @@ -280,7 +276,9 @@ class Ostatus_profile extends Memcached_DataObject if ($type == 'object') { $type = get_class($actor); } - throw new ServerException("Invalid actor passed to " . __METHOD__ . ": " . $type); + // TRANS: Server exception. + // TRANS: %1$s is the method name the exception occured in, %2$s is the actor type. + throw new ServerException(sprintf(_m('Invalid actor passed to %1$s: %2$s.'),__METHOD__,$type)); } if ($object == null) { $object = $this; @@ -372,8 +370,8 @@ class Ostatus_profile extends Memcached_DataObject } else if ($entry instanceof Notice) { return $preamble . $entry->asAtomEntry(true, true); } else { - // @todo i18n FIXME: use sprintf and add i18n. - throw new ServerException("Invalid type passed to Ostatus_profile::notify; must be XML string or Activity entry."); + // TRANS: Server exception. + throw new ServerException(_m('Invalid type passed to Ostatus_profile::notify. It must be XML string or Activity entry.')); } } @@ -403,7 +401,7 @@ class Ostatus_profile extends Memcached_DataObject } else if ($feed->localName == 'rss') { // @fixme check namespace $this->processRssFeed($feed, $source); } else { - throw new Exception("Unknown feed format."); + throw new Exception(_m('Unknown feed format.')); } } @@ -426,7 +424,7 @@ class Ostatus_profile extends Memcached_DataObject $channels = $rss->getElementsByTagName('channel'); if ($channels->length == 0) { - throw new Exception("RSS feed without a channel."); + throw new Exception(_m('RSS feed without a channel.')); } else if ($channels->length > 1) { common_log(LOG_WARNING, __METHOD__ . ": more than one channel in an RSS feed"); } @@ -470,7 +468,8 @@ class Ostatus_profile extends Memcached_DataObject } break; default: - throw new ClientException("Can't handle that kind of post."); + // TRANS: Client exception. + throw new ClientException(_m('Can\'t handle that kind of post.')); } Event::handle('EndHandleFeedEntry', array($activity)); @@ -552,8 +551,8 @@ class Ostatus_profile extends Memcached_DataObject $sourceContent = $note->title; } else { // @fixme fetch from $sourceUrl? - // @todo i18n FIXME: use sprintf and add i18n. - throw new ClientException("No content for notice {$sourceUri}."); + // TRANS: Client exception. %s is a source URL. + throw new ClientException(sprintf(_m('No content for notice %s.'),$sourceUri)); } // Get (safe!) HTML and text versions of the content @@ -584,14 +583,17 @@ class Ostatus_profile extends Memcached_DataObject // We mark up the attachment link specially for the HTML output // so we can fold-out the full version inline. + + // TRANS: Shown when a notice is longer than supported and/or when attachments are present. + $showMoreText = _m('Show more'); $attachUrl = common_local_url('attachment', array('attachment' => $attachment->id)); $rendered = common_render_text($shortSummary) . '' . + ' title="'. htmlspecialchars($showMoreText) . '">' . '…' . - ''; // @todo i18n FIXME: add translator hint/context. + ''; } } @@ -775,8 +777,8 @@ class Ostatus_profile extends Memcached_DataObject $response = $client->get($profile_url); if (!$response->isOk()) { - // @todo i18n FIXME: use sprintf and add i18n. - throw new Exception("Could not reach profile page: " . $profile_url); + // TRANS: Exception. %s is a profile URL. + throw new Exception(sprintf(_m('Could not reach profile page %s.'),$profile_url)); } // Check if we have a non-canonical URL @@ -833,8 +835,8 @@ class Ostatus_profile extends Memcached_DataObject return self::ensureFeedURL($feedurl, $hints); } - // @todo i18n FIXME: use sprintf and add i18n. - throw new Exception("Could not find a feed URL for profile page " . $finalUrl); + // TRANS: Exception. + throw new Exception(sprintf(_m('Could not find a feed URL for profile page %s.'),$finalUrl)); } /** @@ -866,7 +868,7 @@ class Ostatus_profile extends Memcached_DataObject $user = User::staticGet('id', $profile->id); if (!empty($user)) { - // @todo i18n FIXME: use sprintf and add i18n. + // @todo i18n FIXME: use sprintf and add i18n (?) throw new OStatusShadowException($profile, "'$profile_url' is the profile for local user '{$user->nickname}'."); } @@ -971,8 +973,7 @@ class Ostatus_profile extends Memcached_DataObject } // XXX: make some educated guesses here - - throw new FeedSubException("Can't find enough profile information to make a feed."); + throw new FeedSubException(_m('Can\'t find enough profile information to make a feed.')); } /** @@ -1270,13 +1271,13 @@ class Ostatus_profile extends Memcached_DataObject $user = User::staticGet('uri', $homeuri); if ($user) { - // @todo i18n FIXME: add i18n. - throw new Exception("Local user can't be referenced as remote."); + // TRANS: Exception. + throw new Exception(_m('Local user can\'t be referenced as remote.')); } if (OStatusPlugin::localGroupFromUrl($homeuri)) { - // @todo i18n FIXME: add i18n. - throw new Exception("Local group can't be referenced as remote."); + // TRANS: Exception. + throw new Exception(_m('Local group can\'t be referenced as remote.')); } if (array_key_exists('feedurl', $hints)) { @@ -1327,8 +1328,8 @@ class Ostatus_profile extends Memcached_DataObject $oprofile->profile_id = $profile->insert(); if (!$oprofile->profile_id) { - // @todo i18n FIXME: add i18n. - throw new ServerException("Can't save local profile."); + // TRANS: Exception. + throw new ServerException(_m('Can\'t save local profile.')); } } else { $group = new User_group(); @@ -1338,16 +1339,16 @@ class Ostatus_profile extends Memcached_DataObject $oprofile->group_id = $group->insert(); if (!$oprofile->group_id) { - // @todo i18n FIXME: add i18n. - throw new ServerException("Can't save local profile."); + // TRANS: Exception. + throw new ServerException(_m('Can\'t save local profile.')); } } $ok = $oprofile->insert(); if (!$ok) { - // @todo i18n FIXME: add i18n. - throw new ServerException("Can't save OStatus profile."); + // TRANS: Exception. + throw new ServerException(_m('Can\'t save OStatus profile.')); } $avatar = self::getActivityObjectAvatar($object, $hints); @@ -1605,8 +1606,8 @@ class Ostatus_profile extends Memcached_DataObject if ($uri !== false) { if (is_null($uri)) { // Negative cache entry - // @todo i18n FIXME: add i18n. - throw new Exception('Not a valid webfinger address.'); + // TRANS: Exception. + throw new Exception(_m('Not a valid webfinger address.')); } $oprofile = Ostatus_profile::staticGet('uri', $uri); if (!empty($oprofile)) { @@ -1633,8 +1634,8 @@ class Ostatus_profile extends Memcached_DataObject // Save negative cache entry so we don't waste time looking it up again. // @fixme distinguish temporary failures? self::cacheSet(sprintf('ostatus_profile:webfinger:%s', $addr), null); - // @todo i18n FIXME: add i18n. - throw new Exception('Not a valid webfinger address.'); + // TRANS: Exception. + throw new Exception(_m('Not a valid webfinger address.')); } $hints = array('webfinger' => $addr); @@ -1715,8 +1716,8 @@ class Ostatus_profile extends Memcached_DataObject if (!$profile_id) { common_log_db_error($profile, 'INSERT', __FILE__); - // @todo i18n FIXME: add i18n and use sprintf for parameter. - throw new Exception("Couldn't save profile for '$addr'."); + // TRANS: Exception. %s is a webfinger address. + throw new Exception(sprintf(_m('Couldn\'t save profile for "%s".'),$addr)); } $oprofile = new Ostatus_profile(); @@ -1734,16 +1735,16 @@ class Ostatus_profile extends Memcached_DataObject if (!$result) { common_log_db_error($oprofile, 'INSERT', __FILE__); - // @todo i18n FIXME: add i18n and use sprintf for parameter. - throw new Exception("Couldn't save ostatus_profile for '$addr'."); + // TRANS: Exception. %s is a webfinger address. + throw new Exception(sprintf(_m('Couldn\'t save ostatus_profile for "%s".'),$addr)); } self::cacheSet(sprintf('ostatus_profile:webfinger:%s', $addr), $oprofile->uri); return $oprofile; } - // @todo i18n FIXME: add i18n and use sprintf for parameter. - throw new Exception("Couldn't find a valid profile for '$addr'"); + // TRANS: Exception. %s is a webfinger address. + throw new Exception(sprintf(_m('Couldn\'t find a valid profile for "%s".'),$addr)); } /** @@ -1785,7 +1786,7 @@ class Ostatus_profile extends Memcached_DataObject if ($file_id === false) { common_log_db_error($file, "INSERT", __FILE__); - throw new ServerException(_('Could not store HTML content of long post as file.')); + throw new ServerException(_m('Could not store HTML content of long post as file.')); } return $file; diff --git a/plugins/OStatus/classes/Ostatus_source.php b/plugins/OStatus/classes/Ostatus_source.php index e6ce7d442..b76bbce56 100644 --- a/plugins/OStatus/classes/Ostatus_source.php +++ b/plugins/OStatus/classes/Ostatus_source.php @@ -21,7 +21,6 @@ * @package OStatusPlugin * @maintainer Brion Vibber */ - class Ostatus_source extends Memcached_DataObject { public $__table = 'ostatus_source'; @@ -43,7 +42,6 @@ class Ostatus_source extends Memcached_DataObject * * @return array array of column definitions */ - function table() { return array('notice_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, @@ -69,7 +67,6 @@ class Ostatus_source extends Memcached_DataObject * * @return array key definitions */ - function keys() { return array_keys($this->keyTypes()); @@ -83,7 +80,6 @@ class Ostatus_source extends Memcached_DataObject * * @return array key definitions */ - function keyTypes() { return array('notice_id' => 'K'); diff --git a/plugins/OStatus/lib/discovery.php b/plugins/OStatus/lib/discovery.php index 04c672720..905ece2ca 100644 --- a/plugins/OStatus/lib/discovery.php +++ b/plugins/OStatus/lib/discovery.php @@ -106,8 +106,8 @@ class Discovery } } - // @todo Needs i18n. - throw new Exception('Unable to find services for '. $id . '.'); + // TRANS: Exception. + throw new Exception(sprintf(_m('Unable to find services for %s.'),$id)); } public static function getService($links, $service) { diff --git a/plugins/OStatus/lib/discoveryhints.php b/plugins/OStatus/lib/discoveryhints.php index fa2ead732..a98f4a6d6 100644 --- a/plugins/OStatus/lib/discoveryhints.php +++ b/plugins/OStatus/lib/discoveryhints.php @@ -20,7 +20,6 @@ */ class DiscoveryHints { - static function fromXRD($xrd) { $hints = array(); diff --git a/plugins/OStatus/lib/linkheader.php b/plugins/OStatus/lib/linkheader.php index cd78d31ce..efa3f65ff 100644 --- a/plugins/OStatus/lib/linkheader.php +++ b/plugins/OStatus/lib/linkheader.php @@ -1,4 +1,7 @@ $signature_alg->sign($armored_text), 'alg' => $signature_alg->getName() ); - } public function toXML($env) { @@ -110,7 +110,6 @@ class MagicEnvelope return $string; } - public function unfold($env) { $dom = new DOMDocument(); @@ -218,5 +217,4 @@ class MagicEnvelope 'sig' => preg_replace('/\s/', '', $sig_element->nodeValue), ); } - } diff --git a/plugins/OStatus/lib/ostatusqueuehandler.php b/plugins/OStatus/lib/ostatusqueuehandler.php index 9814cab9f..5e0ab46a5 100644 --- a/plugins/OStatus/lib/ostatusqueuehandler.php +++ b/plugins/OStatus/lib/ostatusqueuehandler.php @@ -221,5 +221,4 @@ class OStatusQueueHandler extends QueueHandler return $feed; } - } diff --git a/plugins/OStatus/lib/pushinqueuehandler.php b/plugins/OStatus/lib/pushinqueuehandler.php index 1fd29ae30..965d04266 100644 --- a/plugins/OStatus/lib/pushinqueuehandler.php +++ b/plugins/OStatus/lib/pushinqueuehandler.php @@ -22,7 +22,6 @@ * @package FeedSub * @author Brion Vibber */ - class PushInQueueHandler extends QueueHandler { function transport() diff --git a/plugins/OStatus/lib/salmon.php b/plugins/OStatus/lib/salmon.php index 631ebc7d8..963da6508 100644 --- a/plugins/OStatus/lib/salmon.php +++ b/plugins/OStatus/lib/salmon.php @@ -89,8 +89,8 @@ class Salmon $magickey->generate($user->id); } } else { - // @todo i18n FIXME: added i18n and use sprintf when using parameters. - throw new Exception("Salmon invalid actor for signing."); + // TRANS: Exception. + throw new Exception(_m('Salmon invalid actor for signing.')); } try { @@ -101,7 +101,6 @@ class Salmon return $magic_env->toXML($env); } - public function verifyMagicEnv($text) { $magic_env = new MagicEnvelope(); diff --git a/plugins/OStatus/lib/salmonaction.php b/plugins/OStatus/lib/salmonaction.php index f97c67edd..41bdb4892 100644 --- a/plugins/OStatus/lib/salmonaction.php +++ b/plugins/OStatus/lib/salmonaction.php @@ -38,11 +38,12 @@ class SalmonAction extends Action parent::prepare($args); if ($_SERVER['REQUEST_METHOD'] != 'POST') { - // TRANS: POST is a HTTP command. It should not be translated. + // TRANS: Client error. POST is a HTTP command. It should not be translated. $this->clientError(_m('This method requires a POST.')); } if (empty($_SERVER['CONTENT_TYPE']) || $_SERVER['CONTENT_TYPE'] != 'application/magic-envelope+xml') { + // TRANS: Client error. Do not translate "application/magic-envelope+xml" $this->clientError(_m('Salmon requires "application/magic-envelope+xml".')); } @@ -52,6 +53,7 @@ class SalmonAction extends Action $salmon = new Salmon; if (!$salmon->verifyMagicEnv($xml)) { common_log(LOG_DEBUG, "Salmon signature verification failed."); + // TRANS: Client error. $this->clientError(_m('Salmon signature verification failed.')); } else { $magic_env = new MagicEnvelope(); @@ -63,6 +65,7 @@ class SalmonAction extends Action if ($dom->documentElement->namespaceURI != Activity::ATOM || $dom->documentElement->localName != 'entry') { common_log(LOG_DEBUG, "Got invalid Salmon post: $xml"); + // TRANS: Client error. $this->clientError(_m('Salmon post must be an Atom entry.')); } @@ -111,6 +114,7 @@ class SalmonAction extends Action $this->handleUpdateProfile(); break; default: + // TRANS: Client exception. throw new ClientException(_m("Unrecognized activity type.")); } Event::handle('EndHandleSalmon', array($this->activity)); @@ -119,41 +123,49 @@ class SalmonAction extends Action function handlePost() { + // TRANS: Client exception. throw new ClientException(_m("This target doesn't understand posts.")); } function handleFollow() { + // TRANS: Client exception. throw new ClientException(_m("This target doesn't understand follows.")); } function handleUnfollow() { + // TRANS: Client exception. throw new ClientException(_m("This target doesn't understand unfollows.")); } function handleFavorite() { + // TRANS: Client exception. throw new ClientException(_m("This target doesn't understand favorites.")); } function handleUnfavorite() { + // TRANS: Client exception. throw new ClientException(_m("This target doesn't understand unfavorites.")); } function handleShare() { + // TRANS: Client exception. throw new ClientException(_m("This target doesn't understand share events.")); } function handleJoin() { + // TRANS: Client exception. throw new ClientException(_m("This target doesn't understand joins.")); } function handleLeave() { + // TRANS: Client exception. throw new ClientException(_m("This target doesn't understand leave events.")); } @@ -181,7 +193,8 @@ class SalmonAction extends Action if (empty($actor->id)) { common_log(LOG_ERR, "broken actor: " . var_export($actor, true)); common_log(LOG_ERR, "activity with no actor: " . var_export($this->activity, true)); - throw new Exception("Received a salmon slap from unidentified actor."); + // TRANS: Exception. + throw new Exception(_m('Received a salmon slap from unidentified actor.')); } return Ostatus_profile::ensureActivityObjectProfile($actor); diff --git a/plugins/OStatus/lib/xrd.php b/plugins/OStatus/lib/xrd.php index 145cd64cb..c8cffed9c 100644 --- a/plugins/OStatus/lib/xrd.php +++ b/plugins/OStatus/lib/xrd.php @@ -27,7 +27,6 @@ * @link http://status.net/ */ - class XRD { const XML_NS = 'http://www.w3.org/2000/xmlns/'; @@ -61,11 +60,13 @@ class XRD error_reporting($old); if (!$ok) { - throw new Exception("Invalid XML."); + // TRANS: Exception. + throw new Exception(_m('Invalid XML.')); } $xrd_element = $dom->getElementsByTagName('XRD')->item(0); if (!$xrd_element) { - throw new Exception("Invalid XML, missing XRD root."); + // TRANS: Exception. + throw new Exception(_m('Invalid XML, missing XRD root.')); } // Check for host-meta host diff --git a/plugins/OStatus/lib/xrdaction.php b/plugins/OStatus/lib/xrdaction.php index 91bb87cc2..c8b5beff3 100644 --- a/plugins/OStatus/lib/xrdaction.php +++ b/plugins/OStatus/lib/xrdaction.php @@ -103,5 +103,4 @@ class XrdAction extends Action header('Content-type: application/xrd+xml'); print $xrd->toXML(); } - } -- cgit v1.2.3-54-g00ecf