replication database setups. User data is now pulled from master
instead of slave in User::loadFromDatabase, ensuring that it is
fresh and accurate when read and then saved back into cache.
This was breaking with the Special:Rename operation which
automatically logs the user in with the new password after changing
it; pulling from slave meant the record was often not the updated
one.
Interfaces to use it can be added shortly.
* Add user_editcount field to provide data for heuristics on account use.
Incremented on edit, with lazy initialization from past revision data.
Can batch-initialize with maintenance/initEditCount.php (not yet friendly
to replication environments, this will do all accounts in one query).
* Allow raw SQL subsections in Database::update() SET portion as well as
for WHERE portion. Handy for increments and such.
creation, so people don't immediately go off to request a second one.
* Add a warning on Special:Confirmemail if a code was already sent and has
not yet expired.
field should be cleared to an unusable state. Login will only be possible
after the password is reset, for instance by e-mail.
* (bug 6394) Invalidate the password set for "by e-mail" account creations
to avoid accidental empty password creations.
in user_newpassword hash field). Instead of just logging in silently and
leaving the previous user_password field in place indefinitely, the user
is now prompted to set a new password.
The password-changing form is at Special:Resetpass; currently it's only
usable for changing from the temporary password during login, but it
could perhaps be generalized, replacing the subform in preferences.
Once the new password is set successfully, the temporary password is wiped
so it cannot be used to login a second time, and the login process
is completed.
* Suppress 'mail new password' button on login form if $wgAuth forbids
changing user passwords; it wouldn't work very well...
* Consolidate password length checks and $wgAuth manipulation into
User::setPassword() to avoid duplicate code in different places
that set passwords.
* User::setPassword() now throws PasswordError exceptions if the password
is illegal or cannot be set via $wgAuth. These can be caught and a human-
readable error message displayed by UI code.
proxies that mangle such characters. Not only is editing from open proxies
generally frowned upon on Wikimedia projects, but more importantly, these
particular proxies tend to break wiki markup in submitted content. These
really are not edits we want to let through.
Yes, this is a hack. We may eventually want to explicitly check for this
condition and provide a more informative response, but even so this would
still remain a useful fallback check just in case.
* removing some unused global declarations.
* removing or commenting out or adding comments for unused local vars.
* Adding one or two local var declarations.
* Declaring $matches array passed to preg_match() / preg_match_all() as array() before using [not required, just have a slight preference for the explicitness].
* remove one or two pass-by-reference function declarations where the value is not modified.
* Adding some braces to if-else blocks.
* In Parser.php, stripstrate is now an object rather than an array as per r17820, so we no longer need ask for a reference to it (as in "$x =& $this->mStripState;"), and in fact it's probably just simpler to get rid of $x altogether.
* Moving some preg regexes from "" quoting to '' quoting to stop static analyzer whinging about bad escape sequences.
... up to "LinksUpdate.php" in the includes/ directory.
* Add an index on (rc_user_text,rc_timestamp) on the recentchanges table. This will make CheckUser.php and the new retroactive autoblock functionality faster.
The globals for preference default overrides was removed in r15823,
when the defaults were moved from Language to User. Moved the settings
out to the global where they arguably belong, restoring compatibility
for site-specific overrides.
Caches for wikis with table prefixes will be lost on upgrade, caches for wikis without table prefixes will be preserved. Custom cache keys in extensions can be migrated at leisure. Extensions which write to core cache keys should be migrated ASAP, as I have done with Special:Makesysop.
* Made lines from initialiseMessages() appear as list items during installation
* Moved the bulk of the localisation data from the Language*.php files to the Messages*.php files. Deleted most of the Languages*.php files.
* Introduced "stub global" framework to provide deferred initialisation of core modules.
* Removed placeholder values for $wgTitle and $wgArticle, these variables will now be null during the initialisation process, until they are set by index.php or another entry point.
* Added DBA cache type, for BDB-style caches.
* Removed custom date format functions, replacing them with a format string in the style of PHP's date(). Used string identifiers instead of integer identifiers, in both the language files and user preferences. Migration should be transparent in most cases.
* Simplified the initialisation API for LoadBalancer objects.
* Removed the broken altencoding feature.
* Moved default user options and toggles from Language to User. Language objects are still able to define default preference overrides and extra user toggles, via a slightly different interface.
* Don't include the date option in the parser cache rendering hash unless $wgUseDynamicDates is enabled.
* Merged LanguageUtf8 with Language. Removed LanguageUtf8.php.
* Removed inclusion of language files from the bottom of Language.php. This is now consistently done from Language::factory().
* Add the name of the executing maintenance script to the debug log. Start the profiler during maintenance scripts.
* Added "serialized" directory, for storing precompiled data in serialized form.