Simplify DatabaseBase::tableName()

- Removed isset() check for configuration setting since they are always defined
- Removed triple check whether a database is already defined by putting everything in the same place
- Simplify the construction of the result string

Change-Id: Iaaf68149f16b1d38a038db1b41909464f29e2289
(bug 42030) Include original URL params in variant links

Change-Id: Iaedb56445b97ee09bd7fa08c9f23cd147757dee4
Further tweaks to pipe trick documentation (follow-up Iaf365e31)

- call them pipe tricks (plural) as there's more than one
- mention double-width comma as well
- use one tab character for alignment due to double-width chars
- document reverse pipe trick

Change-Id: I27a1d04362eb3988fc1318fa1f73f69877019439
(bug 41330) Default to the current year in the history page filter form

Change-Id: Ia510f0a24248f95c839ab88062cee1c0c0b9b6c1
Cleanup to ImagePage::openShowImage()

- Removed useless $showLink variable and related check since the variable is always defined to true
- Moved $linktext up so that there's no need to use a temporary variable to modify it
- Moved $longDesc down where it's used
- Change "else { if ( ... ) { } }" to elseif for better clarity

Change-Id: I65dcbb76c7f0a0441a6420e76affe797a3dc9c45
Force case-sensitivity on the LIKE operator, to ensure similar behaviour
between MySQL and SQLite

Change-Id: Idf2d90fe3df07364657abb6070f6eac59add1306
Fix ORMRow::insert() on PostgreSQL.

When inserting a new row, ORMRow explicitly passed NULL as the value for
the id field which in MySQL means "use next value in sequence", but in
PostgreSQL means "use NULL".  With this change, for id fields no value
is passed if it isn't set to non-null.  This fixes bug #43475.

This effectively bars the possibility to set the id field of an existing
row to NULL, but the current code already disallows any changes in id
fields.

Change-Id: I29d86fa6fc38ff1852821658e4927b4d7d4a72b6
(bug 35993) API gettoken parameter is deprecated (release notes complement)

Added in HISTORY (section API changes):
* (bug 35993) Deprecated gettoken parameter - support will be removed in 1.22.

This is a follow-up for change I369ddc74.

Change-Id: Ie78e1061353725793dbba2876037fb32cb9035a8
(bug 34211) Initial focus on Special:Block is nowhere

Change-Id: I64c5b5a0e52b0207bab1715dfac3a2355ef1bf50
Followup I888c616e: one more string to localize.

Change-Id: I330c7a1af055a4b89843349f5b05e9aa4fff10d0
Followup I888c616e: Keep IRC line format unchanged.

Change-Id: Ifeec00fc98c7912b6e16b6f07d1fdc26ab4e4fb5
(bug 22457) More natural flow for the "By e-mail" feature

This feature is on Special:Userlogin/signup to allow a random new
password to be sent to expected account owner on assisted signup.

It uses JavaScript to hide the password & retype password fields when a
logged-in user creates an account (for someone else) and checks the by
e-mail feature.

Change-Id: I7bf57eef64fea19a8237f997019e0b2bfdf401b3
(Bug 27559) Preserve tab selection after submit in [[Special:Preferences]]

Firstly it was planned to be implemented via cookies, but they behave terribly.
So, for now it's a HTML5-only solution (via sessionStorage).

Change-Id: I7b7f14a6dca580a4498bda1ada48d1a3ba7c69c3
Allow API results to wrap long lines

- Bug 260 provides potentally relevant discussion
  (also eventually settled in white-space:pre-wrap)
- Wrapping isn't applied in help pages, since they rely
  on the monospaced font for layout purposes.
- Rename $isError to the more exact $isHelp
- Update documentation for ApiFormatBase::initPrinter()
- Bonus: header w/ info about output formats won't show
  for action=help anymore (irrelevant)

Change-Id: Id9cdf102e17b4c3eaf4b10f3e3f5e97233911b97
(bug 17808) (bug 21167) use real links for search suggestions

Use real links for search suggestions. This allows the viewer to, for
example, open the search results in a new tab or right-click them
to copy link's address.

We hook up the result.render callback and wrap the entire container
element (.suggestions-results <div>) in an <a>. This is permitted in HTML5
and appears to work even on IE 6. (It has some quirks related to e.g.
backgrounds handling, but thankfully none of them apply here, as we just
need it to be properly clickable - see http://jsbin.com/ejurub/2 for
a minimal test.)

We do the same for the special.render callback, although it has to be
handled slightly differently due to inconsistencies in $.suggestions that
would require a rewrite to fix.

We have to do some pretty ugly mangling to determine the links' hrefs,
but well, that's life.

This required some changes to $.suggestions:
* pass the necessary data to the render callback
* do not interfere with clicks with a mouse button other than left
  or with modifier keys active, to allow for the standard link behavior
  described above
* adjusting the width of suggestions container and applying autoellipsis
  should be done regardless of the render callback being used or not
* add some flexibility to $.suggestions.highlight, so it doesn't break
  down when DOM is modified

Also did some good-to-have changes to $.suggestions:
* detect suggestions elements in various places by their classes, not by
  them being <div>s

Change-Id: I87940ca86a2b3776969cbcee8cdf93e3c66b0cd9
Add pp_propname_page index to page_props

This adds an index to page_props to support looking up pages using a
particular property.

Change-Id: Iea778eb783e1d4a46fb0549dfd84915477cac5df
Avoid raw SQL queries in Maintenance::purgeRedundantText()

Instead use DatabaseBase::select() and DatabaseBase::delete().

Change-Id: I03d007e21c6be5aaa92830807de25990aef2ba03
Design improvements to sites code

Change-Id: I08ffa6a97093abbe85169f664b97498c5f39bf8e
(bug 44248) Minor tweak to MediaWiki:Readonlywarning

Change-Id: Id0bb7040988ba165c7a30f34137f1e894727de20
[JobQueue] Added a JobQueueRedis class.

* The Job class now includes an extra "metadata" field now for usage
  by the queue classes. This is useful for stores that lack IDs.
* A RedisConnectionPool class was added for reusability.

Change-Id: Ie72536240e27fe1caf11096cdc4c85dfa821d181