FastLizard4 has submitted this change and it was merged.
Change subject: Divide access-error into sub-messages, add block check
......................................................................
Divide access-error into sub-messages, add block check
The communitytwitter-access-error message is problematic. First of all, it
includes links encoded in
plain HTML, which is not good since it mixes raw code with messages. It also
makes the messages harder
to translate. This is reflected in how only half of the 18 languages that
CommunityTwitter has
translations for actually have the communitytwitter-access-error message
translated. The mixing of
HTML code with messages also obscures the need to translate the titles of each
link. This translation
is absent in about half of the 9 languages where a translation for the message
has been submitted.
With a full translation rate of 25%, the communitytwitter-access-error message
has to be split up so
HTML does not obfuscate translation.
In patchset #3, the error page has been split into two different pages, one
with a nologin error
(communitytwitter-nologin), and a second with an access error
(communitytwitter-access-error). Links
have been converted to the appropriate wikitext. In patchset 1, the titles were
given their own messages,
but this was dropped in patchset 3 for translation convenience.
In patchset #5, the 'twitter' right restriction is now passed to SpecialPage's
constructor and the
userCanExecute() method is now used to determine whether an access/login error
has not occurred.
In patchset #6, proper user rights error handling was introduced using the
communitytwitter-nologin and
communitytwitter-access-error messages, accompanying additional text in these
messages that elaborated
on group rights. User block checking was also added. This removed the need for
the communitytwitter-
unknown-error message to bring up the possibility of a user block; blocked
users no longer have access
to the special page. Patchset #7 introduces message plural checks on the groups
allowed to tweet.
Change-Id: I4fc3f17879b30bd5bc36b64e317ec56c9ab24ec2
---
M CommunityTwitter.i18n.php
M CommunityTwitter_body.php
2 files changed, 47 insertions(+), 11 deletions(-)
Approvals:
FastLizard4: Verified; Looks good to me, approved
RAN1: Verified; Looks good to me, but someone else must approve
Raimond Spekking: Looks good to me, but someone else must approve
diff --git a/CommunityTwitter.i18n.php b/CommunityTwitter.i18n.php
index a841ead..dc4f265 100755
--- a/CommunityTwitter.i18n.php
+++ b/CommunityTwitter.i18n.php
@@ -43,7 +43,7 @@
'communitytwitter-desc' => 'Provides a special page, where authorized
users are able to twitter via a community account without the need of giving
away login credentials',
'communitytwitter-no-db-connection' => 'No database connection
possible.',
'communitytwitter-no-db' => 'Database does not exist.',
- 'communitytwitter-unknown-error' => 'Either you were blocked/your
account is not set up or an unknown error occurred.
+ 'communitytwitter-unknown-error' => 'Your account is not set up or an
unknown error occurred.
In case you think you should have access, please contact an administrator',
'communitytwitter-connection-failure' => 'Connection to Twitter could
not be established.',
@@ -62,9 +62,8 @@
'communitytwitter-no-last-tweets' => 'No tweets available',
'communitytwitter-description-template' => 'CommunityTwitter
description',
'communitytwitter-advice-template' => 'CommunityTwitter advice',
- 'communitytwitter-access-error' => "You have to be <span
class=\"plainlinks\"><a href=\"/wiki/Special:UserLogin\" class=\"external
text\" title=\"log in\" rel=\"nofollow\">logged in</a></span> and \n".
-
"<span class=\"plainlinks\"><a
href=\"/wiki/Special:ListGroupRights\" class=\"external text\" title=\"See
group rights\" \n".
-
"rel=\"nofollow\">allowed</a></span> to access
this page.",
+ 'communitytwitter-nologin' => 'You must <span class="plainlinks">[$1
log in]</span>, and be [[$2|allowed]], to use Community Twitter. Note that use
of Community Twitter is limited to users in {{PLURAL:$4|the group|one of the
following groups}}: $3.',
+ 'communitytwitter-access-error' => 'You do not have the necessary
permissions to use Community Twitter. Use of Community Twitter is limited to
users in {{PLURAL:$2|the group|one of the following groups}}: $1. See the
[[$3|list of group rights]] or contact your MediaWiki administrator for more
information.',
'communitytwitter-userlinks-name' => 'Twitter',
'right-twitter' => 'Use Twitter special page',
);
diff --git a/CommunityTwitter_body.php b/CommunityTwitter_body.php
index fbdb310..6a20363 100755
--- a/CommunityTwitter_body.php
+++ b/CommunityTwitter_body.php
@@ -39,7 +39,7 @@
$individualAccs = true;
// In case you want to change the name of the special page, you
have to edit CommunityTwitter_body.php and CommunityTwitter.php
- SpecialPage::SpecialPage("CommunityTwitter");
+ SpecialPage::SpecialPage('CommunityTwitter', 'twitter');
$this->skin = $wgUser->getSkin();
}
@@ -66,8 +66,48 @@
$this->setHeaders();
- // Grant access to defined group only
- if ($wgUser->getId() != 0 && in_array($ctAllowedGroup,
$wgUser->getEffectiveGroups())) {
+ // Grant access to users with twitter right only. All others
receive error pages.
+ if ( !$this->userCanExecute( $wgUser ) ) {
+ // User does not have rights or is not logged in
+
+ $tGroupRights = SpecialPage::getTitleFor(
'ListGroupRights' );
+ $rightsLink = $tGroupRights->getPrefixedText();
+
+ $groups = array_map(
+ array( 'User', 'makeGroupLinkWiki' ),
+ User::getGroupsWithPermission( 'twitter' )
+ );
+ $groupsList = $this->getLanguage()->commaList( $groups
);
+
+
+ if ( !$wgUser->isAnon() )
+ {
+ // Logged in, but no rights
+
+ $accessErrorMsg = $this->msg(
'communitytwitter-access-error', $groupsList, count( $groups ), $rightsLink );
+
+ throw new ErrorPageError( $this->msg(
'permissionserrors' ), $accessErrorMsg );
+ return;
+
+ } else {
+ // Not logged in
+
+ $tLogin = SpecialPage::getTitleFor( 'UserLogin'
);
+ $ctPrefixedText =
$this->getTitle()->getPrefixedText();
+ $loginLink = $tLogin->getFullURL( array(
'returnto' => $ctPrefixedText ) );
+ $nologinMsg = $this->msg(
'communitytwitter-nologin', $loginLink, $rightsLink, $groupsList, count(
$groups ) );
+
+ throw new UserNotLoggedIn( $nologinMsg );
+ return;
+
+ }
+
+ } else if ( $wgUser->isBlocked() ) {
+ // isBlocked is not checked in userCanExecute, make
sure blocked users aren't tweeting.
+ throw new UserBlockedError( $wgUser->getBlock() );
+
+ } else {
+ // Presumably the user is allowed
require_once("includes/twitteroauth.php");
@@ -137,7 +177,7 @@
foreach($connections as
$name => $connection) {
$wgOut->addWikiText("<strong
class=\"ct-success\">".wfMsg("communitytwitter-update-success")."
([http://twitter.com/".$name."/status/".$responseIds[$name]."
".wfMsg("communitytwitter-check-tweet")."]).</strong>\n");
}
-
+
// Get the new status
only to display updated "last tweets" section
$newStatus =
$connections[$ctDefaultAccount]->get("statuses/show", array("id" =>
$responseIds[$ctDefaultAccount], "include_rts" => "true"));
array_unshift($twitterStatuses, $newStatus);
@@ -234,9 +274,6 @@
} else {
$wgOut->addHTML("<strong
class=\"ct-error\">".wfMsg("communitytwitter-unknown-error-request")."</strong>\n");
}
- } else {
- // Not logged in or no adequate group status
-
$wgOut->addHTML(wfMsg("communitytwitter-access-error")."\n");
}
}
--
To view, visit https://gerrit.wikimedia.org/r/69275
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I4fc3f17879b30bd5bc36b64e317ec56c9ab24ec2
Gerrit-PatchSet: 7
Gerrit-Project: mediawiki/extensions/CommunityTwitter
Gerrit-Branch: master
Gerrit-Owner: RAN1 <[email protected]>
Gerrit-Reviewer: Basti2342 <[email protected]>
Gerrit-Reviewer: FastLizard4 <[email protected]>
Gerrit-Reviewer: RAN1 <[email protected]>
Gerrit-Reviewer: Raimond Spekking <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits