= MediaWiki release notes =

Security reminder: MediaWiki does not require PHP's register_globals
setting since version 1.2.0. If you have it on, turn it *off* if you can.

== MediaWiki 1.18 ==

THIS IS NOT A RELEASE YET

MediaWiki is now using a "continuous integration" development model with
quarterly snapshot releases. The latest development code is always kept
"ready to run", and in fact runs our own sites on Wikipedia.

Release branches will continue to receive security updates for about a year
from first release, but nonessential bugfixes and feature developments
will be made on the development trunk and appear in the next quarterly release.

Those wishing to use the latest code instead of a branch release can obtain
it from source control: http://www.mediawiki.org/wiki/Download_from_SVN

=== PHP 5.2 now required ==
In 1.18, the lowest supported version of MediaWiki is now 5.2.3. Please upgrade
PHP if you have not done so prior to upgrading MediaWiki.

=== Configuration changes in 1.18 ===
* The WantedPages::getSQL hook has been removed and replaced with
  WantedPages::getQueryInfo . This may break older extensions.
* $wgUseCombinedLoginLink controls whether to output a combined
  login / create account link in the personal bar, or to output separate login
  and create account links
* Skin names are no longer created based on a ucfirst version of the key in
  $wgValidSkinNames but now the value. This means for
  $wgValidSkinNames["monobook"] = "MonoBook"; the skin loader will no longer try
  loading SkinMonobook and will instead load SkinMonoBook.
* $wgMaxUploadSize may now be set to an array to specify the upload size limit
  per upload type.
* $wgAPICacheHelp added in 1.16 is now removed. To disable API help caching, set
  $wgAPICacheHelpTimeout = 0;
* OutputPage::isUserJsAllowed() no longer returns false when scripts are allowed
  by the page, but $wgAllowUserJs is set to false.
* Pure "Skin" class based custom skins are no longer supported, all custom skins
  should be put together using SkinTemplate and BaseTemplate or QuickTemplate.
* The transliteration for passwords in case they were migrated from an old Latin-1
  install (previous to MediaWiki 1.5) is now only done for wikis with
  $wgLegacyEncoding set.
* (bug 27508) Add $wgSVGMetadataCutoff to limit the maximum amount of an svg we
  look at when finding metadata to prevent excessive resource usage.
* $wgSysopUserBans and $wgSysopRangeBans (deprecated in 1.17) are now removed.
  Use $wgBlockCIDRLimit = array( 'IPv4' => 43, 'IPv6' => 128 ) to achieve the same
  functionality as $wgSysopRangeBans; you can use the BlockIp hook to replicate
  $wgSysopUserBans functionality.
* The options on the block form have been standardised such that checking a box
  makes the block 'more serious'; so while "check to prevent account creation" and
  "check to enable autoblock" remain the same, "check to allow user-talk edit" is
  reversed to "check to *disable* user-talk edit", and "check to block anon-only"
  becomes "check to block logged-in users too".  The default settings remain the same.
* Most of the field names on the Special:Block form have been changed, which will
  probably break screen-scraping bots.
* (bug 26866) The 'trackback' right is no longer granted to sysops by default.
  $wgUseTrackbacks is already false by default
* (bug 17009) the hiddenStructure CSS class, a highly hackish way of at least *appearing*
  to hide article elements, has been removed.  Use the ParserFunctions extension to
  actually remove unwanted elements from the output.

=== New features in 1.18 ===
* Added a special page, disabled by default, that allows users with the
  'disableaccount' privilege to permanently deactivate user accounts.
* (bug 8130) Query pages should limit to content namespaces, not just main
  namespace
* Search suggestions (other than in the Vector skin) will now use the HTML5
  datalist feature where supported, currently only Firefox 4.
* Special:Contribs now redirects to Special:Contributions
* (bug 6672) Images are now autorotated according to their EXIF orientation.
  This only affects thumbnails; the source remains unrotated.
* (bug 25708) Update case mappings and normalization to Unicode 6.0.0
* New hook ArticlePrepareTextForEdit added, called when preparing text to be
  saved.
* New parser option PreSaveTransform added, allows the pre-save transformation
  to be selectively disabled.
* Alternative to $wgHooks implemented, using the new Hooks class.
* Add width parameter to Special:Filepath to allow getting the file path of a
  thumbnail.
* (bug 26870) Add size to {{filepath:}}
* Upload warnings now show a thumbnail of the uploaded file
* Introduced the edittools-upload message, which will be inserted under the
  upload form instead of edittools if available
* (bug 26285) Extensions will be automatically generated on upload if the user
  specified a filename without extension.
* (bug 26851) Special:UserRights now allows to prefill the reason field
* New maintenance script to fix double redirects
  (maintenance/fixDoubleRedirects.php)
