specials: Fix fatal MWNamespace exception on Special:Contributions
authorDerick Alangi <alangiderick@gmail.com>
Sun, 17 Feb 2019 11:38:12 +0000 (12:38 +0100)
committerDerick Alangi <alangiderick@gmail.com>
Mon, 18 Feb 2019 23:10:31 +0000 (00:10 +0100)
Namespaces with negative values (valid like -1 and -2 or invalid like
less than -2), should not be processed as they do not have associated
namespaces. Rather than throwing an exception, nicely tell the user
the namespace is a negative value and doesn't have an associated
namespace to it.

Also, don't show any results, just load the form again so user can do
another request but show reason for this behavior atop of form.

Bug: T150324
Change-Id: I525d305a4dabb040110894d3230eeb5e04ff8336

includes/specials/SpecialContributions.php
languages/i18n/en.json
languages/i18n/qqq.json

index 5b939ef..6e0e1c8 100644 (file)
@@ -152,6 +152,17 @@ class SpecialContributions extends IncludableSpecialPage {
                }
                $this->opts = ContribsPager::processDateFilter( $this->opts );
 
+               if ( $this->opts['namespace'] < NS_MAIN ) {
+                       $this->getOutput()->wrapWikiMsg(
+                               "<div class=\"mw-invalid-namespace-assoc error\">\n\$1\n</div>",
+                               [
+                                       'namespace-not-associated',
+                                       wfEscapeWikiText( $this->opts['namespace'] ),
+                               ] );
+                       $out->addHTML( $this->getForm() );
+                       return;
+               }
+
                $feedType = $request->getVal( 'feed' );
 
                $feedParams = [
index 81c305f..b0153f0 100644 (file)
        "anoncontribs": "Contributions",
        "contribsub2": "For {{GENDER:$3|$1}} ($2)",
        "contributions-userdoesnotexist": "User account \"$1\" is not registered.",
+       "namespace-not-associated": "Namespace \"$1\" is a negative value that does not have an associated namespace.",
        "nocontribs": "No changes were found matching these criteria.",
        "uctop": "current",
        "month": "From month (and earlier):",
index 0c43ccc..7815d24 100644 (file)
        "anoncontribs": "Same as {{msg-mw|mycontris}} but used for non-logged-in users.\n\nSee also:\n* {{msg-mw|Accesskey-pt-anoncontribs}}\n* {{msg-mw|Tooltip-pt-anoncontribs}}\n{{Identical|Contribution}}",
        "contribsub2": "Contributions for \"user\" (links). Parameters:\n* $1 is an IP address or a username, with a link which points to the user page (if registered user).\n* $2 is list of tool links. The list contains a link which has text {{msg-mw|Sp-contributions-talk}}.\n* $3 is a plain text username used for GENDER.\n{{Identical|For $1}}",
        "contributions-userdoesnotexist": "This message is used in [[Special:Contributions]]. It is used to tell the user that the name he searched for doesn't exist.\n\nParameters:\n* $1 - a username\n{{Identical|Userdoesnotexist}}",
+       "namespace-not-associated": "This message is used in [[Special:Contributions]] to tell users that use namespaces with negative value. It doesn't make sense to get associated nameapce(s) for such namespaces as it doesn't exist.",
        "nocontribs": "Used in [[Special:Contributions]] and [[Special:DeletedContributions]].\n\nSee examples: [[Special:Contributions/x]] and [[Special:DeletedContributions/x]].\n\nParameters:\n* $1 - (Unused) the user name",
        "uctop": "This message is used in [[Special:Contributions]]. It is used to show that a particular edit was the last made to a page. Example: 09:57, 11 February 2008 (hist) (diff) Pagenameā€Ž (edit summary) (current)\n{{Identical|Current}}",
        "month": "Used in [[Special:Contributions]] and history pages ([{{fullurl:Sandbox|action=history}} example]), as label for a dropdown box to select a specific month to view the edits made in that month, and the earlier months. See also {{msg-mw|year}}.",