Commit graph

3116 commits

Author SHA1 Message Date
Marius Hoch
e509c84e4e Update the API credits
Put Brad Jorsch (anomie) as lead developer (as he's the one
who does most of the review work etc. these days).

Made Yuri's lead developer time frame end in 2013 (as he
last commited to the api in 2013 AFAIS).

Change-Id: I640ddf251340214b4520d3072e22dfe6b54815fb
2014-05-13 17:17:05 +02:00
addshore
21de2cffb6 Allow use of ApiRollback using pageid instead of title
Change-Id: I9c4e4fa59af0b84416d950f1428da821318f85fc
2014-05-13 12:42:10 +01:00
MaxSem
a2f6b62aa9 Revert "Add API action=watch 'entirewatchlist' param to bulk-clear watchlist."
Unbounded modification = replication lag. And this function is specifically intended for clearing very large watchlists which would easily escalate to pageable lags of several minutes.

This reverts commit 66b07ea381.

Change-Id: Ie34be712884407e671d715e56bda3bff4a7e78f4
2014-05-12 20:18:50 -07:00
Siebrand Mazeland
4b8523198f Make phpcs-strict pass on includes/ (4/~10)
Change-Id: I2767205a7059adfb8fa090a82abd332e518f2590
2014-05-11 19:35:09 +00:00
robin
f930d0c5a2 Always link to diff in watchlist feed
Remove option to link to diffs in watchlist feed instead of the page itself, which was disabled by default.
This makes it consistent with the contributions feed when Change-Id: Ie33e2ba90e7a7566d0e0925220b8fd12b1928513 is merged.
For these changes feeds it makes sense to always link to the actual diffs.

See also bug 10268.

Change-Id: I0917844219be773ce24b4c6bac9b7d0d5a4b922d
2014-05-10 16:01:12 +00:00
robin
5b5fe8d73b Link to diff in contribution feed
Link to the actual differences in the API contributions feed.

Related to bug 10268 (which is for watchlist, which already has this as an option disabled by default).

Change-Id: Ie33e2ba90e7a7566d0e0925220b8fd12b1928513
2014-05-10 14:41:43 +00:00
jenkins-bot
08cf9896e8 Merge "Add API action=watch 'entirewatchlist' param to bulk-clear watchlist." 2014-05-09 20:41:06 +00:00
Brion Vibber
66b07ea381 Add API action=watch 'entirewatchlist' param to bulk-clear watchlist.
Requested by bot runners, who often accumulate huge watchlists
and have trouble resetting them.

Requires POST and a token to prevent accidents or abuse.
Same token as individual or list watching.

Bug: 65058
Change-Id: Id8476a1ba8b2661cf6451cacf3121d5c2d0675cf
2014-05-09 22:19:23 +02:00
jenkins-bot
ac971d9a06 Merge "Add $wgServerName" 2014-05-09 10:18:09 +00:00
Ori Livneh
72c0ce43a8 Add $wgServerName
This partially reverts r73950 which removed $wgServerName on the ground that it
was only used for {{SERVERNAME}}. When it was pointed out that $wgServerName was
also used by several extensions, the response was not to restore the variable, but
to proceed to remove it from extensions as well.

It is a useful variable to have, as the discussion on Id819246a9 makes clear
(see Tim's comment on PS12 and Timo's reply). So let's reintroduce it, and expose
it in mw.config and ApiQuerySiteInfo as well.

Change-Id: I40a6fd427d38c64c628f70a2f407b145443ea204
2014-05-09 11:53:56 +02:00
Antoine Musso
5e3a3412ba API: Expose git branch in siteinfo
For browser testing, I need a reliable way to determine the branch in use
on a target wiki.  One could parse the generator name forged when
querying the siteinfo, but that yields:

 MediaWiki 1.24alpha  instead of master
 MediaWiki 1.24wmf2   instead of wmf/1.24wmf2

I am not really willing to reverse engineer the version to figure out
the branch, instead just expose it over the API.

Bug: 62509
Change-Id: If3db8f480ce0d590522741d40fb8e43b753efb41
2014-05-07 00:25:51 +00:00
Brad Jorsch
986d3ef2c1 API: Check return value from $gitInfo->getHeadCommitDate()
action=query&meta=siteinfo&siprop=extensions calls
$gitInfo->getHeadCommitDate() to attempt to find the commit date, but
does not check whether that function returned false before using the
value. This resulted in displaying the current date for "vcs-date" when
the function failed.

Bug: 64821
Change-Id: Ic39a74abe5160b3b7fbfb7c15323328d6b317560
2014-05-05 10:23:30 -04:00
Brad Jorsch
2036b0d551 Fix API login after I7c957e1e
Prior to change I7c957e1e, API logins were done as if the "keep me
logged in" checkbox was checked. That change altered this for no
apparent reason.