* (bug 23315) New body classes to allow easier styling of special pages
* (bug 27159) Make email confirmation code expiration time configurable
* CSS/JS for each user group is imported from MediaWiki:Sysop.js,
  MediaWiki:Autoconfirmed.css, etc.
* (bug 24230) Uploads of ZIP types, such as MS Office or OpenOffice can now be
  safely enabled. A ZIP file reader was added which can scan a ZIP file for
  potentially dangerous Java applets. This allows applets to be blocked
  specifically, rather than all ZIP files being blocked.
* (bug 2429) Allow selection of associated namespace in recent changes
* (bug 26217) File size is now checked before uploading in HTML5 browsers
* CSS stylesheet MediaWiki:Noscript.css is now loaded for users with JavaScript
  disabled (enclosed in the head in a <noscript> tag)
* Added UserGetLanguageObject hook to change the language used in $wgLang
* (bug 14645) When $wgMiserMode is on, expensive special pages are styled
  differently (italicized by default) on Special:SpecialPages
* Added $wgAggregateStatsID, which allows UDP stats to be aggregated over
  several wikis.
* When $wgAllowMicrodataAttributes is true, all itemtypes are allowed, not just
  the three that were defined in the original specification.
* (bug 14706) Added support for the Imagick PHP extension.
* (bug 18691) Added support for SVG rasterization using the Imagick PHP 
  extension
* (bug 2581, bug 6834) Added links to thumbnail in several resolutions to the 
  file description page. The sizes are set by $wgImageLimits.
* (bug 28031) Add pageCount support to ArchivedFile
* (bug 27924) PhpHttpRequest doesn't return response body if HTTP != 200
* Added hook BitmapHandlerTransform to allow extension to transform a file 
  without overriding the entire handler.
* The parser now attempts to output markers for editsection tokens and defer the
  rendering of them post-cache to reduce parser cache fragmentation and ensure
  skin customizability of edit section links.

=== Bug fixes in 1.18 ===
* (bug 23119) WikiError class and subclasses are now marked as deprecated
* (bug 10871) Javascript and CSS pages in MediaWiki namespace are no longer
  treated as wikitext on preview.
* (bug 22753) Output from update.php is more clear when things changed, entries
  indicating nothing changed are now all prefixed by "..."
* Page existence is now not revealed (in the colour of the tabs) to users who
  cannot read the page in question.
* (bug 19006) {{REVISIONUSER}} no longer acts like {{CURRENTUSER}} in some cases
* (bug 16019) $wgArticlePath = "/$1" no longer breaks API edit/watch actions
* (bug 18372) File types blacklisted by $wgFileBlacklist will no longer be shown
  as "Permitted file types" on the upload form
* (bug 26379) importImages.php gives more descriptive error message on failure.
* (bug 26410) + signs are no longer treated as spaces in internal links if
  link has a % sign in it.
* (bug 26412) Search results headers no longer show a bogus edit link.
* (bug 26540) Fixed wrong call to applyPatch in MysqlUpdater
* (bug 26574) Added 'upload' to $wgRestrictionTypes, allowing upload protected
  pages to be queried via the API and Special:ProtectedPages, and allowing
  disabling upload protection by removing it from $wgRestrictionTypes.
* If an edit summary exceeds 250 bytes and is truncated, add an ellipse
* (bug 26638) Database error pages display correctly in RTL languages
* (bug 26187) Confirmrecreate no longer parses the edit summary
* (bug 25506) Exception is thrown if OutputPage::parse is called inside a tag
  hook, which would reset parser state
* (bug 26208) Mark directionality of some interlanguage links
* (bug 26034) Make the "View / Read" tab in content_navigation style tabs remain
  selected when the action is "purge".
* (bug 14267) Support a MediaWiki:Mainpage-nstab override for the subject
  namespace tab on the mainpage of a wiki.
* (bug 10158) Do not mention allowing others to contact you when the feature
  is disabled ($wgEnableUserEmail=false)
* (bug 26733) Wrap initial table creation in transaction
* (bug 26729) Category pages should return 404 if they do not exist and have no
  members.
* (bug 2585) Image pages should send 404 if no image, no shared image and no
  description page.
* Custom editintro's using the editintro url parameter will no longer show
  <noinclude> sections on pages they are included on.
* (bug 26449) Keep underlines from headings outside of tables and thumbs by
  adding overflow:hidden to h1,h2,h3,h4,h5,h6 (also fixes editsection bunching).
* (bug 26708) Remove background-color:white from tables in Monobook and Vector.
* (bug 26781) {{PAGENAME}} and related parser functions escape their output
  better.
* (bug 26716) Provide link to instructions for external editor related
  preferences and add a comment to the ini control file explaining what is
  going on.
* Trying to upload a file with no extension or with a disallowed MIME type now
  gives the right message instead of complaining about a MIME/extension mismatch
