Unless there's some really huge overriding reason to do this, there's no point poking around in the autoloader's guts to try to outsmart it. Just let it take a few nanoseconds to check its array and don't add yourself a dependency on its implementation details.
If there *is* some really huge overriding reason to complicate the code, please provide some data supporting it.
This isn't PHP 4; the object's fields are changed on the object itself just fine. Unless people are changing the global variable $wgTitle to something different this should be fine. If there is a problem that this fixes, that's probably a problem itself and should be fixed in a cleaner way :D
Behavior seems a bit hard to predict, as far as what's going to go in the header and what in the browser window etc. Pulling it back for further testing and discussion.
This is a global search and replace of NS_IMAGE and NS_IMAGE_TALK with NS_FILE and NS_FILE_TALK respectively in all core files, excluding those already updated in step 1 (r44004).
As a UI thingy, $wgUser will be the only relevant user object here; there's no circumstance in which we might pass some other user object. No reason to pass it to hooks just on the off chance that they might use it, then...
* (bug 8063) Use the content language digit transform table.
* Don't recognise C-style hexadecimal notation as a number, that feature never actually worked.
* Be more forgiving about things that look like numbers but turn out not to be. Sort them stringwise.
* Optimised ts_resortTable by having it calculate the sort keys at the start, and then using a single trivial comparison function. There are potentially many more comparisons than rows. Observed factor of 2 speedup.
* Use RegExp.test() instead of String.match() when a true/false value is desired, as recommended by the Mozilla reference
There was a weird extra "|" at the end of lines in Nostalgia (probably other non-MonoBook skins too). Upon investigation, I found that the special pages dropdown (which immediately followed that separator but on the next line) had a class="inline", which actually did nothing but whose intent was fairly obvious. I removed the presentational class and just styled it using the id, so now the separator actually . . . separates.
This seems to make code much uglier and harder to maintain -- there are a bajillion new calls to "wfMsgExt( 'pipe-separator' , 'escapenoentities' )" which is not trivial or easy to remember. This makes code uglier, harder to read, harder to maintain, and more prone to error.
* Moved SkinTemplate::addStyle() and related stuff to OutputPage so that it can be used non-SkinTemplate skins and avoid duplication with the actual OutputPage::addStyle() (the two functions have the same format).
* Non-SkinTemplate skins now also load their CSS with <link> tags instead of @import.
* Moved SkinTemplate::setupUserCss() to Skin.
* Merged action=raw&gen=(js|css) for SkinTemplate and non-SkinTemplate skins, renamed functions to Skin::generateUserJs() and Skin::generateUserStyleSheet() and dropped a lot of cascading call which is a bit incomprehensible.
* Put all functions into classed so that they can be autoloaded
* Marked all private methods as protected
* Article::getContributors() now returns UserArrayFromResult object
* Avoid code duplication between Skin and SkinTemplate
* Encapsulate namespace class logic into one function
* Split giant huge line of ?:s with legible code :)