aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--HISTORY532
-rw-r--r--RELEASE-NOTES-1.22600
-rw-r--r--includes/DefaultSettings.php1
-rw-r--r--includes/Preferences.php8
-rw-r--r--includes/filerepo/file/File.php3
-rw-r--r--includes/search/SearchEngine.php12
-rw-r--r--includes/specials/SpecialSearch.php6
-rw-r--r--includes/utils/UIDGenerator.php25
-rw-r--r--languages/messages/MessagesEn.php1
-rw-r--r--maintenance/generateJsonI18n.php4
-rw-r--r--maintenance/language/messages.inc1
11 files changed, 573 insertions, 620 deletions
diff --git a/HISTORY b/HISTORY
index a0ddfba2dcbf..672cb6479353 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,9 +1,535 @@
Change notes from older releases. For current info see RELEASE-NOTES-1.23.
-== MediaWiki 1.21 ==
+== MediaWiki 1.22 ==
+
+=== Configuration changes in 1.22 ===
+* $wgRedirectScript was removed. It was unused.
+* Removed $wgLocalMessageCacheSerialized, it is now always true.
+* $wgVectorUseIconWatch is now enabled by default.
+* $wgCascadingRestrictionLevels was added.
+* ftps, ssh, sftp, xmpp, sip, sips, tel, sms, bitcoin, magnet, urn, and geo
+ have been whitelisted inside of $wgUrlProtocols.
+* $wgDocType and $wgDTD have been removed and are no longer used for the DOCTYPE.
+* $wgHtml5 is no longer used by core. Setting it to false will no longer disable HTML5.
+ It is still set to true for extension compatibility but doing so in extensions is deprecated.
+* $wgXhtmlDefaultNamespace is no longer used by core. Setting it will no longer change the
+ xmlns used by MediaWiki. Reliance on this variable by extensions is deprecated.
+* $wgHandheldStyle was removed.
+* $wgHandheldForIPhone was removed.
+* $wgJsMimeType is no longer used by core. Most usage has been removed since
+ HTML output is now exclusively HTML5.
+* $wgDBOracleDRCP added. True enables persistent connection with DRCP on Oracle.
+* $wgLogAutopatrol added to allow disabling logging of autopatrol edits in the logging table.
+ default for $wgLogAutopatrol is true.
+* The 'edit' right no longer allows for editing a user's own CSS and JS.
+* New rights 'editmyusercss', 'editmyuserjs', 'viewmywatchlist',
+ 'editmywatchlist', 'viewmyprivateinfo', 'editmyprivateinfo', and
+ 'editmyoptions' restrict actions that were formerly allowed by default. They
+ have been added to the default for $wgGroupPermissions['*'].
+* The 'editprotected' right no longer allows bypassing of all page protection
+ restrictions. Any group using it for this purpose will now need to have all
+ the individual rights listed in $wgRestrictionTypes for the same effect.
+* The 'protect' and 'autoconfirmed' rights are no longer used for the default
+ page protection levels. The rights 'editprotected' and 'editsemiprotected'
+ are now used for this purpose instead.
+* (bug 40866) wgOldChangeTagsIndex removed.
+* $wgNoFollowDomainExceptions now only matches entire domains. For example,
+ an entry for 'bar.com' will still match 'foo.bar.com' but not 'foobar.com'.
+* $wgCopyUploadTimeout and $wgCopyUploadAsyncTimeout added to change the timeout times for
+ fetching the file during upload by url.
+* New key added to $wgGalleryOptions - $wgGalleryOptions['mode'] to set
+ default gallery mode.
+* New hook 'GalleryGetModes' to allow extensions to make new gallery modes.
+* The checkbox for staying in HTTPS displayed on the login form when $wgSecureLogin is
+ enabled has been removed. Instead, whether the user stays in HTTPS will be determined
+ based on the user's preferences, and whether they came from HTTPS or not.
+* $wgRC2UDPAddress, $wgRC2UDPInterwikiPrefix, $wgRC2UDPOmitBots, $wgRC2UDPPort,
+ and $wgRC2UDPPrefix configuration options have been deprecated in favor of a
+ $wgRCFeeds configuration array. $wgRCFeeds makes both the format and
+ destination of recent change notifications customizable, and allows for
+ multiple destinations to be specified.
+* (bug 53862) portal-url, currentevents-url and helppage have been removed from the
+ default Sidebar.
+* The 'vector-simplesearch' preference is now enabled by default. Previously
+ it was only enabled if the Vector extension was installed.
+* The precise format of metric datagrams produced by the UDP profiler and stats counter
+ may now be specified as $wgUDPProfilerFormatString and $wgStatsFormatString,
+ respectively.
+* (bug 54597) $wgBlockOpenProxies, $wgProxyPorts, $wgProxyScriptPath, and
+ $wgProxyMemcExpiry have been removed, along with the open proxy scanner
+ script they were added for.
+* Default value of $wgMaxShellMemory has been tripled (it's now 300 MB).
+
+=== New features in 1.22 ===
+* You can now install extensions using Composer.
+ See https://www.mediawiki.org/wiki/Composer
+* (bug 44525) mediawiki.jqueryMsg can now parse (whitelisted) HTML elements and attributes.
+* (bug 33454) Language::sprintfDate now has a timezone parameter, and supports
+ the "eIOPTZ" formatting characters.
+* EditWarning: A warning is shown when an editor leaves the edit form without
+ saving (enabled by default, users can opt-out via the 'useeditwarning'
+ preference). This feature was moved from the Vector extension, and is now part
+ of core for all skins. Take care when upgrading that you don't use an older
+ version of the Vector extension as this feature may conflict.
+* New 'mediawiki.ui' CSS module providing mw-ui-* styles for buttons and a
+ compact vertical form layout.
+* HTMLForm supports a new display format 'vform' which applies this compact vertical
+ layout and button styling. Special:PasswordReset uses this format.
+* New versions of login (Special:UserLogin) and create account
+ (Special:UserLogin/signup) forms using the "vform" compact vertical form layout.
+ These forms use new messages that assume a "Help logging in" link, see
+ https://www.mediawiki.org/wiki/Manual:Page_customizations;
+ https://www.mediawiki.org/wiki/Account_creation_user_experience/Strings lists the
+ message key changes.
+* (bug 23343) Implemented ability to apply IP blocks to the contents of X-Forwarded-For headers
+ by adding a new configuration variable $wgApplyIpBlocksToXff (disabled by default).
+* The new hook 'APIGetPossibleErrors' to modify the list of possible errors was
+ added.
+* (bug 25592) LogEventsList::showLogExtract() will now ignore various
+ Pager-related WebRequest parameters by default, as this is overwhelmingly
+ likely to be what was intended by users of the method. If any caller wishes
+ to use these parameters, the new param 'useRequestParams' may be set to true.
+* mw.util.addPortletLink: Tooltip is no longer required to be plain (without
+ an accesskey in it already). As such it now rountrips. Creating a link with a
+ message as tooltip, grabbing the title attribute and using it to create
+ another portlet will work as expected.
+* (bug 6747) {{ROOTPAGENAME}} introduced, contains the name of the topmost
+ page without namespace.
+* BREAKING CHANGE: (bug 41729) Display editsection links next to headings. Also
+ change their class name from .editsection to .mw-editsection and place them at
+ the end of the heading element instead of the beginning. Client-side code and
+ screen-scrapers will have to be adjusted to handle both cases (old HTML will
+ still be visible on cached page renders until they are purged); extensions
+ using the DoEditSectionLink or EditSectionLink hooks might need adjustments as
+ well.
+* (bug 45535) introduced the new 'LanguageLinks' hook for manipulating the
+ language links associated with a page before display.
+* Chosen (http://harvesthq.github.io/chosen/) was added as module 'jquery.chosen'
+* HTMLForm will turn multiselect checkboxes into a Chosen interface when setting cssclass 'mw-chosen'
+* rebuildLocalisationCache learned --lang option. Let you rebuild l10n caches
+ of the specified languages instead of all of them.
+* New GetNewMessagesAlert hook allowing extensions to disable or modify the new
+ messages alert
+* New wgUserNewMsgRevisionId JS global for logged in users. This will be null
+ if the user has no new talk page messages. Otherwise it will be set to the
+ revision ID of the oldest new talk page message. This will allow gadgets and
+ extensions to create their own new message alerts on the client side.
+* mediawiki.log: Added log.warn wrapper (uses console.warn and console.trace).
+* mediawiki.log: Implemented log.deprecate. This method defines a property and
+ uses ES5 getter/setter to emit a warning when they are used.
+* $wgCascadingRestrictionLevels was added, allowing one to specify restriction levels
+ which can be cascading (previously 'sysop' was hard-coded as the only one).
+* XHTML5 support has been improved. If you set $wgMimeType = 'application/xhtml+xml'
+ MediaWiki will try outputting markup acording to XHTML5 rules.
+* Altered hook 'ProtectionForm::save', adding the reason page protection is
+ changed as third parameter.
+* New hook 'TitleSquidURLs' for manipulating the list of URLs to be purged from
+ HTTP caches when a page is changed.
+* Changed the patrolling system to always show the link for patrolling in case the
+ current revision is patrollable. This also removed the usage of the rcid URI parameters.
+* Oracle DB backend now supports Database Resident Connection Pooling (DRCP).
+ Can be enabled by setting $wgDBOracleDRCP=true.
+ Requires Oracle DB 11gR1 or above, enabled DRCP inside the DB itself and a
+ propper connect string.
+ More about DRCP can be found at:
+ http://www.oracle-base.com/articles/11g/database-resident-connection-pool-11gr1.php
+* Add a new parameter $patrolFooterShown to hook ArticleViewFooter so the hook
+ handlers can take further action based on the status of the patrol footer
+* A new hook TitleQuickPermissions was added to allow overriding of quick
+ permissions in the Title class.
+* LinkCache singleton can now be altered or cleared, letting one to specify
+ another instance that does not rely on a database backend.
+* MediaWiki's PHPUnit tests can now use PHPUnit installed using composer --dev.
+* (bug 43689) The lists of templates used on the page and hidden categories it
+ is a member of, shown below the edit form, are now collapsible (and collapsed
+ by default).
+* Parser profiling data, formerly only available in the "NewPP limit report"
+ HTML comment, is now also displayed at the bottom of page previews.
+* Added ParserLimitReportPrepare and ParserLimitReportFormat hooks, deprecated
+ ParserLimitReport hook.
+* New user rights have been added to increase granularity in rights management
+ for extensions such as OAuth:
+** editmyusercss controls whether a user may edit their own CSS subpages.
+** editmyuserjs controls whether a user may edit their own JS subpages.
+** viewmywatchlist controls whether a user may view their watchlist.
+** editmywatchlist controls whether a user may edit their watchlist.
+** viewmyprivateinfo controls whether a user may access their private
+ information (e.g. registered email address, real name).
+** editmyprivateinfo controls whether a user may change their private
+ information.
+** editmyoptions controls whether a user may change their preferences.
+* Add new hook AbortTalkPageEmailNotification, this will be used to determine
+ whether to send the regular talk page email notification
+* Action classes registered in $wgActions are now also supported in the form of
+ a callback (which returns an instance of Action) instead of providing the name
+ of a subclass of Action.
+* (bug 46513) Vector: Add the collapsibleTabs script from the Vector extension.
+* Added $wgRecentChangesFlags for defining new flags for RecentChanges and
+ watchlists.
+* (bug 40518) mw.toolbar: Implemented mw.toolbar.addButtons for adding multiple
+ button objects in one call.
+* Rights used for the default protection levels ('sysop' and 'autoconfirmed')
+ are now used just for that purpose, instead of overloading other rights. This
+ allows easy granting of the ability to edit sysop-protected pages without
+ also granting the ability to protect and unprotect.
+* (bug 48256) Make brackets in section edit links accessible to CSS.
+ They are now wrapped in <span class="mw-editsection-bracket" />.
+* (bug 8480) Allow handler specific parameters in galleries (like page number)
+* jquery.client: Add detection for Opera 15 and Internet Explorer 11.
+* Change tags (used by the AbuseFilter extension) are now shown on diff pages.
+* Change tag lists (shown on recent changes, watchlist, user contributions,
+ history pages, diff pages) now include a link to Special:Tags to distinguish
+ them from edit summaries.
+* Added a new method and hook, User::isEveryoneAllowed() and
+ UserIsEveryoneAllowed, for use in situations where a "does everyone have this
+ right?" check is used to avoid more expensive checks.
+* (bug 14431) Display "(No difference)" instead of an empty diff (when comparing
+ revisions in the history or when previewing changes while editing).
+* New hook 'IsUploadAllowedFromUrl' is added which can be used to intercept uploads by
+ URL, useful for blacklisting specific URLs
+* (bug 21912) Watchlist token implementation has been refactored and
+ Special:ResetTokens was added to allow users to reset their tokens
+ instead of presenting them in Preferences.
+* Special:PrefixIndex now lets you strip the searched prefix from the displayed
+ titles. Given a list of articles named Bug1, Bug2, you can now transclude the
+ list of bug numbers using: {{Special:PrefixIndex/Bug|stripprefix=1}}.
+ The special page form received a new checkbox matching that option.
+* (bug 23580) Implement javascript callback interface "mw.hook".
+* (bug 30713) New mw.hook "wikipage.content".
+* (bug 40430) jquery.placeholder gets a new parameter to set the attribute value
+ to be used.
+* $wgHTCPMulticastRouting renamed $wgHTCPRouting since it accepts unicast.
+* $wgHTCPRouting rules can now be passed an array of hosts/ports to send purge
+ too. Can be used whenever several multicast group could be interested by a
+ specific purge.
+* (bug 25931) Add Special:RandomInCategory.
+* mediawiki.util: addPortletLink now supports passing a jQuery object as nextnode.
+* <wbr> can now be used inside WikiText.
+* WebResponse::setcookie is much more featureful. Callers using PHP's
+ setcookie() or setrawcookie() should begin using this instead.
+* New hook WebResponseSetCookie, called from WebResponse::setcookie().
+* New hook ResetSessionID, called when the session id is reset.
+* Add a mode parameter to <gallery> tag with potential options of "traditional",
+ "nolines", "packed", "packed-overlay", or "packed-hover".
+* (bug 47399) A success message is now displayed after changing the password.
+* Make thumb.php give HTTP redirects for file redirects
+* (bug 30607) Special:ListFiles can now show old versions of files. Additionally
+ Special:AllMyUploads was introduced so the user can get a list of all things
+ they have ever uploaded, even if it was subsequently overriden.
+* Introduced Special:MyFiles and Special:AllMyFiles as an alias for Special:MyUploads
+ and Special:AllMyUploads respectively.
+* IPv6 addresses in X-Forwarded-For headers are now normalised before checking
+ against allowed proxy lists.
+* Add deferrable update support for callback/closure.
+* Add TitleMove hook before page renames.
+* Revision deletion backend code is moved out of SpecialRevisiondelete
+* Added {{REVISIONSIZE}} variable to get the current size of a revision.
+* Add support for the LESS stylesheet language to ResourceLoader. LESS is a
+ stylesheet language that compiles into CSS. ResourceLoader file modules may
+ include LESS style files; ResourceLoader will compile these files into CSS
+ before sending them to the client.
+** The $wgResourceLoaderLESSVars configuration variable is an associative array
+ mapping variable names to string CSS values. These variables are considered
+ declared for all LESS files. Additional variables may be registered by
+ adding keys to the array.
+** $wgResourceLoaderLESSFunctions is an associative array of custom LESS
+ function names to PHP callables. See <http://leafo.net/lessphp/docs/#custom_functions>
+ for more details regarding custom functions.
+** $wgResourceLoaderLESSImportPaths is an array of file system paths. Files
+ referenced in LESS '@import' statements are looked up here first.
+* ResourceLoader supports hashes as module cache invalidation trigger (instead
+ of or in addition to timestamps).
+* Added $wgExtensionEntryPointListFiles for use in mergeMessageFileList.php.
+* Added a hook, APIQuerySiteInfoStatisticsInfo, to allow extensions to modify
+ the output of the API query meta=siteinfo&siprop=statistics
+* Primary keys have been added to both the archive table and the externallinks
+ tables.
+* Added $wgEnableParserLimitReporting to control whether the NewPP limit report is
+ output in a HTML comment.
+* The 'UnwatchArticle' and 'WatchArticle' hooks now support a Status object
+ instead of just a boolean return value to abort the hook.
+* Added a hook, SpecialWatchlistGetNonRevisionTypes, to allow extensions
+ with custom recentchanges entries to hook into the Watchlist without
+ clobbering each other.
+* A hidden, empty input field was added to the edit form, and any edit that fills
+ it in will be rejected. This prevents against the simplest form of spambots.
+ Previously in the "SimpleAntiSpam" extension by Ryan Schmidt.
+* populateRevisionLength.php maintenance script updated to also populate
+ archive.ar_len field.
+* (bug 43571) DatabaseMySQLBase learned to list views, optionally filtered by a
+ prefix. Also fixed PHPUnit test suite when using a MySQL backend containing
+ views.
+
+=== Bug fixes in 1.22 ===
+* (bug 47271) $wgContentHandlerUseDB should be set to false during the upgrade
+* Disable Special:PasswordReset when $wgEnableEmail is false. Previously one
+ could still navigate to the page by entering the URL directly.
+* (bug 47138) Fixed a fatal error when a blocked user tries to automatically
+ create an account on login due external authentication in some circumstances.
+* (bug 23393) HTML <hN> headings containing line breaks are now handled
+ correctly.
+* (bug 45803) Whitespace within == Headline == syntax and within <hN> headings
+ is now non-significant and not preserved in the HTML output.
+* (bug 47218) Special:BlockList now handles correctly user names with spaces
+ when passed as subpage.
+* Pager's properly validate which fields are allowed to be sorted on.
+* mw.util.tooltipAccessKeyRegexp: The regex now matches "option-" as well.
+ Support for Mac "option" was added in 1.16, but the regex was never updated.
+* (bug 46768) Usernames of blocking users now display correctly, even if numeric.
+* (bug 39590) Self-transclusions now show the most up to date result always
+ after save instead of being a revision behind.
+* A bias in wfRandomString() toward digits 1-7 has been corrected. Generated
+ strings will now start with digits 0 and 8-f as often as they should.
+* (bug 45371) Removed Parser_LinkHooks and CoreLinkFunctions classes.
+* (bug 41545) Allow <kbd>, <samp>, and <var> to be nested like allowed in html.
+* PLURAL magic word no longer causes a PHP notice when no matching form exists.
+* (bug 36641) Patrol page links no longer show on non-existent revisions.
+* (bug 35810) Pages not linked from Special:RecentChanges or Special:NewPages
+ are patrollable now.
+* (bug 30213) JavaScript for search suggestions is now disabled when the API
+ is disabled, and AJAX patrolling and watching are now disabled when use of
+ the write API is not allowed.
+* (bug 48294) API: Fix chunk upload async mode.
+* (bug 46749) Broken files tracking category removed from pages if an image
+ with that name is uploaded.
+* (bug 14176) System messages that are empty were previously incorrectly treated
+ as non-existent, causing a fallback to the default. This stopped users from
+ overriding system messages to make them blank.
+* (bug 48319) action=parse no longer returns an error if passed none of 'oldid',
+ 'pageid', 'page', 'title', and 'text' (e.g. if only passed 'summary'). A
+ warning will instead be issued if 'title' is non-default, unless no props are
+ requested.
+* Special:Recentchangeslinked will now include upload log entries
+* (bug 41281) Fixed ugly output if file size could not be extracted for multi-page media.
+* (bug 50315) list=logevents API module will now output log entries by anonymous users.
+* (bug 38911) Handle headers with rowspan in jquery.tablesorter
+* (bug 658) Converted the table of contents on wiki pages from <table> to <div>
+ and adjusted skin CSS accordingly. The CSS was carefully crafted to be
+ backwards-compatible in all reasonable cases (uses of the __TOC__ magic word,
+ the #toc CSS id and the .toc CSS class). However, particularly bad abuse of
+ the id or the class can possibly break.
+* CSSJanus now supports rgb, hsl, rgba, and hsla color syntaxes.
+* Special:Listfiles can no longer be sorted by image name when filtering
+ by user in miser mode.
+* (bug 49074) CSSJanus: Handle values of border-radius correctly.
+* Handle relative inclusions ({{../name}}) in main namespace with subpages
+ enabled correctly (previously MediaWiki tried to include Template:Parent/name
+ instead of just Parent/name).
+* Added $wgAPIUselessQueryPages to allow extensions to flag their query pages
+ for non-inclusion in ApiQueryQueryPages.
+* (bug 50870) mediawiki.notification: Notification area should remain visible
+ when scrolled down.
+* (bug 13438) Special:MIMESearch no longer an expensive special page.
+* (bug 48342) Fixed a fatal error when $wgValidateAllHtml is set to true and
+ the function apache_request_headers() function is not available.
+* (bug 33399) LivePreview: Re-run wikipage content handlers
+ (jquery.makeCollapsible, jquery.tablesorter) after preview content is loaded.
+* (bug 51891) Fixed PHP notice on Special:PagesWithProp when no properties
+ are defined.
+* (bug 52006) Corrected documentation of $wgTranscludeCacheExpiry.
+* (bug 52077) The APIEditBeforeSave hook is giving the content of the whole
+ revision as second argument now, rather than just the current section.
+* (bug 49694) $wgSpamRegex is now also applied on the new section headline text
+ adding a new topic on a page
+* (bug 41756) Improve treatment of multiple comments on a blank line.
+* (bug 51064) Purge upstream caches when deleting file assets.
+* (bug 39012) File types with a mime that we do not know the extension for
+ can no longer be uploaded as an extension that we do know the mime type
+ for.
+* (bug 51742) Add data-sort-value for better sorting of hitcounts Special:Tags
+* (bug 26811) On DB error pages, server hostnames are now hidden when both
+ $wgShowHostnames and $wgShowSQLErrors are false.
+* (bug 6200) line breaks in <blockquote> are handled like they are in <div>
+* (bug 14931) Default character set now set to 'utf8' when a new MySQL
+ database is created.
+* (bug 47191) Fixed "Column 'si_title' cannot be part of FULLTEXT index"
+ MySQL error when installing using the binary character set option.
+* (bug 45288) Support mysqli PHP extension
+* (bug 55818) BREAKING CHANGE: Removed undocumented 'Debug' hook in wfDebug.
+ This resolves an infinite loop when using $wgDebugFunctionEntry = true.
+* (bug 56707) Correct tooltip of "Next n results" on query special pages.
+* (bug 56770) mw.util.addPortletLink: Check length before access array index.
+
+=== API changes in 1.22 ===
+* (bug 25553) The JSON output formatter now leaves forward slashes unescaped
+ to improve human readability of URLs and similar strings. Also, a "utf8"
+ option is now provided to use UTF-8 encoding instead of hex escape codes
+ for most non-ASCII characters.
+* (bug 46626) xmldoublequote parameter was removed. Because of a bug, the
+ parameter has had no effect since MediaWiki 1.16, and so its removal is
+ unlikely to impact existing clients.
+* (bug 47216) action=query&meta=siteinfo&siprop=skins will now indicate which
+ skin is the default and which are unusable (e.g. listed in $wgSkipSkins).
+* (bug 25325) Added support for wlshow filtering (bots/anon/minor/patrolled)
+ to action=feedwatchlist.
+* WDDX formatted output will actually be formatted (and normal output will no
+ longer be), and will no longer choke on booleans.
+* action=opensearch no longer silently ignores the format parameter.
+* action=opensearch now supports format=jsonfm.
+* list=usercontribs&ucprop=ids will now include the parent revision id.
+* BREAKING CHANGE: action=parse no longer returns all langlinks for the page
+ with prop=langlinks by default. The new effectivelanglinks parameter will
+ request that the LanguageLinks hook be called to determine the effective
+ language links.
+* BREAKING CHANGE: list=allpages, list=langbacklinks, and prop=langlinks do not
+ apply the new LanguageLinks hook, and thus only consider language links
+ stored in the database.
+* (bug 47219) Allow specifying change type of Wikipedia feed items
+* prop=imageinfo now allows setting iiurlheight without setting iiurlwidth
+* prop=info now adds the content model and page language of the title.
+* New upload log entries will now contain information on the relevant
+ image (sha1 and timestamp).
+* (bug 49239) action=parse now can parse in preview and section preview modes.
+* (bug 49259) action=patrol now accepts revision ids.
+* (bug 48129) list=blocks&bkip= now correctly handles IPv6 CIDR ranges and
+ honors $wgBlockCIDRLimit. Note any clients passing invalid values to bkip
+ will now receive an error, rather than the previous behavior listing all
+ user blocks.
+* (bug 48201) action=parse&text=foo now assumes wikitext if no title is given,
+ rather than using the content model of the page "API".
+* action=watch no longer silently ignores hook abort.
+* (bug 50785) action=purge with forcelinkupdate=1 no longer queues refreshLinks
+ jobs in the job queue for link table updates of pages that use the given page
+ as a template. Instead, forcerecursivelinkupdate=1 is introduced and should
+ be used if that behaviour is desirable.
+* The 'debugLog' property (enabled by $wgDebugToolbar) no longer sets the log
+ entry values through ApiResult::content but directly. This changes the JSON
+ output from an array of objects with content in '*' to an array of strings
+ with the content.
+* (bug 51342) prop=imageinfo iicontinue now contains the dbkey, not the text
+ version of the title.
+* (bug 52538) action=edit will now use empty text instead of the contents
+ of section 0 when passed prependtext or appendtext with section=new.
+* Support for the 'gettoken' parameter to action=block and action=unblock,
+ deprecated since 1.20, has been removed.
+* (bug 49090) Token-getting functions will fail when using jsonp callbacks.
+* (bug 52699) action=upload returns normalized file name on warning
+ "exists-normalized" instead of filename to be uploaded to.
+* (bug 53884) action=edit will now return an error when the specified section
+ does not exist in the page.
+* Added meta=filerepoinfo API module for getting information about foreign
+ file repositories, and related ForeignAPIRepo methods getInfo and getApiUrl.
+* The new query module list=allfileusages to enumerate file usages was added.
+
+=== Languages updated in 1.22===
+
+MediaWiki supports over 350 languages. Many localisations are updated
+regularly. Below only new and removed languages are listed, as well as
+changes to languages because of Bugzilla reports.
+
+* Batak Toba (bbc-latn) added.
+* (bug 46751) Made Buryat (Russia) (буряад) (bxr) fallback to Russian.
+
+=== Other changes in 1.22 ===
+* BREAKING CHANGE: Implementation of MediaWiki's JS and JSON value encoding
+ has changed:
+** MediaWiki no longer supports PHP installations in which the native JSON
+ extension is missing or disabled.
+** XmlJsCode objects can no longer be nested inside objects or arrays.
+ (For Xml::encodeJsCall(), this individually applies to each argument.)
+** The sets of characters escaped by default, along with the precise escape
+ sequences used, have changed (except for the Xml::escapeJsString()
+ function, which is now deprecated).
+* BREAKING CHANGE: The Services_JSON class has been removed. If necessary,
+ be sure to upgrade affected extensions at the same time (e.g. Collection).
+* redirect.php was removed. It was unused.
+* ClickTracking integration was dropped from the mediaWiki.user.bucket
+ JavaScript function. The 'tracked' option is now ignored.
+* BREAKING CHANGE: Legacy skins Simple, MySkin, Chick, Standard and Nostalgia
+ were all removed. (Nostalgia was moved to an extension.) The SkinLegacy and
+ LegacyTemplate classes that supported them were removed as well and are now a
+ part of the Nostalgia extension.
+* Event namespace used by jquery.makeCollapsible has been changed from
+ 'mw-collapse' to 'mw-collapsible' for consistency with the module name.
+* BREAKING CHANGE: The "ExternalAuth" authentication subsystem was removed, along
+ with its associated globals of $wgExternalAuthType, $wgExternalAuthConf,
+ $wgAutocreatePolicy and $wgAllowPrefChange. Affected users are encouraged to
+ use AuthPlugin for external authentication/authorization needs.
+* The Quickbar feature of the legacy skin model and the last remnants of it
+ throughout the code base have been removed.
+* Externaledit/externaldiff preference was removed. Very few users used this
+ feature, and improper configuration can actually prevent a user from editing
+* Calling Linker methods using a skin will now output deprecation warnings.
+* (bug 46680) "Return to" links are no longer tagged with rel="next".
+* BREAKING CHANGE: mw.util.tooltipAccessKeyRegexp: The match group for the
+ accesskey character is now $6 instead of $5.
+* HipHop compiler (hphpc) support was removed. HipHop VM support (hhvm) was
+ added.
+* A new Special:Redirect page was added, providing lookup by revision ID,
+ user ID, or file name. The old Special:Filepath page was reimplemented
+ to redirect through Special:Redirect.
+* Monobook: Removed the old conditional stylesheets for Opera 6, 7 and 9.
+* Support for XHTML 1.0 has been removed. MediaWiki now only outputs (X)HTML5.
+* wikibits: User-agent related globals have been deprecated. The following
+ properties now default to false and emit mw.log.warn: is_gecko, is_chrome_mac,
+ is_chrome, webkit_version, is_safari_win, is_safari, webkit_match, is_ff2,
+ ff2_bugs, is_ff2_win, is_ff2_x11, opera95_bugs, opera7_bugs, opera6_bugs,
+ is_opera_95, is_opera_preseven, is_opera, and ie6_bugs.
+* (bug 48276) MediaWiki will now flash a confirmation message upon successfully
+ editing a page.
+* (bug 40785) mediawiki.legacy.ajax has been marked as deprecated. The following
+ properties now emit mw.log.warn when accessed: sajax_debug, sajax_init_object,
+ sajax_do_call and wfSupportsAjax.
+* BREAKING CHANGE: meta keywords are no longer supported. A <meta name="keywords"
+ will no longer be output and OutputPage::addKeyword no longer exists.
+* Methods Title::userCanEditCssSubpage and Title::userCanEditJsSubpage,
+ deprecated since 1.19, have been removed.
+* (bug 50134) Hook functions are no longer required to return a value. When a
+ hook function does not return a value (or when it returns an explicit null),
+ processing continues. To abort the hook, a hook function must return an
+ explicit, boolean false or a string error message. Other falsey values are
+ tantamount to a 'return true' in earlier versions of MediaWiki.
+* BREAKING CHANGE: The EditSectionLink hook was removed after being
+ deprecated since MediaWiki 1.14. Use DoEditSectionLink instead.
+* (bug 48256) The 'editsection-brackets' optional message was removed.
+ Section edit links' brackets can now be customized using CSS by
+ styling span.mw-editsection-bracket.
+* The usePatrol function in ChangesList has been marked as deprecated.
+* (bug 50785) A "null edit", that is, a save action in which no changes to the
+ page text are made and no revision recorded, will no longer send refreshLinks
+ jobs to the job table to update pages which use the edited page as a template.
+* The LivePreviewPrepare and LivePreviewDone events triggered on "jQuery( mw )"
+ have been deprecated in favour of using mw.hook.
+* The 'showjumplinks' user preference has been removed, jump links are now
+ always included.
+* Methods RecentChange::notifyRC2UDP, RecentChange::sendToUDP, and
+ RecentChange::cleanupForIRC have been deprecated, as it is now the
+ responsibility of classes implementing the RCFeedFormatter and RCFeedEngine
+ interfaces to implement the formatting and delivery for recent change
+ notifications.
+* SpecialPrefixindex methods namespacePrefixForm() and showPrefixChunk() have
+ been made protected. They were accepting form variance arguments, this is now
+ using properties in the SpecialPrefixindex class.
+* (bug 50310) BREAKING CHANGE: wikibits: Drop support for mwCustomEditButtons.
+ It defaults to an empty array and emits mw.log.warn when accessed.
+* BREAKING CHANGE: Special:Disambiguations has been removed from MediaWiki core.
+ Functions related to disambiguation pages are now handled by the Disambiguator
+ extension (https://www.mediawiki.org/wiki/Extension:Disambiguator) (bug
+ 35981).
+* BREAKING CHANGE: The 'mediawiki.legacy.wikiprintable' module has been removed.
+ The skins/common/wikiprintable.css file no longer exists. Return value of
+ Skin#commonPrintStylesheet is ignored. Please use the 'mediawiki.legacy.commonPrint'
+ module instead or base your skin on SkinTemplate.
+* (bug 49629) The hook ExtractThumbParamaters has been deprecated in favour
+ of media handler overriding MediaHandler::parseParamString.
+* (bug 46512) The collapsibleNav feature from the Vector extension has been moved
+ to the Vector skin in core.
+* SpecialRecentChanges::addRecentChangesJS() function has been renamed
+ to addModules() and made protected.
+* Methods WatchAction::doWatch and WatchAction::doUnwatch now return a Status
+ object instead of a boolean.
+* Information boxes (CSS classes errorbox, warningbox, successbox) have been
+ made more subtle.
+* BREAKING CHANGE: The module 'mediawiki.legacy.IEFixes' has been removed as it was
+ unused. The file skins/common/IEFixes.js remains but is only used by wikibits.
+ The file never contained any re-usable components. To use it in a skin, load
+ 'mediawiki.legacy.wikibits' (which IEFixes depends on) and that will import
+ IEFixes automatically if user agent conditions are met.
+* Code specific to the Math extension was marked as deprecated.
+* mediawiki.util: mw.util.wikiGetlink has been renamed to getUrl. (The old name
+ still works, but is deprecated.)
-MediaWiki 1.21 is an alpha-quality branch and is not recommended for use in
-production.
+== MediaWiki 1.21 ==
=== Configuration changes in 1.21 ===
* (bug 29374) $wgVectorUseSimpleSearch is now enabled by default.
diff --git a/RELEASE-NOTES-1.22 b/RELEASE-NOTES-1.22
deleted file mode 100644
index 333696b77c11..000000000000
--- a/RELEASE-NOTES-1.22
+++ /dev/null
@@ -1,600 +0,0 @@
-Security reminder: MediaWiki does not require PHP's register_globals. If you
-have it on, turn it '''off''' if you can.
-
-== MediaWiki 1.22 ==
-
-THIS IS NOT A RELEASE YET
-
-MediaWiki 1.22 is an alpha-quality branch and is not recommended for use in
-production.
-
-=== Configuration changes in 1.22 ===
-* $wgRedirectScript was removed. It was unused.
-* Removed $wgLocalMessageCacheSerialized, it is now always true.
-* $wgVectorUseIconWatch is now enabled by default.
-* $wgCascadingRestrictionLevels was added.
-* ftps, ssh, sftp, xmpp, sip, sips, tel, sms, bitcoin, magnet, urn, and geo
- have been whitelisted inside of $wgUrlProtocols.
-* $wgDocType and $wgDTD have been removed and are no longer used for the DOCTYPE.
-* $wgHtml5 is no longer used by core. Setting it to false will no longer disable HTML5.
- It is still set to true for extension compatibility but doing so in extensions is deprecated.
-* $wgXhtmlDefaultNamespace is no longer used by core. Setting it will no longer change the
- xmlns used by MediaWiki. Reliance on this variable by extensions is deprecated.
-* $wgHandheldStyle was removed.
-* $wgHandheldForIPhone was removed.
-* $wgJsMimeType is no longer used by core. Most usage has been removed since
- HTML output is now exclusively HTML5.
-* $wgDBOracleDRCP added. True enables persistent connection with DRCP on Oracle.
-* $wgLogAutopatrol added to allow disabling logging of autopatrol edits in the logging table.
- default for $wgLogAutopatrol is true.
-* The 'edit' right no longer allows for editing a user's own CSS and JS.
-* New rights 'editmyusercss', 'editmyuserjs', 'viewmywatchlist',
- 'editmywatchlist', 'viewmyprivateinfo', 'editmyprivateinfo', and
- 'editmyoptions' restrict actions that were formerly allowed by default. They
- have been added to the default for $wgGroupPermissions['*'].
-* The 'editprotected' right no longer allows bypassing of all page protection
- restrictions. Any group using it for this purpose will now need to have all
- the individual rights listed in $wgRestrictionTypes for the same effect.
-* The 'protect' and 'autoconfirmed' rights are no longer used for the default
- page protection levels. The rights 'editprotected' and 'editsemiprotected'
- are now used for this purpose instead.
-* (bug 40866) wgOldChangeTagsIndex removed.
-* $wgNoFollowDomainExceptions now only matches entire domains. For example,
- an entry for 'bar.com' will still match 'foo.bar.com' but not 'foobar.com'.
-* $wgCopyUploadTimeout and $wgCopyUploadAsyncTimeout added to change the timeout times for
- fetching the file during upload by url.
-* New key added to $wgGalleryOptions - $wgGalleryOptions['mode'] to set
- default gallery mode.
-* New hook 'GalleryGetModes' to allow extensions to make new gallery modes.
-* The checkbox for staying in HTTPS displayed on the login form when $wgSecureLogin is
- enabled has been removed. Instead, whether the user stays in HTTPS will be determined
- based on the user's preferences, and whether they came from HTTPS or not.
-* $wgRC2UDPAddress, $wgRC2UDPInterwikiPrefix, $wgRC2UDPOmitBots, $wgRC2UDPPort,
- and $wgRC2UDPPrefix configuration options have been deprecated in favor of a
- $wgRCFeeds configuration array. $wgRCFeeds makes both the format and
- destination of recent change notifications customizable, and allows for
- multiple destinations to be specified.
-* (bug 53862) portal-url, currentevents-url and helppage have been removed from the
- default Sidebar.
-* The 'vector-simplesearch' preference is now enabled by default. Previously
- it was only enabled if the Vector extension was installed.
-* The precise format of metric datagrams produced by the UDP profiler and stats counter
- may now be specified as $wgUDPProfilerFormatString and $wgStatsFormatString,
- respectively.
-* (bug 54597) $wgBlockOpenProxies, $wgProxyPorts, $wgProxyScriptPath, and
- $wgProxyMemcExpiry have been removed, along with the open proxy scanner
- script they were added for.
-* Default value of $wgMaxShellMemory has been tripled (it's now 300 MB).
-
-=== New features in 1.22 ===
-* You can now install extensions using Composer.
- See https://www.mediawiki.org/wiki/Composer
-* (bug 44525) mediawiki.jqueryMsg can now parse (whitelisted) HTML elements and attributes.
-* (bug 33454) Language::sprintfDate now has a timezone parameter, and supports
- the "eIOPTZ" formatting characters.
-* EditWarning: A warning is shown when an editor leaves the edit form without
- saving (enabled by default, users can opt-out via the 'useeditwarning'
- preference). This feature was moved from the Vector extension, and is now part
- of core for all skins. Take care when upgrading that you don't use an older
- version of the Vector extension as this feature may conflict.
-* New 'mediawiki.ui' CSS module providing mw-ui-* styles for buttons and a
- compact vertical form layout.
-* HTMLForm supports a new display format 'vform' which applies this compact vertical
- layout and button styling. Special:PasswordReset uses this format.
-* New versions of login (Special:UserLogin) and create account
- (Special:UserLogin/signup) forms using the "vform" compact vertical form layout.
- These forms use new messages that assume a "Help logging in" link, see
- https://www.mediawiki.org/wiki/Manual:Page_customizations;
- https://www.mediawiki.org/wiki/Account_creation_user_experience/Strings lists the
- message key changes.
-* (bug 23343) Implemented ability to apply IP blocks to the contents of X-Forwarded-For headers
- by adding a new configuration variable $wgApplyIpBlocksToXff (disabled by default).
-* The new hook 'APIGetPossibleErrors' to modify the list of possible errors was
- added.
-* (bug 25592) LogEventsList::showLogExtract() will now ignore various
- Pager-related WebRequest parameters by default, as this is overwhelmingly
- likely to be what was intended by users of the method. If any caller wishes
- to use these parameters, the new param 'useRequestParams' may be set to true.
-* mw.util.addPortletLink: Tooltip is no longer required to be plain (without
- an accesskey in it already). As such it now rountrips. Creating a link with a
- message as tooltip, grabbing the title attribute and using it to create
- another portlet will work as expected.
-* (bug 6747) {{ROOTPAGENAME}} introduced, contains the name of the topmost
- page without namespace.
-* BREAKING CHANGE: (bug 41729) Display editsection links next to headings. Also
- change their class name from .editsection to .mw-editsection and place them at
- the end of the heading element instead of the beginning. Client-side code and
- screen-scrapers will have to be adjusted to handle both cases (old HTML will
- still be visible on cached page renders until they are purged); extensions
- using the DoEditSectionLink or EditSectionLink hooks might need adjustments as
- well.
-* (bug 45535) introduced the new 'LanguageLinks' hook for manipulating the
- language links associated with a page before display.
-* Chosen (http://harvesthq.github.io/chosen/) was added as module 'jquery.chosen'
-* HTMLForm will turn multiselect checkboxes into a Chosen interface when setting cssclass 'mw-chosen'
-* rebuildLocalisationCache learned --lang option. Let you rebuild l10n caches
- of the specified languages instead of all of them.
-* New GetNewMessagesAlert hook allowing extensions to disable or modify the new
- messages alert
-* New wgUserNewMsgRevisionId JS global for logged in users. This will be null
- if the user has no new talk page messages. Otherwise it will be set to the
- revision ID of the oldest new talk page message. This will allow gadgets and
- extensions to create their own new message alerts on the client side.
-* mediawiki.log: Added log.warn wrapper (uses console.warn and console.trace).
-* mediawiki.log: Implemented log.deprecate. This method defines a property and
- uses ES5 getter/setter to emit a warning when they are used.
-* $wgCascadingRestrictionLevels was added, allowing one to specify restriction levels
- which can be cascading (previously 'sysop' was hard-coded as the only one).
-* XHTML5 support has been improved. If you set $wgMimeType = 'application/xhtml+xml'
- MediaWiki will try outputting markup acording to XHTML5 rules.
-* Altered hook 'ProtectionForm::save', adding the reason page protection is
- changed as third parameter.
-* New hook 'TitleSquidURLs' for manipulating the list of URLs to be purged from
- HTTP caches when a page is changed.
-* Changed the patrolling system to always show the link for patrolling in case the
- current revision is patrollable. This also removed the usage of the rcid URI parameters.
-* Oracle DB backend now supports Database Resident Connection Pooling (DRCP).
- Can be enabled by setting $wgDBOracleDRCP=true.
- Requires Oracle DB 11gR1 or above, enabled DRCP inside the DB itself and a
- propper connect string.
- More about DRCP can be found at:
- http://www.oracle-base.com/articles/11g/database-resident-connection-pool-11gr1.php
-* Add a new parameter $patrolFooterShown to hook ArticleViewFooter so the hook
- handlers can take further action based on the status of the patrol footer
-* A new hook TitleQuickPermissions was added to allow overriding of quick
- permissions in the Title class.
-* LinkCache singleton can now be altered or cleared, letting one to specify
- another instance that does not rely on a database backend.
-* MediaWiki's PHPUnit tests can now use PHPUnit installed using composer --dev.
-* (bug 43689) The lists of templates used on the page and hidden categories it
- is a member of, shown below the edit form, are now collapsible (and collapsed
- by default).
-* Parser profiling data, formerly only available in the "NewPP limit report"
- HTML comment, is now also displayed at the bottom of page previews.
-* Added ParserLimitReportPrepare and ParserLimitReportFormat hooks, deprecated
- ParserLimitReport hook.
-* New user rights have been added to increase granularity in rights management
- for extensions such as OAuth:
-** editmyusercss controls whether a user may edit their own CSS subpages.
-** editmyuserjs controls whether a user may edit their own JS subpages.
-** viewmywatchlist controls whether a user may view their watchlist.
-** editmywatchlist controls whether a user may edit their watchlist.
-** viewmyprivateinfo controls whether a user may access their private
- information (e.g. registered email address, real name).
-** editmyprivateinfo controls whether a user may change their private
- information.
-** editmyoptions controls whether a user may change their preferences.
-* Add new hook AbortTalkPageEmailNotification, this will be used to determine
- whether to send the regular talk page email notification
-* Action classes registered in $wgActions are now also supported in the form of
- a callback (which returns an instance of Action) instead of providing the name
- of a subclass of Action.
-* (bug 46513) Vector: Add the collapsibleTabs script from the Vector extension.
-* Added $wgRecentChangesFlags for defining new flags for RecentChanges and
- watchlists.
-* (bug 40518) mw.toolbar: Implemented mw.toolbar.addButtons for adding multiple
- button objects in one call.
-* Rights used for the default protection levels ('sysop' and 'autoconfirmed')
- are now used just for that purpose, instead of overloading other rights. This
- allows easy granting of the ability to edit sysop-protected pages without
- also granting the ability to protect and unprotect.
-* (bug 48256) Make brackets in section edit links accessible to CSS.
- They are now wrapped in <span class="mw-editsection-bracket" />.
-* (bug 8480) Allow handler specific parameters in galleries (like page number)
-* jquery.client: Add detection for Opera 15 and Internet Explorer 11.
-* Change tags (used by the AbuseFilter extension) are now shown on diff pages.
-* Change tag lists (shown on recent changes, watchlist, user contributions,
- history pages, diff pages) now include a link to Special:Tags to distinguish
- them from edit summaries.
-* Added a new method and hook, User::isEveryoneAllowed() and
- UserIsEveryoneAllowed, for use in situations where a "does everyone have this
- right?" check is used to avoid more expensive checks.
-* (bug 14431) Display "(No difference)" instead of an empty diff (when comparing
- revisions in the history or when previewing changes while editing).
-* New hook 'IsUploadAllowedFromUrl' is added which can be used to intercept uploads by
- URL, useful for blacklisting specific URLs
-* (bug 21912) Watchlist token implementation has been refactored and
- Special:ResetTokens was added to allow users to reset their tokens
- instead of presenting them in Preferences.
-* Special:PrefixIndex now lets you strip the searched prefix from the displayed
- titles. Given a list of articles named Bug1, Bug2, you can now transclude the
- list of bug numbers using: {{Special:PrefixIndex/Bug|stripprefix=1}}.
- The special page form received a new checkbox matching that option.
-* (bug 23580) Implement javascript callback interface "mw.hook".
-* (bug 30713) New mw.hook "wikipage.content".
-* (bug 40430) jquery.placeholder gets a new parameter to set the attribute value
- to be used.
-* $wgHTCPMulticastRouting renamed $wgHTCPRouting since it accepts unicast.
-* $wgHTCPRouting rules can now be passed an array of hosts/ports to send purge
- too. Can be used whenever several multicast group could be interested by a
- specific purge.
-* (bug 25931) Add Special:RandomInCategory.
-* mediawiki.util: addPortletLink now supports passing a jQuery object as nextnode.
-* <wbr> can now be used inside WikiText.
-* WebResponse::setcookie is much more featureful. Callers using PHP's
- setcookie() or setrawcookie() should begin using this instead.
-* New hook WebResponseSetCookie, called from WebResponse::setcookie().
-* New hook ResetSessionID, called when the session id is reset.
-* Add a mode parameter to <gallery> tag with potential options of "traditional",
- "nolines", "packed", "packed-overlay", or "packed-hover".
-* (bug 47399) A success message is now displayed after changing the password.
-* Make thumb.php give HTTP redirects for file redirects
-* (bug 30607) Special:ListFiles can now show old versions of files. Additionally
- Special:AllMyUploads was introduced so the user can get a list of all things
- they have ever uploaded, even if it was subsequently overriden.
-* Introduced Special:MyFiles and Special:AllMyFiles as an alias for Special:MyUploads
- and Special:AllMyUploads respectively.
-* IPv6 addresses in X-Forwarded-For headers are now normalised before checking
- against allowed proxy lists.
-* Add deferrable update support for callback/closure.
-* Add TitleMove hook before page renames.
-* Revision deletion backend code is moved out of SpecialRevisiondelete
-* Added {{REVISIONSIZE}} variable to get the current size of a revision.
-* Add support for the LESS stylesheet language to ResourceLoader. LESS is a
- stylesheet language that compiles into CSS. ResourceLoader file modules may
- include LESS style files; ResourceLoader will compile these files into CSS
- before sending them to the client.
-** The $wgResourceLoaderLESSVars configuration variable is an associative array
- mapping variable names to string CSS values. These variables are considered
- declared for all LESS files. Additional variables may be registered by
- adding keys to the array.
-** $wgResourceLoaderLESSFunctions is an associative array of custom LESS
- function names to PHP callables. See <http://leafo.net/lessphp/docs/#custom_functions>
- for more details regarding custom functions.
-** $wgResourceLoaderLESSImportPaths is an array of file system paths. Files
- referenced in LESS '@import' statements are looked up here first.
-* ResourceLoader supports hashes as module cache invalidation trigger (instead
- of or in addition to timestamps).
-* Added $wgExtensionEntryPointListFiles for use in mergeMessageFileList.php.
-* Added a hook, APIQuerySiteInfoStatisticsInfo, to allow extensions to modify
- the output of the API query meta=siteinfo&siprop=statistics
-* Primary keys have been added to both the archive table and the externallinks
- tables.
-* Added $wgEnableParserLimitReporting to control whether the NewPP limit report is
- output in a HTML comment.
-* The 'UnwatchArticle' and 'WatchArticle' hooks now support a Status object
- instead of just a boolean return value to abort the hook.
-* Added a hook, SpecialWatchlistGetNonRevisionTypes, to allow extensions
- with custom recentchanges entries to hook into the Watchlist without
- clobbering each other.
-* A hidden, empty input field was added to the edit form, and any edit that fills
- it in will be rejected. This prevents against the simplest form of spambots.
- Previously in the "SimpleAntiSpam" extension by Ryan Schmidt.
-* populateRevisionLength.php maintenance script updated to also populate
- archive.ar_len field.
-* (bug 43571) DatabaseMySQLBase learned to list views, optionally filtered by a
- prefix. Also fixed PHPUnit test suite when using a MySQL backend containing
- views.
-
-=== Bug fixes in 1.22 ===
-* (bug 47271) $wgContentHandlerUseDB should be set to false during the upgrade
-* Disable Special:PasswordReset when $wgEnableEmail is false. Previously one
- could still navigate to the page by entering the URL directly.
-* (bug 47138) Fixed a fatal error when a blocked user tries to automatically
- create an account on login due external authentication in some circumstances.
-* (bug 23393) HTML <hN> headings containing line breaks are now handled
- correctly.
-* (bug 45803) Whitespace within == Headline == syntax and within <hN> headings
- is now non-significant and not preserved in the HTML output.
-* (bug 47218) Special:BlockList now handles correctly user names with spaces
- when passed as subpage.
-* Pager's properly validate which fields are allowed to be sorted on.
-* mw.util.tooltipAccessKeyRegexp: The regex now matches "option-" as well.
- Support for Mac "option" was added in 1.16, but the regex was never updated.
-* (bug 46768) Usernames of blocking users now display correctly, even if numeric.
-* (bug 39590) Self-transclusions now show the most up to date result always
- after save instead of being a revision behind.
-* A bias in wfRandomString() toward digits 1-7 has been corrected. Generated
- strings will now start with digits 0 and 8-f as often as they should.
-* (bug 45371) Removed Parser_LinkHooks and CoreLinkFunctions classes.
-* (bug 41545) Allow <kbd>, <samp>, and <var> to be nested like allowed in html.
-* PLURAL magic word no longer causes a PHP notice when no matching form exists.
-* (bug 36641) Patrol page links no longer show on non-existent revisions.
-* (bug 35810) Pages not linked from Special:RecentChanges or Special:NewPages
- are patrollable now.
-* (bug 30213) JavaScript for search suggestions is now disabled when the API
- is disabled, and AJAX patrolling and watching are now disabled when use of
- the write API is not allowed.
-* (bug 48294) API: Fix chunk upload async mode.
-* (bug 46749) Broken files tracking category removed from pages if an image
- with that name is uploaded.
-* (bug 14176) System messages that are empty were previously incorrectly treated
- as non-existent, causing a fallback to the default. This stopped users from
- overriding system messages to make them blank.
-* (bug 48319) action=parse no longer returns an error if passed none of 'oldid',
- 'pageid', 'page', 'title', and 'text' (e.g. if only passed 'summary'). A
- warning will instead be issued if 'title' is non-default, unless no props are
- requested.
-* Special:Recentchangeslinked will now include upload log entries
-* (bug 41281) Fixed ugly output if file size could not be extracted for multi-page media.
-* (bug 50315) list=logevents API module will now output log entries by anonymous users.
-* (bug 38911) Handle headers with rowspan in jquery.tablesorter
-* (bug 658) Converted the table of contents on wiki pages from <table> to <div>
- and adjusted skin CSS accordingly. The CSS was carefully crafted to be
- backwards-compatible in all reasonable cases (uses of the __TOC__ magic word,
- the #toc CSS id and the .toc CSS class). However, particularly bad abuse of
- the id or the class can possibly break.
-* CSSJanus now supports rgb, hsl, rgba, and hsla color syntaxes.
-* Special:Listfiles can no longer be sorted by image name when filtering
- by user in miser mode.
-* (bug 49074) CSSJanus: Handle values of border-radius correctly.
-* Handle relative inclusions ({{../name}}) in main namespace with subpages
- enabled correctly (previously MediaWiki tried to include Template:Parent/name
- instead of just Parent/name).
-* Added $wgAPIUselessQueryPages to allow extensions to flag their query pages
- for non-inclusion in ApiQueryQueryPages.
-* (bug 50870) mediawiki.notification: Notification area should remain visible
- when scrolled down.
-* (bug 13438) Special:MIMESearch no longer an expensive special page.
-* (bug 48342) Fixed a fatal error when $wgValidateAllHtml is set to true and
- the function apache_request_headers() function is not available.
-* (bug 33399) LivePreview: Re-run wikipage content handlers
- (jquery.makeCollapsible, jquery.tablesorter) after preview content is loaded.
-* (bug 51891) Fixed PHP notice on Special:PagesWithProp when no properties
- are defined.
-* (bug 52006) Corrected documentation of $wgTranscludeCacheExpiry.
-* (bug 52077) The APIEditBeforeSave hook is giving the content of the whole
- revision as second argument now, rather than just the current section.
-* (bug 49694) $wgSpamRegex is now also applied on the new section headline text
- adding a new topic on a page
-* (bug 41756) Improve treatment of multiple comments on a blank line.
-* (bug 51064) Purge upstream caches when deleting file assets.
-* (bug 39012) File types with a mime that we do not know the extension for
- can no longer be uploaded as an extension that we do know the mime type
- for.
-* (bug 51742) Add data-sort-value for better sorting of hitcounts Special:Tags
-* (bug 26811) On DB error pages, server hostnames are now hidden when both
- $wgShowHostnames and $wgShowSQLErrors are false.
-* (bug 6200) line breaks in <blockquote> are handled like they are in <div>
-* (bug 14931) Default character set now set to 'utf8' when a new MySQL
- database is created.
-* (bug 47191) Fixed "Column 'si_title' cannot be part of FULLTEXT index"
- MySQL error when installing using the binary character set option.
-* (bug 45288) Support mysqli PHP extension
-* (bug 55818) BREAKING CHANGE: Removed undocumented 'Debug' hook in wfDebug.
- This resolves an infinite loop when using $wgDebugFunctionEntry = true.
-* (bug 56707) Correct tooltip of "Next n results" on query special pages.
-* (bug 56770) mw.util.addPortletLink: Check length before access array index.
-
-=== API changes in 1.22 ===
-* (bug 25553) The JSON output formatter now leaves forward slashes unescaped
- to improve human readability of URLs and similar strings. Also, a "utf8"
- option is now provided to use UTF-8 encoding instead of hex escape codes
- for most non-ASCII characters.
-* (bug 46626) xmldoublequote parameter was removed. Because of a bug, the
- parameter has had no effect since MediaWiki 1.16, and so its removal is
- unlikely to impact existing clients.
-* (bug 47216) action=query&meta=siteinfo&siprop=skins will now indicate which
- skin is the default and which are unusable (e.g. listed in $wgSkipSkins).
-* (bug 25325) Added support for wlshow filtering (bots/anon/minor/patrolled)
- to action=feedwatchlist.
-* WDDX formatted output will actually be formatted (and normal output will no
- longer be), and will no longer choke on booleans.
-* action=opensearch no longer silently ignores the format parameter.
-* action=opensearch now supports format=jsonfm.
-* list=usercontribs&ucprop=ids will now include the parent revision id.
-* BREAKING CHANGE: action=parse no longer returns all langlinks for the page
- with prop=langlinks by default. The new effectivelanglinks parameter will
- request that the LanguageLinks hook be called to determine the effective
- language links.
-* BREAKING CHANGE: list=allpages, list=langbacklinks, and prop=langlinks do not
- apply the new LanguageLinks hook, and thus only consider language links
- stored in the database.
-* (bug 47219) Allow specifying change type of Wikipedia feed items
-* prop=imageinfo now allows setting iiurlheight without setting iiurlwidth
-* prop=info now adds the content model and page language of the title.
-* New upload log entries will now contain information on the relevant
- image (sha1 and timestamp).
-* (bug 49239) action=parse now can parse in preview and section preview modes.
-* (bug 49259) action=patrol now accepts revision ids.
-* (bug 48129) list=blocks&bkip= now correctly handles IPv6 CIDR ranges and
- honors $wgBlockCIDRLimit. Note any clients passing invalid values to bkip
- will now receive an error, rather than the previous behavior listing all
- user blocks.
-* (bug 48201) action=parse&text=foo now assumes wikitext if no title is given,
- rather than using the content model of the page "API".
-* action=watch no longer silently ignores hook abort.
-* (bug 50785) action=purge with forcelinkupdate=1 no longer queues refreshLinks
- jobs in the job queue for link table updates of pages that use the given page
- as a template. Instead, forcerecursivelinkupdate=1 is introduced and should
- be used if that behaviour is desirable.
-* The 'debugLog' property (enabled by $wgDebugToolbar) no longer sets the log
- entry values through ApiResult::content but directly. This changes the JSON
- output from an array of objects with content in '*' to an array of strings
- with the content.
-* (bug 51342) prop=imageinfo iicontinue now contains the dbkey, not the text
- version of the title.
-* (bug 52538) action=edit will now use empty text instead of the contents
- of section 0 when passed prependtext or appendtext with section=new.
-* Support for the 'gettoken' parameter to action=block and action=unblock,
- deprecated since 1.20, has been removed.
-* (bug 49090) Token-getting functions will fail when using jsonp callbacks.
-* (bug 52699) action=upload returns normalized file name on warning
- "exists-normalized" instead of filename to be uploaded to.
-* (bug 53884) action=edit will now return an error when the specified section
- does not exist in the page.
-* Added meta=filerepoinfo API module for getting information about foreign
- file repositories, and related ForeignAPIRepo methods getInfo and getApiUrl.
-* The new query module list=allfileusages to enumerate file usages was added.
-
-=== Languages updated in 1.22===
-
-MediaWiki supports over 350 languages. Many localisations are updated
-regularly. Below only new and removed languages are listed, as well as
-changes to languages because of Bugzilla reports.
-
-* Batak Toba (bbc-latn) added.
-* (bug 46751) Made Buryat (Russia) (буряад) (bxr) fallback to Russian.
-
-=== Other changes in 1.22 ===
-* BREAKING CHANGE: Implementation of MediaWiki's JS and JSON value encoding
- has changed:
-** MediaWiki no longer supports PHP installations in which the native JSON
- extension is missing or disabled.
-** XmlJsCode objects can no longer be nested inside objects or arrays.
- (For Xml::encodeJsCall(), this individually applies to each argument.)
-** The sets of characters escaped by default, along with the precise escape
- sequences used, have changed (except for the Xml::escapeJsString()
- function, which is now deprecated).
-* BREAKING CHANGE: The Services_JSON class has been removed. If necessary,
- be sure to upgrade affected extensions at the same time (e.g. Collection).
-* redirect.php was removed. It was unused.
-* ClickTracking integration was dropped from the mediaWiki.user.bucket
- JavaScript function. The 'tracked' option is now ignored.
-* BREAKING CHANGE: Legacy skins Simple, MySkin, Chick, Standard and Nostalgia
- were all removed. (Nostalgia was moved to an extension.) The SkinLegacy and
- LegacyTemplate classes that supported them were removed as well and are now a
- part of the Nostalgia extension.
-* Event namespace used by jquery.makeCollapsible has been changed from
- 'mw-collapse' to 'mw-collapsible' for consistency with the module name.
-* BREAKING CHANGE: The "ExternalAuth" authentication subsystem was removed, along
- with its associated globals of $wgExternalAuthType, $wgExternalAuthConf,
- $wgAutocreatePolicy and $wgAllowPrefChange. Affected users are encouraged to
- use AuthPlugin for external authentication/authorization needs.
-* The Quickbar feature of the legacy skin model and the last remnants of it
- throughout the code base have been removed.
-* Externaledit/externaldiff preference was removed. Very few users used this
- feature, and improper configuration can actually prevent a user from editing
-* Calling Linker methods using a skin will now output deprecation warnings.
-* (bug 46680) "Return to" links are no longer tagged with rel="next".
-* BREAKING CHANGE: mw.util.tooltipAccessKeyRegexp: The match group for the
- accesskey character is now $6 instead of $5.
-* HipHop compiler (hphpc) support was removed. HipHop VM support (hhvm) was
- added.
-* A new Special:Redirect page was added, providing lookup by revision ID,
- user ID, or file name. The old Special:Filepath page was reimplemented
- to redirect through Special:Redirect.
-* Monobook: Removed the old conditional stylesheets for Opera 6, 7 and 9.
-* Support for XHTML 1.0 has been removed. MediaWiki now only outputs (X)HTML5.
-* wikibits: User-agent related globals have been deprecated. The following
- properties now default to false and emit mw.log.warn: is_gecko, is_chrome_mac,
- is_chrome, webkit_version, is_safari_win, is_safari, webkit_match, is_ff2,
- ff2_bugs, is_ff2_win, is_ff2_x11, opera95_bugs, opera7_bugs, opera6_bugs,
- is_opera_95, is_opera_preseven, is_opera, and ie6_bugs.
-* (bug 48276) MediaWiki will now flash a confirmation message upon successfully
- editing a page.
-* (bug 40785) mediawiki.legacy.ajax has been marked as deprecated. The following
- properties now emit mw.log.warn when accessed: sajax_debug, sajax_init_object,
- sajax_do_call and wfSupportsAjax.
-* BREAKING CHANGE: meta keywords are no longer supported. A <meta name="keywords"
- will no longer be output and OutputPage::addKeyword no longer exists.
-* Methods Title::userCanEditCssSubpage and Title::userCanEditJsSubpage,
- deprecated since 1.19, have been removed.
-* (bug 50134) Hook functions are no longer required to return a value. When a
- hook function does not return a value (or when it returns an explicit null),
- processing continues. To abort the hook, a hook function must return an
- explicit, boolean false or a string error message. Other falsey values are
- tantamount to a 'return true' in earlier versions of MediaWiki.
-* BREAKING CHANGE: The EditSectionLink hook was removed after being
- deprecated since MediaWiki 1.14. Use DoEditSectionLink instead.
-* (bug 48256) The 'editsection-brackets' optional message was removed.
- Section edit links' brackets can now be customized using CSS by
- styling span.mw-editsection-bracket.
-* The usePatrol function in ChangesList has been marked as deprecated.
-* (bug 50785) A "null edit", that is, a save action in which no changes to the
- page text are made and no revision recorded, will no longer send refreshLinks
- jobs to the job table to update pages which use the edited page as a template.
-* The LivePreviewPrepare and LivePreviewDone events triggered on "jQuery( mw )"
- have been deprecated in favour of using mw.hook.
-* The 'showjumplinks' user preference has been removed, jump links are now
- always included.
-* Methods RecentChange::notifyRC2UDP, RecentChange::sendToUDP, and
- RecentChange::cleanupForIRC have been deprecated, as it is now the
- responsibility of classes implementing the RCFeedFormatter and RCFeedEngine
- interfaces to implement the formatting and delivery for recent change
- notifications.
-* SpecialPrefixindex methods namespacePrefixForm() and showPrefixChunk() have
- been made protected. They were accepting form variance arguments, this is now
- using properties in the SpecialPrefixindex class.
-* (bug 50310) BREAKING CHANGE: wikibits: Drop support for mwCustomEditButtons.
- It defaults to an empty array and emits mw.log.warn when accessed.
-* BREAKING CHANGE: Special:Disambiguations has been removed from MediaWiki core.
- Functions related to disambiguation pages are now handled by the Disambiguator
- extension (https://www.mediawiki.org/wiki/Extension:Disambiguator) (bug
- 35981).
-* BREAKING CHANGE: The 'mediawiki.legacy.wikiprintable' module has been removed.
- The skins/common/wikiprintable.css file no longer exists. Return value of
- Skin#commonPrintStylesheet is ignored. Please use the 'mediawiki.legacy.commonPrint'
- module instead or base your skin on SkinTemplate.
-* (bug 49629) The hook ExtractThumbParamaters has been deprecated in favour
- of media handler overriding MediaHandler::parseParamString.
-* (bug 46512) The collapsibleNav feature from the Vector extension has been moved
- to the Vector skin in core.
-* SpecialRecentChanges::addRecentChangesJS() function has been renamed
- to addModules() and made protected.
-* Methods WatchAction::doWatch and WatchAction::doUnwatch now return a Status
- object instead of a boolean.
-* Information boxes (CSS classes errorbox, warningbox, successbox) have been
- made more subtle.
-* BREAKING CHANGE: The module 'mediawiki.legacy.IEFixes' has been removed as it was
- unused. The file skins/common/IEFixes.js remains but is only used by wikibits.
- The file never contained any re-usable components. To use it in a skin, load
- 'mediawiki.legacy.wikibits' (which IEFixes depends on) and that will import
- IEFixes automatically if user agent conditions are met.
-* Code specific to the Math extension was marked as deprecated.
-* mediawiki.util: mw.util.wikiGetlink has been renamed to getUrl. (The old name
- still works, but is deprecated.)
-
-== Compatibility ==
-
-MediaWiki 1.22 requires PHP 5.3.2 or later.
-
-MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
-support for them is somewhat less mature. There is experimental support for
-Oracle.
-
-The supported versions are:
-
-* MySQL 5.0.2 or later
-* PostgreSQL 8.3 or later
-* SQLite 3.3.7 or later
-* Oracle 9.0.1 or later
-
-== Upgrading ==
-
-1.22 has several database changes since 1.21, and will not work without schema
-updates. Note that due to changes to some very large tables like the revision
-table, the schema update may take quite long (minutes on a medium sized site,
-many hours on a large site).
-
-If upgrading from before 1.11, and you are using a wiki as a commons
-repository, make sure that it is updated as well. Otherwise, errors may arise
-due to database schema changes.
-
-If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
-new database fields are filled with data.
-
-If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
-1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
-with MediaWiki 1.21.
-
-Don't forget to always back up your database before upgrading!
-
-See the file UPGRADE for more detailed upgrade instructions.
-
-For notes on 1.21.x and older releases, see HISTORY.
-
-== Online documentation ==
-
-Documentation for both end-users and site administrators is available on
-MediaWiki.org, and is covered under the GNU Free Documentation License (except
-for pages that explicitly state that their contents are in the public domain):
-
- https://www.mediawiki.org/wiki/Documentation
-
-== Mailing list ==
-
-A mailing list is available for MediaWiki user support and discussion:
-
- https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
-
-A low-traffic announcements-only list is also available:
-
- https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
-
-It's highly recommended that you sign up for one of these lists if you're
-going to run a public MediaWiki, so you can be notified of security fixes.
-
-== IRC help ==
-
-There's usually someone online in #mediawiki on irc.freenode.net.
diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php
index 9b2b6762f4ce..92ceb6f81f11 100644
--- a/includes/DefaultSettings.php
+++ b/includes/DefaultSettings.php
@@ -4026,7 +4026,6 @@ $wgDefaultUserOptions = array(
'rclimit' => 50,
'rememberpassword' => 0,
'rows' => 25,
- 'searchlimit' => 20,
'showhiddencats' => 0,
'shownumberswatching' => 1,
'showtoc' => 1,
diff --git a/includes/Preferences.php b/includes/Preferences.php
index 3ff99fce256a..65c41159759b 100644
--- a/includes/Preferences.php
+++ b/includes/Preferences.php
@@ -1047,14 +1047,6 @@ class Preferences {
static function searchPreferences( $user, IContextSource $context, &$defaultPreferences ) {
global $wgContLang, $wgVectorUseSimpleSearch;
- ## Search #####################################
- $defaultPreferences['searchlimit'] = array(
- 'type' => 'int',
- 'label-message' => 'resultsperpage',
- 'section' => 'searchoptions/displaysearchoptions',
- 'min' => 0,
- );
-
if ( $wgVectorUseSimpleSearch ) {
$defaultPreferences['vector-simplesearch'] = array(
'type' => 'toggle',
diff --git a/includes/filerepo/file/File.php b/includes/filerepo/file/File.php
index dc35016d1f31..c9e435e5a12f 100644
--- a/includes/filerepo/file/File.php
+++ b/includes/filerepo/file/File.php
@@ -583,6 +583,9 @@ abstract class File {
public function getCommonMetaArray() {
$handler = $this->getHandler();
+ if ( !$handler ) {
+ return false;
+ }
return $handler->getCommonMetaArray( $this );
}
diff --git a/includes/search/SearchEngine.php b/includes/search/SearchEngine.php
index 15569612aa68..94d39a576f20 100644
--- a/includes/search/SearchEngine.php
+++ b/includes/search/SearchEngine.php
@@ -36,6 +36,7 @@ class SearchEngine {
var $searchTerms = array();
var $namespaces = array( NS_MAIN );
var $showRedirects = false;
+ protected $showSuggestion = true;
/// Feature values
protected $features = array();
@@ -305,6 +306,17 @@ class SearchEngine {
}
/**
+ * Set whether the searcher should try to build a suggestion. Note: some searchers
+ * don't support building a suggestion in the first place and others don't respect
+ * this flag.
+ *
+ * @param boolean $showSuggestion should the searcher try to build suggestions
+ */
+ function setShowSuggestion( $showSuggestion ) {
+ $this->showSuggestion = $showSuggestion;
+ }
+
+ /**
* Parse some common prefixes: all (search everything)
* or namespace names
*
diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php
index 62eeb403c38a..e4ca05705714 100644
--- a/includes/specials/SpecialSearch.php
+++ b/includes/specials/SpecialSearch.php
@@ -120,7 +120,7 @@ class SpecialSearch extends SpecialPage {
*/
public function load() {
$request = $this->getRequest();
- list( $this->limit, $this->offset ) = $request->getLimitOffset( 20, 'searchlimit' );
+ list( $this->limit, $this->offset ) = $request->getLimitOffset( 20 );
$this->mPrefix = $request->getVal( 'prefix', '' );
$user = $this->getUser();
@@ -253,6 +253,8 @@ class SpecialSearch extends SpecialPage {
}
$t = Title::newFromText( $term );
+ $showSuggestion = $t === null || !$t->isKnown();
+ $search->setShowSuggestion( $showSuggestion );
// fetch search results
$rewritten = $search->replacePrefixes( $term );
@@ -269,7 +271,7 @@ class SpecialSearch extends SpecialPage {
}
// did you mean... suggestions
- if ( $textMatches && !$textStatus && $textMatches->hasSuggestion() ) {
+ if ( $showSuggestion && $textMatches && !$textStatus && $textMatches->hasSuggestion() ) {
$st = SpecialPage::getTitleFor( 'Search' );
# mirror Go/Search behavior of original request ..
diff --git a/includes/utils/UIDGenerator.php b/includes/utils/UIDGenerator.php
index 47cef8b6f48d..e60293b80317 100644
--- a/includes/utils/UIDGenerator.php
+++ b/includes/utils/UIDGenerator.php
@@ -243,6 +243,21 @@ class UIDGenerator {
* @since 1.23
*/
public static function newSequentialPerNodeIDs( $bucket, $bits, $count, $flags = 0 ) {
+ $gen = self::singleton();
+ return $gen->getSequentialPerNodeIDs( $bucket, $bits, $count, $flags );
+ }
+
+ /**
+ * Return IDs that are sequential *only* for this node and bucket
+ *
+ * @see UIDGenerator::newSequentialPerNodeID()
+ * @param string $bucket Arbitrary bucket name (should be ASCII)
+ * @param integer $bits Bit size (16 to 48) of resulting numbers before wrap-around
+ * @param integer $count Number of IDs to return (1 to 10000)
+ * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+ * @return array Ordered list of float integer values
+ */
+ protected function getSequentialPerNodeIDs( $bucket, $bits, $count, $flags ) {
if ( $count <= 0 ) {
return array(); // nothing to do
} elseif ( $count > 10000 ) {
@@ -274,7 +289,13 @@ class UIDGenerator {
// Note: use of fmod() avoids "division by zero" on 32 bit machines
if ( $counter === null ) {
$path = wfTempDir() . '/mw-' . __CLASS__ . '-' . rawurlencode( $bucket ) . '-48';
- $handle = fopen( $path, 'cb+' );
+ // Get the UID lock file handle
+ if ( isset( $this->fileHandles[$path] ) ) {
+ $handle = $this->fileHandles[$path];
+ } else {
+ $handle = fopen( $path, 'cb+' );
+ $this->fileHandles[$path] = $handle ?: null; // cache
+ }
// Acquire the UID lock file
if ( $handle === false ) {
throw new MWException( "Could not open '{$path}'." );
@@ -292,8 +313,8 @@ class UIDGenerator {
fflush( $handle );
// Release the UID lock file
flock( $handle, LOCK_UN );
- fclose( $handle );
}
+
$ids = array();
$divisor = pow( 2, $bits );
$currentId = floor( $counter - $count ); // pre-increment counter value
diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php
index 1889368abac2..2a10a78553bf 100644
--- a/languages/messages/MessagesEn.php
+++ b/languages/messages/MessagesEn.php
@@ -1911,7 +1911,6 @@ Note that their indexes of {{SITENAME}} content may be out of date.',
'rows' => 'Rows:',
'columns' => 'Columns:',
'searchresultshead' => 'Search',
-'resultsperpage' => 'Hits per page:',
'stub-threshold' => 'Threshold for <a href="#" class="stub">stub link</a> formatting (bytes):',
'stub-threshold-disabled' => 'Disabled',
'recentchangesdays' => 'Days to show in recent changes:',
diff --git a/maintenance/generateJsonI18n.php b/maintenance/generateJsonI18n.php
index 554e0a848e18..9c8354ca5733 100644
--- a/maintenance/generateJsonI18n.php
+++ b/maintenance/generateJsonI18n.php
@@ -97,7 +97,7 @@ class GenerateJsonI18n extends Maintenance {
}
$this->output( "All done.\n" );
- $this->output( "Also add \$wgMessagesDirs['YourExtension'] = __DIR__ . /i18n';\n" );
+ $this->output( "Also add \$wgMessagesDirs['YourExtension'] = __DIR__ . '/i18n';\n" );
}
protected function doShim( $jsondir ) {
@@ -110,7 +110,7 @@ $GLOBALS['wgHooks']['LocalisationCacheRecache'][] = function ( $cache, $code, &$
$fileName = __DIR__ . "/{{OUT}}/$csCode.json";
if ( is_readable( $fileName ) ) {
$data = FormatJson::decode( file_get_contents( $fileName ), true );
- foreach ( $data as $key => $unused ) {
+ foreach ( array_keys( $data ) as $key ) {
if ( $key === '' || $key[0] === '@' ) {
unset( $data[$key] );
}
diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc
index d9ef44a71405..aa8f5ede4e7f 100644
--- a/maintenance/language/messages.inc
+++ b/maintenance/language/messages.inc
@@ -1037,7 +1037,6 @@ $wgMessageStructure = array(
'rows',
'columns',
'searchresultshead',
- 'resultsperpage',
'stub-threshold',
'stub-threshold-disabled',
'recentchangesdays',