Commit graph

397 commits

Author SHA1 Message Date
umherirrender
f0d2926c03 Remove ApiBase::createContext() (deprecated since 1.19)
Change-Id: Iee20e1c5e5b83b5b43303bde7e524b95b74eb62b
2014-06-25 20:35:56 +02:00
Reedy
e48ecbc524 Switch API to use Config classes
Only done where globals are config (so not $wgParser, $wgContLang etc)

Change-Id: Ic39cdd858cfb9096a2bc09618f97e64270d76f13
2014-06-15 23:56:38 +01:00
Brad Jorsch
68ce4da189 Use type hinting in ApiBase
For ideological reasons this was not included in Ie6bf1915.

Change-Id: I5f7119665746eb6fcf86c3a403caa2dcb67904eb
2014-06-12 16:54:41 +00:00
umherirrender
690d1f464b Add error 'pagecannotexist' to ApiBase::getTitleOrPageIdErrorMessage
Function can die with 'pagecannotexist' since
I2123e3a3034cb815cf35f66f2fbf2b94fb27069f

Change-Id: I10c496da147c1bf6ceb6d69b19170a0e62f1318c
2014-06-06 05:14:22 +00:00
umherirrender
fb768db188 Expand doc of ApiBase::require*Parameter functions
Add a hint to the getError function which should be called in the
getPossibleErrors() function.
Also do this for getTitleOrPageId.

Change-Id: I601feb8a5b8699ce4d81814aa3cd127552a525ac
2014-05-20 19:35:57 +00:00
Brad Jorsch
b9fd30a4e4 API: Fix documentation for ApiBase::require*OneParameter
The existing doc blocks for all three of these functions is entirely
wrong.
* ApiBase::requireOnlyOneParameter
* ApiBase::requireMaxOneParameter
* ApiBase::requireAtLeastOneParameter

Change-Id: Id0dd86be3cbfa813a43f918c7d780c7ee2afc09e
2014-05-13 11:32:35 -04: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
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
Siebrand Mazeland
f077c4b1d6 Update formatting
Change-Id: I18aff576262479c9bb1c56eb8e1d1aaae200e4b1
2014-02-06 09:27:05 +01:00
jenkins-bot
c2c82a057e Merge "Support ApiPageSet in ApiWatch" 2014-02-04 19:52:05 +00:00
eranroz
75e28dc018 Support ApiPageSet in ApiWatch
Add support for ApiPageSet capabilities in ApiWatch to support batch
operation on titles, pageids etc. The old 'title' parameter (for a
single page) is still supported to keep backwards compatibility.

Moved a function from ApiPurge to ApiPageSet: getInvalidTitlesAndRevisions() gathers
warnings about invalid/missing titles/ids in the requested page set.

Split from If993f6e8.

Change-Id: I820dcb64d469616b10741df013911197cc5bde29
2014-02-04 14:44:22 -05:00
Tyler Anthony Romeo
c96ddf2948 Code style fixes to ApiBase::requireAtLeastOneParameter
Fixes to patch that introduced ApiBase::requireAtLeastOneParameter.
Includes line breaks, code formatting, and documentation fixes.

Change-Id: I1a2faebf7cc9a2126def66d8a4ce64dbfa84059b
Follows-Up: Iae6649ed503fdbf14 (5e7a9c6f8e)
2014-01-24 10:32:36 -08:00
Tyler Anthony Romeo
5e7a9c6f8e Create ApiBase::requireAtLeastOneParameter helper
Added new ApiBase::requireAtLeastOneParameter() helper method for modules
that need one or more of a combination of parameters. The associated help
message function has also been added.

Change-Id: Iae6649ed503fdbf14b313d0be1a82f3dca8d7162
2014-01-23 21:49:49 +00:00
Siebrand Mazeland
52ba6500df Remove classes and functions deprecated in MediaWiki 1.17
Removed classes:
- WikiError (deprecated in 1.17)
- WikiXmlError (deprecated in 1.17)
- WikiErrorMsg (deprecated in 1.17)

Removed methods:
- ApiBase::getValidNamespaces() (deprecated in 1.17)
- ApiMain::setCachePrivate() (deprecated in 1.17)
- ApiMain::setVaryCookie (deprecated in 1.17)
- CategoryViewer::addSubcategory() (deprecated in 1.17)
- WebRequest::getFileSize() (deprecated in 1.17)
- WebRequest::isPathInfoBad() (deprecated in 1.17)

