Merge "Implement static public Parser::getExternalLinkRel"
[lhc/web/wiklou.git] / RELEASE-NOTES-1.20
1 = MediaWiki release notes =
2
3 Security reminder: MediaWiki does not require PHP's register_globals
4 setting since version 1.2.0. If you have it on, turn it '''off''' if you can.
5
6 == MediaWiki 1.20 ==
7
8 MediaWiki 1.20 is a stable release.
9
10 === PHP 5.3 now required ===
11 Since 1.20, the lowest supported version of PHP is now 5.3.2. Please
12 upgrade PHP if you have not done so prior to upgrading MediaWiki.
13
14 === Configuration changes in 1.20 ===
15 * $wgGitRepositoryViewers defines a mapping from Git remote repository to the
16 Gitweb instance URL used in Special:Version.
17 * `$wgUsePathInfo = true;` is no longer needed to make $wgArticlePath work on servers
18 using like nginx, lighttpd, and apache over fastcgi. MediaWiki now always extracts
19 path info from REQUEST_URI if it's available.
20 * The user right 'upload_by_url' is no longer given to sysops by default.
21 This only affects installations which have $wgAllowCopyUploads set to true.
22 * Removed f-prot support from $wgAntivirusSetup.
23 * New variable $wgDBerrorLogTZ to provide dates in the error log in a
24 different timezone than the wiki timezone set by $wgLocaltimezone.
25 * New variables $wgDBssl and $wgDBcompress to enable SSL and compression for database
26 connections, if either are available for the selected DB type.
27 * $wgUseCombinedLoginLink now defaults to false, making MediaWiki output separate
28 login and create account links by default.
29
30 === New features in 1.20 ===
31 * Added TitleIsAlwaysKnown hook which gets called when determining if a page exists.
32 * Added NamespaceIsMovable hook which gets called when determining if pages in a
33 certain namespace can be moved.
34 * Added SpecialPageBeforeExecute hook which gets called before SpecialPage::execute.
35 * Added SpecialPageAfterExecute hook which gets called after SpecialPage::execute.
36 * Added ORMTable, ORMRow and ORMResult classes for additional abstraction of
37 database interaction.
38 * Added CacheHelper and associated SpecialCachedPage and CachedAction helper classes.
39 * (bug 32341) Add upload by URL domain limitation.
40 * &useskin=default will now always display the default skin. Useful for users with a
41 preference for the non-default skin to look at something using the default skin.
42 * (bug 27619) Remove preference option to display broken links as link?
43 * (bug 34896) jQuery JSON plugin upgraded to v2.3 (2011-09-17).
44 * (bug 34302) Add CSS classes to email fields in user preferences.
45 * Introduced $wgDebugDBTransactions to trace transaction status (currently PostgreSQL only).
46 * (bug 23795) Add parser itself to ParserMakeImageParams hook.
47 * Introduce a cryptographic random number generator source api for use when
48 generating various tokens.
49 * (bug 30963) Option on Special:Prefixindex and Special:Allpages to not show redirects.
50 * (bug 18062) New message when edit or create the local page of a shared file.
51 * (bug 22870) Separate interface message when creating a page.
52 * (bug 17615) nosummary option should be reassigned on preview/captcha.
53 * (bug 34355) Add a variable and parser function for the namespace number.
54 * (bug 35649) Special:Version now shows hashes of extensions checked out from git.
55 * (bug 35728) Git revisions are now linked on Special:Version.
56 * "Show Changes" on default messages shows now diff against default message text
57 * (bug 23006) create #speciale parser function.
58 * generateSitemap can now optionally skip redirect pages.
59 * (bug 27757) New API command just for retrieving tokens (not page-based).
60 * Added GitViewers hook for extensions using external git repositories to have a web-based
61 repository viewer linked to from Special:Version.
62 * Memcached debug logs can now be sent to their own file logs by setting
63 $wgDebugLogFile['memcached'] to some filepath.
64 * (bug 35685) api.php URL and other entry point URLs are now listed on
65 Special:Version
66 * Edit notices can now be translated.
67 * jQuery upgraded to 1.8.2.
68 * jQuery UI upgraded to 1.8.23.
69 * QUnit upgraded from v1.2.0 to v1.10.0.
70 * (bug 37604) jquery.cookie upgraded to 2011 version.
71 * (bug 22887) Add warning and tracking category for preprocessor errors
72 * (bug 31704) Allow selection of associated namespace on the watchlist
73 * (bug 5445) Now remove autoblocks when a user is unblocked.
74 * Added $wgLogExceptionBacktrace, on by default, to allow logging of exception
75 backtraces.
76 * Added device detection for determining device capabilities.
77 * QUnit.newMwEnvironment now supports passing a custom setup and/or teardown function.
78 Arguments signature has changed. First arguments is now an options object of which
79 'config' can be a property. Previously 'config' itself was the first and only argument.
80 * New getCreator and getOldestRevision methods added to WikiPage class
81 * (bug 4220) the XML dump format schema now have unique identity constraints
82 for page and revision identifiers. Patch by Elvis Stansvik.
83 * cleanupSpam.php now can delete spam pages if --delete was specified instead of blanking
84 them.
85 * Added new hook ChangePasswordForm to allow adding of additional fields in Special:ChangePassword
86 * Added new function getDomain to AuthPlugin for getting a user's domain
87 * (bug 23427) New magic word {{PAGEID}} which gives the current page ID.
88 Will be null on previewing a page being created.
89 * (bug 37627) UserNotLoggedIn() exception to show a generic error page whenever
90 a user is not logged in.
91 * Watched status in changes lists are no longer indicated by <strong></strong>
92 tags with class "mw-watched". Instead, each line now has a class
93 "mw-changeslist-line-watched" or "mw-changeslist-line-not-watched", and the
94 title itself is surrounded by <span></span> tags with class "mw-title".
95 * Added ContribsPager::reallyDoQuery hook allowing extensions to data to MyContribs
96 * Added new hook ParserAfterParse to allow extensions to affect parsed output
97 after the parse is complete but before block level processing, link holder
98 replacement, and so on.
99 * (bug 34678) Added InternalParseBeforeSanitize hook which gets called during Parser's
100 internalParse method just before the parser removes unwanted/dangerous HTML tags.
101 * Added new hook AfterFinalPageOutput to allow modifications to buffered page output before sent
102 to the client.
103 * (bug 36783) Implement jQuery Promise interface in mediawiki.api module.
104 * Make dates in sortable tables sort according to the page content language
105 instead of the site content language
106 * (bug 37926) Deleterevision will no longer allow users to delete log entries,
107 the new deletelogentry permission is required for this.
108 * (bug 14237) Allow PAGESINCATEGORY to distinguish between 'all', 'pages', 'files'
109 and 'subcats'
110 * (bug 38362) Make Special:Listuser includeable on wiki pages.
111 * Added support in jquery.localize for placeholder attributes.
112 * (bug 38151) Implemented mw.user.getRights for getting and caching the current
113 user's user rights.
114 * Session storage can now configured independently of general object cache
115 storage, by using $wgSessionCacheType. $wgSessionsInMemcached has been
116 renamed to $wgSessionsInObjectCache, with the old name retained for backwards
117 compatibility. When this feature is enabled, the expiry time can now be
118 configured with $wgObjectCacheSessionExpiry.
119 * Added a Redis client for object caching.
120 * Implemented mw.user.getGroups for getting and caching user groups.
121 * (bug 37830) Added $wgRequirePasswordforEmailChange to control whether password
122 confirmation is required for changing an email address or not.
123 * HTMLForm mutators can now be chained (they return $this)
124 * A new message, "api-error-filetype-banned-type", is available for formatting
125 API upload errors due to the file extension blacklist.
126 * New hook 'ParserTestGlobals' allows to set globals before running parser tests.
127 * Allow importing pages as subpage.
128 * Add lang and hreflang attributes to language links on Login page.
129 * (bug 22749) Create Special:MostInterwikis.
130 * Show change tags when transclude Special:Recentchanges(linked) or Special:Newpages.
131 * (bug 23226) Add |class= parameter to image links in order to add class(es) to HTML img tag.
132 * (bug 39431) SVG animated status is now shown in long description.
133 * (bug 39376) jquery.form upgraded to 3.14.
134 * SVG files will now show the actual width in the SVG's specified units
135 in the metadata box.
136 * Added ResourceLoader module "jquery.jStorage" (v0.3.0, http://jStorage.info/).
137 * (bug 39273) Added AJAX support for "Show changes" (diff) in LivePreview.
138 * Added ResourceLoader module "jquery.badge".
139 * mw.util.$content now points to the overall content area in the skin rather than just
140 page text content area. If you need the old behaviour please use $( '#mw-content-text').
141 * jsMessage has been replaced with a floating bubble notification system complete
142 with auto-hide, multi-message support, and message replacement tags.
143 * jquery.messageBox which appears to be unused by both core and extensions has
144 been removed.
145 * (bug 34939) Made link parsing insensitive ([HttP://]).
146 * (bug 40072) Add CSS classes to items in output of ChangesList pages.
147 * Added $wgCopyUploadProxy global to define which proxy to use for copy
148 uploads.
149 * (bug 40448) mediawiki.legacy.mwsuggest has been replaced with a new module,
150 mediawiki.searchSuggest, based on SimpleSeach from Extension:Vector.
151
152 === Known issues in 1.20.0 ===
153 These are issues that we're targeting to be fixed in a later release
154 in the 1.20 series. Issues may be added or removed from this list as
155 we see fit. For now, it is comprised of those bugs on the 1.20.0
156 milestone in Bugzilla.
157
158 * (bug 35894): Reports of secret key generation "hanging" on windows
159 This is probably a bug that has been fixed in PHP. If you run
160 into this, try upgrading your PHP.
161 * (bug 38334): PHP Notice: Undefined index: href in /www/w/skins/Vector.php on line 416
162 We think this is a problem in some extension. If you see this,
163 try disabling your extensions and check out the logging patch on
164 this bug. Or try this patch:
165 <https://gerrit.wikimedia.org/r/#/c/27937/1/skins/Vector.php>
166 * (bug 39268): [Regression] Toolbar inserts in main textarea only (instead of the focussed textarea)
167 This should only be an issue if you are using the ProofreadPage
168 extension.
169 * (bug 40641): Clicking "others" in Special:Version asks to download a file
170 If you encounter this, you can tell your webserver to serve the
171 CREDITS file with text/plain MIME type to fix it.
172
173 === Bug fixes in 1.20 ===
174 * (bug 40939): [Regression] InfoAction: Call to a member function getUserText() on a non-object
175 * (bug 40780): searchsuggest-containing line ("containing...") doesn't include the entered text
176 * (bug 37714): [Regression] Incomplete log entries
177 * (bug 27202): API: Add timestamp sort to list=allimages
178 * (bug 30245) Use the correct way to construct a log page title.
179 * (bug 34237) Regenerate an empty user_token and save to the database
180 when we try to set the user's cookies for login.
181 * (bug 32210) New edit emails for watched pages always provide a link to the
182 edit which triggered the mail.
183 * (bug 12021) Added user talk link on Special:Listusers.
184 * (bug 34445) section edit and TOC hide/show links are excluded from selection and
185 copy/paste on supporting browsers.
186 * (bug 34428) Fixed incorrect hash mismatch errors in the DiffHistoryBlob
187 history compression method.
188 * (bug 34702) Localised parentheses are now used in more special pages.
189 * (bug 34723) When editing a script page on a RTL wiki the textbox should be LTR.
190 * (bug 34762) Calling close() on a DatabaseBase object now clears the connection.
191 * (bug 34863) Show deletion log extract on non-existent file pages if applicable.
192 * (bug 28019) Let ?preloadtitle=foo be passed on to target of
193 Special:MyPage and Special:MyTalk.
194 * (bug 34929) Show the correct diff when a section edit is rejected by the spam
195 filter.
196 * (bug 15816) Add a switch for SETting the search_path (Postgres).
197 * (bug 34521) Returning to the previous page after logging in loses any array-
198 valued parameters in the query string.
199 * (bug 34735) Updated compressOld.php documentation to mention the different
200 usages of -s and -n parameters depending on compression type.
201 * (bug 13896) Rendering of devanagari numbers in automatic '#' number lists.
202 * (bug 33689) Upgrade to 1.19 on Postgres fails due to incomplete query when.
203 trying to defer foreign key for externallinks.
204 * (bug 32748) Printer friendly version of article decode Unicode chars as a
205 pretty IRI in footer.
206 * Removed white border around thumbnails in galleries.
207 * (bug 31236) "Next" and "Previous" buttons are shown incorrectly in
208 an RTL environment.
209 * (bug 35749) Updated maintenance/checkSyntax.php to use Git instead of
210 Subversion when invoked with the --modified option.
211 * (bug 35069) On history pages, the " . . " separator after the number of
212 characters changed in a revision is now suppressed if no text would follow.
213 * (bug 18704) Add a unique CSS class or ID to the tagfilter table row at RecentChanges
214 * (bug 33564) transwiki import sometimes result in invalid title.
215 * (bug 35572) Blocks appear to succeed even if query fails due to wrong DB structure
216 * (bug 31757) Add a word-separator between help-messages in HTMLForm
217 * (bug 30410) Removed deprecated $wgFilterCallback and the 'filtered' API error.
218 * (bug 32604) Some messages needs escaping of wikitext inside username.
219 * (bug 36537) Rename wfArrayToCGI to wfArrayToCgi for consistency with wfCgiToArray.
220 * (bug 25946) The message on the top of Special:RecentChanges is now displayed.
221 in user language instead of content language.
222 * (bug 35264) Wrong type used for <ns> in export.xsd
223 * (bug 24985) Use $wgTmpDirectory as the default temp directory so that people
224 who don't have access to /tmp can specify an alternative.
225 * (bug 27283) SqlBagOStuff breaks PostgreSQL transactions.
226 * (bug 35727) mw.Api ajax() should put token parameter last.
227 * (bug 37708) mw.Uri.clone() should make a deep copy.
228 * (bug 38024) ResourceLoader should not create empty stylesheets for modules
229 that don't have stylesheets.
230 * (bug 36812) Special:ActiveUsers "Hide bots" should hide users from any group
231 having the "bot" user right, instead of just the default "bot" user group.
232 * (bug 35082) mw.util.addPortletLink incorrectly adds link to mutiple <ul> tags.
233 * (bug 36991) jquery.tablesorter should extract date sort format from date
234 string instead of global config. Dates like "April 1 2012" and "1 April 2012"
235 now sort correctly regardless of the content language's DefaultDateFormat.
236 * (bug 31895) mw.loader mode now correct when triggered from a $.fn.ready
237 handler that is bound before mediawiki.js's handler (e.g. browser-userscripts
238 like greasemonkey).
239 * (bug 38152) jquery.tablesorter: Use .data() instead of .attr(), so that live
240 values are used instead of just the fixed values from when the tablesorter
241 was initialized.
242 * (bug 38093) Gender of changed user groups missing in Special:Log/rights
243 * (bug 35893) Special:Block needs to load mediawiki.special.block.js.
244 * (bug 37331) ResourceLoader modules sometimes execute twice in Firefox
245 * (bug 31644) GlobalUsage, CentralAuth and AbuseLog extensions should not use
246 insecure links to foreign wikis in the WikiMap.
247 * (bug 36073) Avoid duplicate element IDs on File pages.
248 * (bug 25095) Special:Categories should also include the first relevant item
249 when "from" is filled.
250 * (bug 35526) jquery.tablesorter now uses a stable sort.
251 * (bug 38953) --memory-limit switch not working for runJobs.php.
252 * (bug 33037) Make subpage of Special:newfiles control how many files
253 are returned, like in previous versions.
254 * (bug 36524) "Show" options on Special:RecentChanges and Special:RecentChangesLinked
255 are now remembered between successive clicks.
256 * (bug 26069) Page title is no longer "Error" for all error pages.
257 * (bug 39297) Show warning if thumbnail of animated image will not be animated.
258 * (bug 38249) Parser will throw an exception instead of outputting gibberish if
259 PCRE is compiled without support for unicode properties.
260 * (bug 30390) Suggested file name on Special:Upload should not contain
261 illegal characters.
262 * EXIF below sea level GPS altitude data is now shown correctly.
263 * (bug 39284) jquery.tablesorter should not consider "."" or "?"" to be a currency.
264 * (bug 39273) "Show changes" should not be incorrectly displayed in the Live Preview state.
265 * Made body-content lang attribute honor the variant language when it is set.
266 * (bug 36761) "Mark pages as visited" now submits previously established filter options.
267 * (bug 39635) PostgreSQL LOCK IN SHARE MODE option is a syntax error.
268 * (bug 36329) Accesskey tooltips for Firefox 14 on Mac should use "ctrl-option-" prefix.
269 * (bug 32552) Drop unused database field cat_hidden from table category.
270 * (bug 24502) Do not allow multiple language links to the same language.
271 * (bug 40214) Category pages no longer use deprecated "width" HTML attribute.
272 * (bug 39941) Add missing stylesheets to the installer pages
273 * In HTML5 mode, allow new input element types values (such as color, range..)
274 * (bug 36151) mw.Title: Don't limit extension in title parsing.
275 * (bug 38158) jquery.byteLimit sometimes causes an unexpected 0 maxLength being enforced.
276 * (bug 38163) jquery.byteLimit incorrectly limits input when using methods other than
277 basic per-char typing.
278 * (bug 34495) patrol log now credit the user patrolling (instead of patrolled
279 user).
280 * (bug 31676) ResourceLoader should work around IE stylesheet limit.
281 * (bug 40498) ResourceLoader should not output an empty "@media print { }" block.
282 * (bug 40500) ResourceLoader should not ignore media-type for urls in debug mode.
283 * (bug 40660) ResourceLoaderWikiModule should not convert "&nbsp;" to a space
284 for pages from the MediaWiki-namespace.
285 * (bug 40329) (bug 40632) Removed CleanupPresentationalAttributes feature.
286
287 === API changes in 1.20 ===
288 * (bug 34316) Add ability to retrieve maximum upload size from MediaWiki API.
289 * (bug 34313) MediaWiki API intro message about "HTML format" should mention
290 the format parameter.
291 * (bug 32384) Allow descending order for list=watchlistraw.
292 * (bug 31883) Limit of bkusers of list=blocks and titles of action=query is
293 not documented in API help.
294 * (bug 32492) API now allows editing using pageid.
295 * (bug 32497) API now allows changing of protection level using pageid.
296 * (bug 32498) API now allows comparing pages using pageids.
297 * (bug 30975) API import of pages with invalid characters in this wiki leads to Fatal Error.
298 * (bug 30488) API now allows listing of backlinks/embeddedin/imageusage per pageid.
299 * (bug 34927) Output media_type for list=filearchive.
300 * (bug 28814) add properties to output of action=parse.
301 * (bug 33224) add variants of content language to meta=siteinfo.
302 * (bug 32643) action=purge with forcelinkupdate no longer crashes when ratelimit is reached.
303 * The paraminfo module now also contains result properties for most modules.
304 * (bug 32348) Allow descending order for list=alllinks.
305 * (bug 31777) Upload unknown error ``fileexists-forbidden''.
306 * (bug 32382) Allow descending order for list=iwbacklinks.
307 * (bug 32381) Allow descending order for list=backlinks, list=embeddedin and list=imageusage.
308 * (bug 32383) Allow descending order for list=langbacklinks.
309 * API meta=siteinfo can now return the list of known variable IDs.
310 * (bug 35980) list=deletedrevs now honors drdir correctly in "all" mode (mode #3).
311 * (bug 29290) API avoids mangling fields in continuation parameters
312 * (bug 36987) API avoids mangling fields in continuation parameters
313 * (bug 30836) siteinfo prop=specialpagealiases will no longer return nonexistent special pages
314 * (bug 38190) Add "required" flag to some token params for hint in api docs.
315 * (bug 27567) Add file repo support to prop=duplicatefiles.
316 * (bug 27610) Add archivename for non-latest image version to list=filearchive
317 * (bug 38231) Add xml parse tree to action=parse.
318 * Watchlist notification timestamp may be queried by page and may be updated via the API.
319 * (bug 38904) prop=revisions&rvstart=... no longer blows up when continuing.
320 * (bug 39032) ApiQuery generates help in constructor.
321 * (bug 11142) Improve file extension blacklist error reporting in API upload.
322 * (bug 39665) List of query generators is now not built using reflection, instead it is
323 defined in code.
324
325 === Languages updated in 1.20 ===
326
327 MediaWiki supports over 350 languages. Many localisations are updated
328 regularly. Below only new and removed languages are listed, as well as
329 changes to languages because of Bugzilla reports.
330
331 * Emilian (egl) added.
332 * Tornedalen Finnish (fit) added.
333 * Mizo (lus) added.
334 * Santali (sat) added.
335 * (bug 34192) Namespace gender aliases for Albanian languages (sq & aln).
336 * (bug 35541) Namespace gender aliases for Croatian (hr).
337 * (bug 36012) Space in $separatorTransformTable should be non-breaking in
338 Portuguese, Esperanto and Udmurt.
339 * Turoyo (tru) added.
340 * Cyrillic-Latin language converter added for Uzbek (uz).
341
342 === Other changes in 1.20 ===
343 * The user_token field is now left empty until a user attempts to login and
344 cookies need to be set. It is also now possible to reset every user's
345 user_token simply by clearing the values in the user_token column.
346 * Removed ./tests/qunit/index.html from core. It wasn't actively maintained and
347 has been made obsolete when [[Special:JavaScriptTest/qunit]] was introduced,
348 which actually uses ResourceLoader, LocalSettings and the Skin.
349 * Removed $wgDBtransactions global. This was only checked in one class
350 and only applies to MyISAM or similar DBs. Those should only be used
351 for archived sites anyway. We can't get edit conflicts on such sites,
352 so the WikiPage code wasn't useful there either.
353 * Deprecated mw.user.name in favour of mw.user.getName.
354 * Deprecated mw.user.anonymous in favour of mw.user.isAnon.
355 * Deprecated DatabaseBase functions newFromParams(), newFromType(), set(),
356 quote_ident(), and escapeLike() were removed.
357 * Use of __DIR__ instead of dirname( __FILE__ ).
358 * OutputPage::wrapWikiMsg() no longer supports the 'options' parameter. It was
359 not used and complicated migration to Message class.
360 * Live preview functionality has been improved and moved into the
361 'mediawiki.action.edit.preview' module. The old 'mediawiki.legacy.preview' module
362 has been removed.
363 * (bug 40448) Removed mediawiki.legacy.mwsuggest module, and removed the
364 following that has become obsolete:
365 - globals $wgEnableMWSuggest and $wgMWSuggestTemplate.
366 - mw.config.values wgMWSuggestTemplate and wgSearchNamespaces.
367 - method SearchEngine::getMWSuggestTemplate().
368
369 == Compatibility ==
370
371 MediaWiki 1.20 requires PHP 5.3.2. PHP 4 is no longer supported.
372
373 MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
374 support for them is somewhat less mature. There is experimental support for IBM
375 DB2 and Oracle.
376
377 The supported versions are:
378
379 * MySQL 5.0.2 or later
380 * PostgreSQL 8.3 or later
381 * SQLite 3.3.7 or later
382 * Oracle 9.0.1 or later
383
384 == Upgrading ==
385
386 1.20 has several database changes since 1.19, and will not work without schema
387 updates.
388
389 If upgrading from before 1.11, and you are using a wiki as a commons
390 repository, make sure that it is updated as well. Otherwise, errors may arise
391 due to database schema changes.
392
393 If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
394 new database fields are filled with data.
395
396 If you are upgrading from MediaWiki 1.4.x or earlier, some major database
397 changes are made, and there is a slightly higher chance that things could
398 break. Don't forget to always back up your database before upgrading!
399
400 See the file UPGRADE for more detailed upgrade instructions.
401
402 For notes on 1.19.x and older releases, see HISTORY.
403
404 == Online documentation ==
405
406 Documentation for both end-users and site administrators is available on
407 MediaWiki.org, and is covered under the GNU Free Documentation License (except
408 for pages that explicitly state that their contents are in the public domain):
409
410 https://www.mediawiki.org/wiki/Documentation
411
412 == Mailing list ==
413
414 A mailing list is available for MediaWiki user support and discussion:
415
416 https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
417
418 A low-traffic announcements-only list is also available:
419
420 https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
421
422 It's highly recommended that you sign up for one of these lists if you're
423 going to run a public MediaWiki, so you can be notified of security fixes.
424
425 == IRC help ==
426
427 There's usually someone online in #mediawiki on irc.freenode.net.