Most of the time people wouldn't need this - this hook is mostly
used to inject a custom Article subclass for a specific
namespace to do fancy things, but lets give users the most
flexibility.
Asked for by leaves on irc.
Change-Id: I3386ff4abe0e5b3eb783604ae222b7703428db44
With this fix and relevant fix for ConfirmEdit in, an API account creation
attempt that fails the captcha check will return a much cleaner error such as:
{
'error': {
'code': 'captcha-createaccount-fail',
'info': 'Incorrect or missing CAPTCHA.'
}
}
Abort hooks that use the old interface and send a text message will now
be reported with the generic 'createaccount-hook-abort' message code, with the
string passed back intact.
Previously, the returned result would list the contents of the message
_as_ the error code, making it hard for a client to determine the error.
'AbortNewAccount' hook clients can add a '&$status=null' function paramater
on their signature, and along with the back-compat message parameter
you can set something like:
$msg = wfMessage( 'captcha-createaccount-fail' )->text(); // back-compat
$status = Status::newFatal( 'captcha-createaccount-fail' ); // new
This is done for ConfirmEdit in If9cc08e
Bug: 60008
Change-Id: I6ae34c00d1051d34363b6d654424be17dcb1ea30
New hooks:
* AddNewAccountApiForm
* AddNewAccountApiResult
These hooks are used in ConfirmEdit here: Id628def
Sample API client: https://github.com/brion/api-createaccount
Bug: 46072
Change-Id: If5b7dab80ac85dbfa0f7a54a445356783df5e914
The SpecialWatchlistQuery hook now gets a FormOptions object as the last
parameter instead of an array (which is not bad as bad as it sounds, since
the class implements ArrayAccess).
Change-Id: Iec4aab870b6e9aa98d2b118010e78e25b1dbe437
To generate a user-dependent cache key it makes sense to pass
a reference to the user object, since $wgUser is deprecated.
Change-Id: I32a1df52912292230852c31d69968eeb312a4a97
The current id number is useless for IP addresses, so it now
passes a proper User object.
For context, the SpecialPage instance is also provided.
Change-Id: Ie196611d504b3969bcdfb5c589716af2f3c54e14
When importing, we need to check that the kind of content we are about to
import is actually allowed in the specified location on the local wiki.
This change does two things:
* Introduce the ContentModelCanBeUsedOn hook which provides control over
which kind of content can be used where.
* Introduce a check against ContentHandler::canBeUsedOn in the importer,
along with an appropriate error message.
Change-Id: Ia2ff0b0474f4727c9ebbba3c0a2a111495055f61
$wgExtensionFunctions is called before the RequestContext is really
available (i.e. getTitle() is null, accessing the User object may fail
because other extensions' UserLoadFromSession hooks don't expect to be
called that early, etc). The index.php code path has BeforeInitialize to
take action after RequestContext is available but before much else
happens, but the API doesn't (yet) have anything similar.
Bug: 58380
Change-Id: I0a167faaa4166da381194c53373d82e038848924
docs/README: Updated links, got rid of 2008 date at top of file
docs/maintenance.txt: Updated link
extensions/README: Some cleanup, added link to new git.wikimedia.org
includes/DefaultSettings.php: SVN -> Git for udpprofile
includes/profiler/ProfilerSimpleUDP.php: ditto
languages/MessagesRo.php: removed link to mime.types on SVN from the
mimesearch-summary message. This file seems to have been deleted from the
modern-day Git repository
maintenance/postgres/mediawiki_mysql2postgres.pl: removed SVN magic words
That takes care of most of the remaining references to SVN etc.
Bug: 38714
Change-Id: I261921df4b4c0545658d6d38c5f3c1f9dfa63ad1
This reverts commit 5e1efc3144.
This sort of thing needs to be discussed. Please do not self-approve changes like this.
Change-Id: I9eb9ea315d90584b7fe95db43a6759884f9506b5
Allows extensions to modify the list at SpecialLog::$typeOnUser
This is useful for extensions like Thanks where the target is a
userpage.
Change-Id: I77e1e59d7e3666802d0eeb0c48a0ec211dba0a2a
The point is to allow to use the blacklist of translatewiki.net,
so the format of $checkBlacklist got changed to be compatible with it.
Change-Id: I5eb328c4bdbb0b21962b89acbe12f46ebb4d9d70
Change adds a hook that serves exactly the same purpose as
AbortNewAccount. Also change was merged prematurely and is
missing message documentation as well as having some minor
code flow issues.
This reverts commit cc1006b77c.
Change-Id: I8656aa1a99c84778fd85ec7da9d6ce23bd6cf9b9
It's likely that an extension might want to reformat the value (e.g. by
passing it through Language::formatSize()), but otherwise use the
default behavior for the key. Make $value a reference parameter so they
don't have to reimplement all the logic for laying out the row.
Change-Id: I7799616a602d90e1b8d3f0ece35811ca387bade7
This has been deprecated since 1.18, throwing warnings for over a
year and a half now, and nothing uses it anywhere in core or deployed
extensions.
No extensions in SVN seem to have this anymore (we must've cleaned
up well), and the only affected extensions in Git are:
- BlueSpiceExtensions
- DynamicPageList (commented, so shouldn't be a worry)
- SemanticPageMaker
- TwitterCards
If you're the author of one of these extensions or are feeling like
cleaning up ancient code, please get them fixed.
Change-Id: I8f3a54c14be4b38a8b917e32ba3a832e0a7ca116
Part of the point of this, is to add a hook to allow extensions to add
their own metadata (I intend to create a companion extension to parse
Commons description pages - I5e6bc45f9751)
It's hoped that this would provide a simple system to get file metadata,
and would be able to return information on any wiki (even without any
extensions installed to provide additional information). So it could
fallback to exif data, if there's no better source of information for
the file available. It's also meant to be done in such a way that, in
the future, when Wikibase is deployed on Commons, it could be integrated
without too much fuss.
marktraceur changed this patch to be a little less heavy-handed: it will
now return unformatted data by default from the API, but there's also a
method for formatting that data in the way that bawolff originally
intended. I'm still trying to figure out if there's much use in that
method, but for now it's not particularly useful.
Change-Id: I77303d8e535fc1c42e14cfb853814e5c434a81ec
== Prelude ==
wl_notificationtimestamp controls sending the user e-mail
notifications about changes to pages, as well as showing the "updated
since last visit" markers on history pages, recent changes and
watchlist.
== The bug ==
Previously, on every view of a page, the notification timestamp was
cleared, regardless of whether the user as actually viewing the latest
revision. When viewing a diff, however, the timestamp was cleared only
if one of the revisions being compared was the latest one of its page.
The same behavior applied to talk page message indicators (which are
actually stored sepately to cater to anonymous users).
This was inconsistent and surprising when one was attempting to, say,
go through the 50 new posts to a discussion page in a peacemeal
fashion.
== The fix ==
If the revision being viewed is the latest (or can't be determined),
the timestamp is cleared as previously, as this is necessary to
reenable e-mail notifications for given user and page.
If the revision isn't the latest, the timestamp is updated to
revision's timestamp plus one second. This uses up to two simple
(selectField) indexed queries per page view, only fired when we
do not already know we're looking at the latest version.
Talk page indicator is updated to point at the next revision after the
one being viewed, or cleared if viewing the latest revision. The
UserClearNewTalkNotification hook gained $oldid as the second argument
(a backwards-compatible change). In Skin, we no longer ignore the
indicator being present if we're viewing the talk page, as it might
still be valid.
== The bonus ==
Comments and formatting was updated in a few places, including
tables.sql and Wiki.php.
The following functions gained a second, optional $oldid parameter
(holy indirection, Batman!):
* WikiPage#doViewUpdates()
* User#clearNotification()
* WatchedItem#resetNotificationTimestamp()
DifferenceEngine gained a public method mapDiffPrevNext() used
to parse the ids from URL parameters like oldid=12345&diff=prev,
factored out of loadRevisionIds(). A bug where the NewDifferenceEngine
hook would not be called in some cases, dating back to its
introduction in r45518, was fixed in the process.
Bug: 41759
Change-Id: I4144ba1987b8d7a7e8b24f4f067eedac2ae44459
Within Special:RecentChanges the default non-extended query contains
( rc_this_oldid=page_latest OR rc_type=3 )
Wikidata has previously used the SpecialWatchlistQuery hook to look for
this exact string and change rc_type=3 to rc_type IN (3,5). Flow is another
type of change that doesn't have a matching row in revisions to match
page_latest for and needs to be added to this query.
This patch adds a new hook, SpecialWatchlistGetNonRevisionTypes, which allows
different extensions to add to a list of values for rc_type (or rc_source once
85787 is merged). This will allow multiple extensions to affect the resulting
query without them breaking eachother.
Change-Id: Id6916fe999c0faa38de878b7b5687e7ea00901bd
Per the bug report, the 'Debug' hook was triggering an infinite loop when
wgDebugFunctionEntry is enabled. The Debug hook is used if an extension wants
to stop a debug message from being sent out. Ideally the wfDebug and related
functions should be as low-level and avoid calling other code as much as
possible to avoid situations like this.
Bug: 55818
Change-Id: I679782489b683503fc624cfea3c7ad72a989b005
Allows extensions to modify the output of
action=query&meta=siteinfo&siprop=statstics
Accompanies the SpecialStatsAddExtra hook for Special:Statistics
Change-Id: I712748077a0ac2fb729bfe3b6616ac4981cb754e