Change-Id: Id715c2391742c136d09f5369f88d67e798842af7
2014-01-05 18:54:27 +01:00
Siebrand Mazeland
ca209473d1 Remove unneeded uses of else{} in api/
Fixed a little documentation issue, removed a line of unreachable code
and fixed up two formatting issues in the process.

Change-Id: If29391ee1a0daf19973437f36c3216b8716debd0
2013-11-18 21:34:43 +01:00
jenkins-bot
d322c8aa08 Merge "Address CodeSniffer comments in ApiBase.php" 2013-11-18 18:22:25 +00:00
Siebrand Mazeland
4c3bc3f865 Add/update/remove incomplete/incorrect documentation
Change-Id: I3c2c7f61d9a579ad794ce7b564ccc8a7cfb9b6fc
2013-11-17 21:53:34 +00:00
Siebrand Mazeland
6807426b2e Address CodeSniffer comments in ApiBase.php
Change-Id: Ifd8567dcccf51a16f0dc7459a3bbe9e21e928d91
2013-11-17 16:38:44 +01:00
Siebrand Mazeland
fe05f85a62 Update formatting on API classes
Change-Id: Ifd18a8de1d2580b723a5b91e8d202818fd97795a
2013-11-14 17:03:20 +00:00
Brad Jorsch
4101ab54f2 Cleanup watchlist preference usage
In general, the web UI does a check of the watchlist preferences along
the lines of "watch if watchdefault, or if watchcreations and the title
doesn't exist". So there's no way to have it watch edits but not
creations. Make the API behavior match this.

For API action=protect&watchlist=preferences, we want to use
'watchdefault' always to match the behavior of the web UI.

For Special:Upload, the code is all there to do a "watch if
watchdefault, or if watchcreations and the file doesn't exist". But for
some reason that code wasn't being used in favor of just using
watchcreations all the time. Fix that, too. And have the API use that
instead of checking if the file page exists.

Bug: 56766
Change-Id: I57fc46d9a97b3ea2169173727db842d0d7ecf81d
2013-11-08 20:12:55 +00:00
Kevin Israel
725df97b1b Deprecate wfDebugDieBacktrace
Change-Id: I12336983e29524a450fc61ed9df4d840066be9b6
2013-09-27 19:57:41 -04:00
nischayn22
50ca5a7d17 hook to intercept upload_by_url
This is planned to be used for intercepting by UW for Flickr blacklisting.

Bug: 42307
Change-Id: Ia3daaeba1ce5e69e751ffc2ae5afd5e449cf4aa7
2013-07-24 19:11:33 +02:00
Brad Jorsch
18062eb3b0 Add user rights 'viewmywatchlist', 'editmywatchlist'
These are needed for OAuth grants.

Note that, even if 'editmywatchlist' is not granted, various actions
will still allow for adding but not removing of pages.

Change-Id: Ie33446a228dd6ed0114730935c1bf65667f5ce01
2013-06-26 10:20:40 -04:00
Brad Jorsch
c94454687f Return errors from WatchAction
Currently, WatchAction::doWatch and WatchAction::doUnwatch return true
always. Let's have them return a status object instead.

This also cleans up the handling of Status objects in some of the API
modules.

Change-Id: I9dd9f0fd499c37f29fa12bcdb6142238a1f11e4d
2013-06-20 15:51:05 -04:00
Marius Hoch
4650adb9b2 Only show notoken as possible API error once
Currently notoken is being listed as possible
API error twice if it's explicitly set as
required parameter and needsToken() returns
true.

See:
https://www.wikidata.org/w/api.php?action=paraminfo&modules=edit

Change-Id: Ia17c5cfa634919b43affa146df0d1dc0ff06b758
2013-06-11 00:03:46 +00:00
Matthias Mullie
52ecc8d9b5 invalidparammix/missingparam get the module prefix twice
dieUsage will call encodeParamName, which will already prefix the error code with the module prefix

E.g. for ApiViewFeedbackArticleFeedbackv5 (prefix afvf), this error code was
(incorrectly): afvfafvfinvalidparammix. Should be: afvfinvalidparammix

Change-Id: Ia351678b49e96ef58dce773331ebe9a1b3ebf824
2013-06-03 20:23:18 +02:00
umherirrender
2d9b71818f ApiHelp: Avoid header for example, when there no examples
When writing a new extension the source:

	public function getExamples() {
		return array(
			//TODO
		);
	}