Bug: 64727
Change-Id: I7fcca2a1eabcac3b2c232cd05d9989af85cc3ed0
2014-05-02 10:09:40 -04:00
Bartosz Dziewoński
1abe2525cd ApiParse: Add prop=modules
action=parse&prop=modules now provides the ResourceLoader modules used
on the page (included in the ParserOutput object). This is intended to
be used by the live preview functionality.

Bug: 24134
Change-Id: Ib5032e4eeaf6bb97dac965c580a5107437c7bbd4
2014-04-29 22:12:12 +00:00
jenkins-bot
96764fbc9a Merge "API: Warn when unsupported PHP array syntax is used" 2014-04-29 03:30:10 +00:00
Thiemo Mättig
e292bc972d Finish removing boolean return values from JobQueue code
This is a follow-up for patch
Ia706ac0122a7dd7f418e2dc2d3bd36e9a0252c25.

Change-Id: I19fe58a939706d3f7594d937e0bcad6d97c52a50
2014-04-28 22:21:58 +02:00
Siebrand Mazeland
f994817f6b Pass phpcs-strict on various files in includes/
These files have all had treatment before, and these occurrences have either
been missed or have been introduced after.

Change-Id: I06cdab4616b5bff47c85152df28f18c861730a23
2014-04-24 21:50:01 +02:00
jenkins-bot
5775d5e5c1 Merge "Make users API cache mode public if blockinfo is not queried" 2014-04-23 13:49:38 +00:00
umherirrender
23bb3d1cb4 Follow-Ups to "Fixed some @params documentation"
Fix of inline comments of the following patch sets:
Follow-Up: I0056b4a8df243cfc0c5f25378de48f7a35170aca
Follow-Up: I7f605aa9e117b5fd80d9b1440864fe526d2b14a5
Follow-Up: I3622f216a2ca8ac1b5e51892be9f98665f65bc36
Follow-Up: I6627ba0e76d3577c40bf2473e0f78a5ad7368634
Follow-Up: Id75b5ecf648ca50f955b3bde3307c82c4366b102
Follow-Up: I4ca5231119f33039d91da3b57a41cd40719a576b

Change-Id: Id9bbe84b2820e9db44af5783411e955f55f643d4
2014-04-23 13:39:49 +02:00
Gergő Tisza
34bd462a77 Make users API cache mode public if blockinfo is not queried
Blockinfo is currently the only piece of information
(apart from tokens) in the users API which might change
depending on the permissions of the user making the
query. There is no point in making the API request
uncacheable if blockinfo is not requested.

Change-Id: I533f622b7d9077589f148fbb6de98b15ef1c212a
2014-04-22 21:15:00 +00:00
Kunal Mehta
487e9dc599 API: Don't rollback changes if the exception was a UsageException
In I1b7396ceb, we were trying to log failures to Special:Log, but
since $this->dieUsage throws an exception, the log entry insertion
was being rolled back.

This is similar to I36cd645d which was for index.php calls.

Change-Id: I136ba66d2f939fcdd0c9326e04d686a30449bf4c
Follows-Up: I8f1da51187b281fe4afc0d5a0c49f5caf3612e92
2014-04-22 09:56:40 -07:00
umherirrender
e63299d208 Fixed some @params documentation (includes/api)
Swapped some "$var type" to "type $var" or added missing types
before the $var. Changed some other types to match the more common
spelling. Makes beginning of some text in captial.
Also added some missing @param.

Change-Id: I758fa4ad80ac95e2ddd3770bcb9b7d2e57ec34ea
2014-04-18 13:55:36 +00:00
Daniel Friesen
c7e18ffb14 Make API action=rsd work on private wikis
Tweak ApiRsd's settings so that it doesn't require read permissions to function.

Bug: 64085
Change-Id: I15288458ec3b0b583eece930d323f80314bb6ee3
2014-04-18 13:31:36 +00:00
Brad Jorsch
4c6d01f824 API: Warn when unsupported PHP array syntax is used
The API takes multi-valued parameters as key=value1|value2|value3, not
key[]=value1&key[]=value2&key[]=value3, in part because the latter is
overly verbose when the API encourages use of large arrays.

But when someone, not knowing this, does accidentally use the verbose
syntax, they should get a warning instead of having the parameter be
silently ignored.

Bug: 64057
Change-Id: I32a16efb8028d7f6d120d20dfc886f08ed9ec97d
2014-04-17 10:24:30 -04:00
tonythomas01
74756a2409 Removed 'Remember my login' preference
Removed 'Remember my login' from Preferences, as it was unwanted. It adds
to the complexity of the user preferences