* (bug 26809) Uploading files with multiple extensions where one of the
  extensions is blacklisted now gives the proper extension in the error message.
* (bug 26961) Hide anon edits in watchlist preference now actually works.
* (bug 19751) Filesystem is now checked during image undeletion
* Send last modified headers for Special:Recentchanges when RC patrol is
  enabled, but user cannot see rc patrol links.
* (bug 26548) ForeignAPIRepo (InstantCommons) now works with PDF files
  and other multi-paged file formats.
* Files with a mime type that does not match the extension are now properly
  thumbnailed
* (bug 27201) Special:WhatLinksHere output no longer contains duplicate IDs
* (bug 15905) Nostalgia skin could become more usable by including a Talk:
  link at the top of the page
* (bug 27560) Search queries no longer fail in walloon language
* (bug 27679) Broken embedded files with special characters are no longer
  double HTML escaped
* (bug 27700) The upload protection can now also be set for files that do not
  exist.
* (bug 27763) Article::getParserOutput() no longer throws a fatal given when an
  incorrect revision ID is passed.
* Trim the form field for uploading by url to remove extra spaces which could
  cause confusing error messages.
* (bug 27854) Http::isValidURI is way too lax.
* Do not show enotifminoredits preference, if disabled by $wgEnotifMinorEdits.
* AbortLogin returning "ABORTED" now handled.  Also allows message identifier
  for "ABORTED" reason to be returned and displayed to user.
* (bug 28034) uploading file to local wiki when file exists on shared repository
  (commons) gives spurious info in the warning message
* Usernames get lost when selecting different sorts on Special:listfiles
* (bug 14005) editing section 0 of an existing but empty page gives no such
  section error
* (bug 26939) Installer does not set $wgMetaNamespace
* (bug 28166) UploadBase assumes that 'edit' and 'upload' rights are not per
  page restrictions
* Make truncate function automatically consider length of '...' string,
  since length can vary by localization.
* (bug 28242) Make redirects generated by urls containing a local interwiki
  prefix be a 301 instead of a 302.
* (bug 15641) blocked administrators are now prevented from deleting or protecting
  their own talk page; and all blocked users are more comprehensively prevented
  from performing other actions
* (bug 15641) Fixed positioning of permissions checks in Special:Import which
  allowed users without the 'import' permission to import pages if they directly
  submitted the form.
* (bug 27893) Edit-on-doubleclick now applies only on view and purge actions;
  no longer triggers unexpectedly on delete, history etc.

=== API changes in 1.18 ===
* (bug 26339) Throw warning when truncating an overlarge API result
* (bug 14869) Add API module for accessing QueryPage-based special pages
* (bug 14020) API for Special:Unwatchedpages
* (bug 24287) Wrap API Help output at 100 characters
* Add a realname uiprop option to query=userinfo so a user's realname can be
  extracted
* Add a &watchuser option to ApiBlock
* (bug 26541) Generator-ise ApiQueryRecentChanges
* action=parse now correctly returns an error for nonexistent pages
* (bug 25767) Add userrights properties to allusers and users query lists
* (bug 26558) list=allusers auprop=groups does not list groups a user is
  automatically a member of
* (bug 26559) list=allusers auprop=rights does not match
  list=users usprop=rights
* (bug 26560) On allusers if limit < total number of users, last user gets
  duplicate
* (bug 25135) add "normalized" to action=parse
* (bug 26460) Add support for listing category members by category pageid
* (bug 26482) add a imimages param to prop=images
* (bug 26498) allow LinksUpdate with API
* (bug 26485) add a elextlinks param to prop=extlinks
* (bug 26483) add a iwtitles param to prop=iwlinks
* (bug 26484) add a lltitles param to prop=langlinks
* (bug 26480) add a pppageprops param to prop=pageprops
* (bug 26650) Remove $wgAPICacheHelp in favour of $wgAPICacheHelpTimeout
* (bug 24650) Fix API to work with categorylinks changes
* Expose list of skins in meta=siteinfo
* (bug 26548) Add iiurlparam param to query=imageinfo and query=stashimageinfo
* (bug 27205) aiprop=metadata and aiprop=parsedcomment need help text
* Add a amtitle param to meta=allmessages
* (bug 25832) query=allimages now outputs ns/title as well
* (bug 27199) Thumbnail urls can be fetched for old files as well
* (bug 27376) when using ApiBase::PARAM_TYPE => 'integer' without a min or
  max value, api doesn't validate the input is actually an integer
* (bug 27479) API error when using both prop=pageprops and
  prop=info&inprop=displaytitle