would produce a empty "Example:" header on the help page. Avoid this, by
changing the condition to check for truthy instead of false and empty
string.

Change-Id: I67ecacbbac66b97ed96412abf79b49aebe0ebdbf
2013-05-28 15:37:41 +00:00
umherirrender
9d690a51c4 Fix badcontinue in possible errors of paraminfo
Badcontinue results in
<error code="unknownerror" info="Unknown error: &quot;badcontinue&quot;"
/>
because there is one array deep too much.

Change-Id: Iff88c3864f65e5da6cd31594396dffdaa71b5593
2013-05-16 08:55:39 +02:00
umherirrender
da39005596 Removed space after isset
While at it, added/removed some other spaces in the same files

Change-Id: Iabb23a448f6f53eb6020155f9c744f74f8b11786
2013-04-26 14:18:06 +02:00
umherirrender
a35cce4be0 Fixed spacing in api folder
Added spaces before if, foreach
Added some braces for one line statements

Change-Id: Id7779dca4d1185245cf5764102b8de8b232c34b6
2013-04-20 07:47:36 +00:00
umherirrender
4975761eb2 API: Add new hook 'APIGetPossibleErrors'
This allows extensions to modify the array.

This completes the serie of hooks for similar get methods in ApiBase.

Change-Id: Ib398f5815ab57f25d56356b0997c55a03fd96874
2013-04-19 15:25:58 +02:00
umherirrender
c9d5aa1890 fixed php doc in ApiBase
Change-Id: I9c893de8c067be3e926f5de5f0b87ac47b81772d
2013-04-05 15:47:36 +02:00
umherirrender
b1584c4748 Remove spaces around ::
Change-Id: I24fe5ad907bcf5235aa91b650785c571502456a1
2013-04-03 12:57:10 +02:00
umherirrender
a06611755a API param validation: Set strict mode for in_array
The in_array gives true when the allowed values contains a 0 as value,
for example by namespaces,

action=query&list=allpages&apnamespace=test|tset

was not rejected

Change-Id: I9220a955ffaf2bcb0d1d5b27c948af2f85714110
2013-04-02 12:05:50 +02:00
umherirrender
6c278b6d7e fix some spacing
* Removed spaces around array index
* Removed double spaces or added spaces to begin or end of function
  calls, method signature, conditions or foreachs
* Added braces to one-line ifs
* Changed multi line conditions to one line conditions
* Realigned some arrays

Change-Id: Ia04d2a99d663b07101013c2d53b3b2e872fd9cc3
2013-03-25 22:22:46 +00:00
umherirrender
8764b3aa7c Remove spaces in function signature
Change-Id: I45aea7a7af88cd913b2f485913620a8af0ab2fed
2013-03-18 20:44:43 +01:00
umherirrender
4b34c32ed2 API: Remove useless PARAM_REQUIRED = false
Also fix the condition in getPossibleErrors to avoid reporting of:
<error code="nosectiontitle" info="The sectiontitle parameter must be
set" />

Change-Id: Ifd808a040590ddffc0527da5ef0cc8cacdd008d9
2013-03-15 16:35:51 +01:00
Tyler Anthony Romeo
4dcc7961df Fixed @param tags to conform with Doxygen format.
Doxygen expects parameter types to come before the
parameter name in @param tags. Used a quick regex
to switch everything around where possible. This
only fixes cases where a primitve variable (or a
primitive followed by other types) is the variable
type. Other cases will need to be fixed manually.

Change-Id: Ic59fd20856eb0489d70f3469a56ebce0efb3db13
2013-03-11 13:15:01 -04:00
jenkins-bot
493b766fdb Merge "Fixed many small spelling mistakes and php docs, var decl." 2013-03-11 14:17:08 +00:00
Yuri Astrakhan
0aa24ae558 Fixed many small spelling mistakes and php docs, var decl.
Change-Id: I1508ed7eb77e5e4f700fb63955d626c4f5915840
2013-03-10 23:45:51 -04:00
umherirrender
435d16e003 API param validation: Add wrong value to error message on user params
It is always nice to get the wrong value back to know it.
Refactor a bit to avoid the array wrapping and unwrapping for non-multi
params.

Adjust another variable, add doc comments, removed a empty line and
reorder a condition for easy reading.