Bug: 52342
Co-Author: Tyler Romeo <tylerromeo@gmail.com>
Change-Id: I7c957e1e1aaecf47f7c47bc063b5d3b364644afc
2014-04-16 12:49:44 +05:30
Brian Wolff
b954a12809 Cache RecentChanges Atom feed in varnish for 15 seconds
Prior to fc20c30d20, the feed was cached for 10 seconds. That
change accidentally removed varnish caching. Re-add the caching,
and upping to 15 seconds for good measure (15 second delay on the RSS
feed shouldn't matter, people generally read those asynchronously
anyhow. I was thinking of maybe even uping to 30 seconds). Users
can still manually set an smaxage parameter via the url if they
don't like the default cache time.

This assumes nothing private (e.g. per user) is ever on the RSS
feed. Reading through the ChangesList code this appears to be
the case, as everyone is getting the feed from a shared
memcache entry.

Bug: 63249
Change-Id: I268d0a53067738ba96bee74c593358b0b28cc083
2014-04-14 13:51:03 +01:00
jenkins-bot
83a1cf573f Merge "Rename Skin::getUsableSkins() to Skin::getAllowedSkins()" 2014-04-13 00:30:53 +00:00
Brad Jorsch
d9534a5d56 API: Make more continuations unique
API queries must be completely ordered for proper behavior; otherwise
you may get into a situation where a query returns the same continuation
value that was provided. Various modules that have been using timestamps
in/as their continuation parameter can easily run into this problem.

Normally we'd have to add additional fields to the relevant indexes to
be able to make this work without having filesorting queries (which
MySQL really doesn't do well, it fetches all matching rows and only
applies the limit after[1]). But InnoDB has a "feature" where it
effectively appends the table's primary key to all other indexes,[2]
which makes these queries be properly indexed in that situation.
Apparently we're ok with this, since Icc43b62f was merged depending on
this feature.

Also, this change fixes some MySQLisms and other oddities done to
ApiQueryRecentChanges in Icc43b62f.

 [1]: https://dev.mysql.com/doc/refman/5.5/en/limit-optimization.html
 [2]: https://dev.mysql.com/doc/refman/5.5/en/innodb-table-and-index.html

Bug: 24782
Change-Id: I4c9f8c0c2bfd831755d4fa20a18f93fef1effd28
2014-04-11 10:50:16 -04:00
Bartosz Dziewoński
e745f30e4e ApiQueryDeletedrevs: Fix getDescription() docs
Strings were incorrectly quoted.

Change-Id: I5b7aa4709a9bfde36b4e81ba8ea3e15efde003b1
2014-04-07 16:10:55 +02:00
umherirrender
23fab68274 Fix spacing after @param and friends in comments
Searched for:
\@(param|return|throws|since|deprecated|access|todo|var)[ \t]{2,}

Change-Id: Icce22ba9fe0635455691ca58d9872d618151f346
2014-04-05 20:02:29 +00:00
jenkins-bot
f1b45cbed4 Merge "New API module, list=prefixsearch" 2014-04-03 23:07:58 +00:00
jenkins-bot
a081770500 Merge "ApiFeedRecentChanges: Validate param target" 2014-04-03 14:59:24 +00:00
Niklas Laxström
25fdd5de7d ApiFeedRecentChanges: Validate param target
Change-Id: I6933177d47c25d48b9b55d479afa4dedcc64299d
2014-04-03 14:15:49 +00:00
Max Semenik
af6d9aba6d New API module, list=prefixsearch
It's pretty much like action=opensearch but can be used as a generator
which can be handy when you need to retrieve both the list of pages and
some information about them.

Change-Id: Iaffe30a0f7402e1316c4885a805692a34bbe1a6a
2014-04-02 19:14:07 +04:00
jenkins-bot
42db755b21 Merge "API: Allow for format modules that cannot handle errors" 2014-03-31 17:48:47 +00:00
jenkins-bot
57c4cd7ce5 Merge "Improve handling of uncommitted DB txns with "uncaught" exceptions" 2014-03-31 16:30:33 +00:00
Alexandre Emsenhuber
449ee32451 Add missing line breaks to wfDebug() calls
Also removed true as second parameter to it from CloneDatabase.php
since it is the default value of that parameter.

Change-Id: I727ebae2bd4df0e26019985ce8c7ce73381c5642
2014-03-29 11:52:07 +01:00
Brad Jorsch
dc7d342d93 Improve handling of uncommitted DB txns with "uncaught" exceptions
One of the causes (if not the cause) of bug 56269 is if something
manages to throw an exception that makes it to MediaWiki::run's
last-resort exception catcher while having an open database transaction:
the transaction never gets committed or rolled back, so it gets
implicitly rolled back and a warning is raised.