* (bug 27554) Update api information text to reflect change in bug 26125
* (bug 27611) list=blocks: Use ipb_by_text instead of join with user table
* (bug 27616) Add userid of blocked user and blocker to list=blocks
* (bug 27688) Simplify queries to list user block information
* (bug 27708) list=users does not have a property to return user id
* (bug 27715) imageinfo didn't respect revdelete
* (bug 27862) Useremail module didn't properly return success on success.
* (bug 27590) prop=imageinfo now allows querying the media type
* (bug 27587) list=filearchive now outputs full title info
* (bug 27018) Added action=filerevert to revert files to an old version
* (bug 27897) list=allusers and list=users list hidden users
* (bug 27717) API's exturlusage module does not respect $wgMiserMode
* (bug 27588) list=filearchive&faprop=sha1 returns empty attribute
* (bug 28010) Passing a non existant user to list=users gives internal error
* (bug 27549) action=query&list=users&usprop=groups doesn't show implicit
  groups if a user doesn't have explicit groups
* (bug 27670) Ordering by timestamp (and usage of start and end) isn't as clear
  in auto generated document, as it is on mw.org
* (bug 27182) API: Add filter by prefix for meta=allmessages
* (bug 27183) API: Add filter by customisation state for meta=allmessages
* (bug 27340) API: Allow listing of "small" categories
* (bug 27342) Add audir param to list=allusers
* (bug 27203) add fato param to list=filearchive
* (bug 27341) Add drto param to list=deletedrevs
* (bug 26630) Add api for Special:ActiveUsers
* (bug 27020) API: Allow title prefix search of logevents (only when not in
  miser mode)
* (bug 26629) add Special:MIMESearch to api
* (bug 27585) add pagecount to list=filearchive
* (bug 28104) Namespace for local pages in interwiki backlinks (iwbacklinks)
  is missing
* (bug 27343) Add parseddescription to list=filearchive
* (bug 27469) label implicit groups in list=allusers&auprop=groups/
  list=users&usprop=groups
* Addition of APIQuerySiteInfoGeneralInfo hook to add extra information to
  the general site info results
* (bug 16288) API: consider making closure status of wikis more clear
  with meta=siteinfo
* (bug 27589) list=allimages&aiprop=archivename is useless
* (bug 27586) Remove duplication of props in ApiQueryStashImageInfo
  by using ApiQueryImageInfo
* (bug 28226) prop=extlinks&eloffset should be an integer
* (bug 28070) Fix watchlist RSS for databases that store timestamps in a 
  real timestamp field.
* API upload errors may now return the parameter that needs to be changed and
  a sessionkey to fix the error.
* (bug 28249) allow dupes in meta=allmessages&amargs
* (bug 28263) cannot import xml with the api, when have not "import" user
  right, but "importupload"

=== Languages updated in 1.18 ===

MediaWiki supports over 330 languages. Many localisations are updated
regularly. Below only new and removed languages are listed, as well as
changes to languages because of Bugzilla reports.

* Liv (liv) (new)

* (bug 17160) Gender specific display text for User namespace
* Link trail added for sl and sh
* (bug 27633) Add characters to linkTrail for Potuguese (pt and pt-br)
* (bug 27426) Set $namespaceGenderAliases for Arabic (ar)
* (bug 27385) Set Polish $namespaceGenderAliases
* (bug 27681) Set $namespaceGenderAliases for Portuguese (pt and pt-br)
* (bug 27785) Fallback language for Kabardian (kbd) is English now.
* (bug 27825) Raw watchlist edit message now uses formatted numbers.
* (bug 28040) Turkish: properly lower case 'I' to 'ı' (dotless i) and
  uppercase 'i' to 'İ' (dotted i)

== Compatibility ==

MediaWiki 1.18 requires PHP 5.2.3. PHP 4 is no longer supported.

MySQL 3.23.x is no longer supported; some older hosts may need to upgrade.
At this time we still recommend 4.0, but 4.1/5.0 will work fine in most cases.


== Upgrading ==

1.18 has several database changes since 1.17, and will not work without schema
updates.

If upgrading from before 1.11, and you are using a wiki as a commons reposito-
ry, 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, some major database
changes are made, and there is a slightly higher chance that things could
break. Don't forget to always back up your database before upgrading!

See the file UPGRADE for more detailed upgrade instructions.


=== Caveats ===

Some output, particularly involving user-supplied inline HTML, may not
produce 100% valid or well-formed XHTML output. Testers are welcome to
set $wgMimeType = "application/xhtml+xml"; to test for remaining problem
cases, but this is not recommended on live sites. (This must be set for
MathML to display properly in Mozilla.)

For notes on 1.17.x and older releases, see HISTORY.


=== Online documentation ===

Documentation for both end-users and site administrators is currently being
built up 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) :

	http://www.mediawiki.org/wiki/Documentation


=== Mailing list ===

A MediaWiki-l mailing list has been set up distinct from the Wikipedia
wikitech-l list:

	http://lists.wikimedia.org/mailman/listinfo/mediawiki-l

A low-traffic announcements-only list is also available:

	http://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