Change-Id: Ia91aa5908b82ad1209dc7da1139f91e1f2b45fac
2013-03-09 22:14:03 +01:00
umherirrender
d63121016d fix some spacing
Added/removed spaces around logical/arithmetic operator
Reduced multiple empty lines to one empty line
Removed wrong tabs before comments at end of line
Removed too many spaces in assigments

Change-Id: I2bba4e72f9b5f88c53324d7b70e6042f1aad8f6b
2013-03-07 17:53:21 +01:00
umherirrender
de7380b56e Change intval( User::getOption() ) to User::getIntOption()
Also changed some getOption with int or bool cast

Change-Id: Ia551a50e9de047c62be84065481fdf8c02e2ef96
2013-03-04 14:08:48 +00:00
jenkins-bot
08648b2b4e Merge "Use 'email' instead of 'e-mail' in API texts." 2013-03-03 00:42:48 +00:00
Brad Jorsch
f8d1bf2ad1 Add "upload" type to API
If a file upload is not formatted correctly for PHP to recognize it as a
file upload rather than a regular field, the API will wind up trying to
load the file contents as a text field. Since these file contents are
often a large binary file, this will tend to run out of memory trying to
apply Unicode normalization.

To prevent this and to allow for a helpful error message, mark
parameters that are supposed to be file uploads.

Bug: 44909
Change-Id: Ia4586953e2ad2d72d08852689e060e39e7920d50
2013-03-02 16:12:53 -05:00
Alex Monk
b672653acc Use 'email' instead of 'e-mail' in API texts.
Bug: 45633
Change-Id: Ieddc066be4051a20f0500b52e6b021e877d6c97d
2013-03-02 18:34:59 +00:00
Yuri Astrakhan
68820277af API continue param to streamline iteration of complex queries
Greatly simplifies query result iteration by the clients
by providing a mechanism to track sub-iterations (props in generated set)

Assuming the client has the param=>value dictionary with the original request
parameters, client will only need to perform this operation in their language
to get all results from the server regardless of what query they make.

  $request = array_merge( $request, $result['continue'] );

Related changes:
* Moved dieContinueUsageIf() from ApiQueryBase to ApiBase
* Internal calls will also return unused param warnings
* Reworked query unit tests for easier testing

Change-Id: Ieb45241fc6db2109f1d92fa3381165ec30701b63
2013-03-01 19:06:46 -05:00
umherirrender
5880f89707 API: Throw error when interwiki is given for various title param
See bug 44341 for action=parse, but the problem with interwiki
processing can also be happen in other modules.

This gives clearer error message on some modules
For example action=move:
Bad title "*title*"
instead of:
Unknown error: "immobile-target-namespace-iw"

Change-Id: I86524533dfd778a169b39968999918a1f531efeb
2013-03-01 16:01:26 +01:00
Yuri Astrakhan
86ce0ee506 Move <warnings> and <query-continue> to result's top and optimize
* Both the warnings and query-continue elements will now be shown
at the top of the result, making it easier for debugging and learning.
* Added int $flags parameter instead of bool $overwrite for addValue()
and setElement(). Supported flags are OVERRIDE - overrides existing value,
same meaning as true (which will continue to work), and ADD_ON_TOP which
ensures that if the value being added does not exist, it will be placed
as the first element in the parent array.
* Optimized ApiBase::setWarning to no longer use regex (faster)
* Optimized ApiResult::addValue() for a bit more efficiency
* Added ApiResult::addAsFirstElement() that inserts a named value into
the array at the top

Change-Id: I0fa2697e1eaa4947d01527bb3ad555e1051f6be4
2013-02-19 11:45:44 -05:00
Yuri Astrakhan
62216932c1 API PageSet allows generator for non-query modules
* PageSet can now be used in any action to process titles/pageids/revids
or any generator, redirects resolution, and converttitle functionality.
* action=purge proper usage of MustBePosted()
* Add supports for all pageset capabilities - generators, redirects, converttitles to
  action=purge and action=setnotificationtimestamp
* BREAKING CHANGE: ApiPageSet constructor now has two params instead of three, with only the
  first one keeping its meaning. ApiPageSet is now derived from ApiBase.
* BREAKING CHANGE: ApiQuery::newGenerator() and executeGeneratorModule() were deleted.

Change-Id: I7a3d7b6eb015d21ec1a9b9d9c6af9d97663f3f9a
2013-02-08 15:42:21 -05:00