The API has the opposite problem in bug 63145: it catches the exception
but then does the normal DB shutdown which *commits* the transaction.
This is certainly the Wrong Thing to do.

Ideally, neither of these would ever happen because any code using
transactions would have its own try-catch that would catch any
exception, rollback the transaction, and then rethrow the exception. But
it happens anyway, so let's have both of these last-resort exception
handlers do the rollback, and also log the exception so the throwing
code has a better chance of being properly fixed.

Bug: 56269
Bug: 63145
Change-Id: I8f1da51187b281fe4afc0d5a0c49f5caf3612e92
2014-03-27 12:46:07 -04:00
Brad Jorsch
d0830af6ba API: Allow for format modules that cannot handle errors
ApiFormatFeedWrapper, for example, has nothing particularly useful to do
when given an API error to print. So allow for punting errors to the
default formatter instead.

Bug: 63150
Change-Id: Ifc034d4c7861905e382c42dc22585f0cd2beaf3f
2014-03-27 11:11:17 -04:00
Chad Horohoe
7e8c48ac3d Remove "include redirects" option from search
Always include redirects. Search results are worse without them
and MWSearch has never respected this option anyway.

Change-Id: I0ebe321a3b14e7960aa98e3225dc5a19ba916e7d
2014-03-26 09:28:26 -07:00
jenkins-bot
b27385b95a Merge "Fix possible error list of action=revisiondelete" 2014-03-21 10:39:33 +00:00
umherirrender
38770513fa Exclude prop=uploadwarning from allimages and stashimageinfo
Was added with I4a0af8986f924cd127a73828e72da6998f28536c,
but looks only useful on prop=imageinfo

Change-Id: I59c5f11f83be7e59f317686ab7fa16ad6fda008b
2014-03-21 06:14:50 +00:00
umherirrender
ac55607876 Fix possible error list of action=revisiondelete
Bug: 62853
Change-Id: I0efec9e8a6cf761def7673011bcc22a9f11111a9
2014-03-20 21:10:50 +00:00
Aaron Schulz
96528b1f88 Avoid header notice log spam from RunJobs API
* Moved ApiRunJobs to a special page instead of going through
  ApiMain and having to fight the logic there. As a separate
  internal API, this does not show up on the API help page and
  is no longer effected by $wgEnableAPI.

bug: 62233
Change-Id: I1db6f526d02e130a66ee03289858a734d89e6c00
2014-03-18 22:30:50 +00:00
Chad Horohoe
f508561f7b Moved $wgQueryPages stuff out of the global scope and into a function
Change-Id: Ica034bdad89133bfce0b4238d62ed00865936644
2014-03-18 08:36:32 -07:00
jenkins-bot
26924b8726 Merge "Adjust magic bolding in api help to only match lines inside *" 2014-03-13 19:00:54 +00:00
umherirrender
cc10e13612 Adjust magic bolding in api help to only match lines inside *
list=logevents&leaction has param values with *, which gets bold, when
there was two of them in the same line.

Bug: 61834
Change-Id: Idace9afd4f3a2dce9be539b209a02fa318df8f45
2014-03-13 18:55:40 +01:00
Brad Jorsch
1d79bd6036 API: Handle exceptions from ApiBeforeMain hook in a user-friendly manner
The immediate impetus behind this change is this series of events:

1. CirrusSearch hooks ApiBeforeMain to handle some setup that requires
   the User object.
2. So User is loaded from the session.
3. OAuth checks the headers as part of loading User.
4. OAuth sees that the headers are invalid, and since it was called from
   the API it throws a UsageException, expecting the API to catch it and
   return an appropriate response to the client.
5. But nothing does so, leading to an unhelpful "Internal Error" page
   being returned to the client.

We can do better than that.

Bug: 62312
Change-Id: Ib5735661eec6ebe57eaa69c67b399e703cc90fc4
2014-03-12 19:26:20 +00:00
Bartosz Dziewoński
fc20c30d20 ChangesListSpecialPage: Separate all functionality for generating feeds
I should have done it at the beginning instead of trying to
extract it from recent changes.

Same for SpecialRecentChanges and SpecialRecentChangesLinked
(subclasses).

Created a new API module for it: ApiFeedRecentChanges.
It's somewhat un-API-like and hackish, but all feed modules are.

Old URLs redirect to new ones, so this should be fully
backwards-compatible assuming sane feed reader clients.

Change-Id: I06ee0f01d896bc66545a1800b24693ce7524e433
2014-03-12 12:31:41 +01:00
jenkins-bot
968f3cd2d8 Merge "Let wildcard actions work in list=logevents&leaction=" 2014-03-10 15:12:11 +00:00