Commit graph

239 commits

Author SHA1 Message Date
RobinHood70
15ecc5a93a Update getHelpUrls() for reworked mw.org API pages
Community members restructured the mediawiki.org API pages, e.g.
the meta allmessages query submodule is no longer in the catch-all
https://www.mediawiki.org/wiki/API:Meta?oldid=1408361#allmessages_.2F_am
but its own https://www.mediawiki.org/wiki/API:Allmessages

The links in the generated API help, e.g.
https://www.mediawiki.org/wiki/Special:ApiHelp/query+allmessages,  are no
correct. They're not 404s but they don't take you directly to the
relevant page.

This patch set fixes the getHelpUrls() URLs (and does nothing else).
I tested them all.

Thanks RobinHood70!

Change-Id: Icea94abdd22d1ad468172642a21641e7c5ce2046
2015-05-04 08:15:54 +00:00
Brad Jorsch
beab6b009e Change API result data structure to be cleaner in new formats
Nothing in this patch should result in changed output for format=json or
format=php except as noted in RELEASE-NOTES-1.25, and changed output for
format=xml should be similar or cosmetic. However, other code accessing
the result data directly may need to be updated.

Bug: T87053
Bug: T12887
Change-Id: I3500708965cb8869b5aed1543381aad208dadd13
2015-04-20 17:49:37 -04:00
jenkins-bot
4fa0240228 Merge "API: Overhaul ApiResult, make format=xml not throw, and add json formatversion" 2015-04-16 01:05:51 +00:00
Brad Jorsch
1c57794e37 API: Overhaul ApiResult, make format=xml not throw, and add json formatversion
ApiResult was a mess: some methods could only be used with an array
reference instead of manipulating the stored data, methods that had both
array-ref and internal-data versions had names that didn't at all
correspond, some methods that worked on an array reference were
annoyingly non-static, and then the whole mess with setIndexedTagName.

ApiFormatXml is also entirely annoying to deal with, as it liked to
throw exceptions if certain metadata wasn't provided that no other
formatter required. Its legacy also means we have this silly convention
of using empty-string rather than boolean true, annoying restrictions on
keys (leading to things that should be hashes being arrays of key-value
object instead), '*' used as a key all over the place, and so on.

So, changes here:
* ApiResult is no longer an ApiBase or a ContextSource.
* Wherever sensible, ApiResult provides a static method working on an
  arrayref and a non-static method working on internal data.
* Metadata is now always added to ApiResult's internal data structure.
  Formatters are responsible for stripping it if necessary. "raw mode"
  is deprecated.
* New metadata to replace the '*' key, solve the array() => '[]' vs '{}'
  question, and so on.
* New class for formatting warnings and errors using i18n messages, and
  support for multiple errors and a more machine-readable format for
  warnings. For the moment, though, the actual output will not be changing
  yet (see T47843 for future plans).
* New formatversion parameter for format=json and format=php, to select
  between BC mode and the modern output.
* In BC mode, booleans will be converted to empty-string presence style;
  modules currently returning booleans will need to use
  ApiResult::META_BC_BOOLS to preserve their current output.

Actual changes to the API modules' output (e.g. actually returning
booleans for the new formatversion) beyond the use of
ApiResult::setContentValue() are left for a future change.

Bug: T76728
Bug: T57371
Bug: T33629
Change-Id: I7b37295e8862b188d1f3b0cd07f66ac34629678f
2015-04-10 16:57:15 -04:00
Alex Monk
89f2f72470 Fix ApiQuerySiteInfo with siprop=rightsinfo to not die if your wgRightsPage is null
Follows-up I2b36b7a3

Change-Id: I7d76cd48021a0097ce5e11f4ad4100cb85ee5ad0
2015-04-06 18:31:51 +01:00
Kunal Mehta
06bfb654ab Expose installed libraries in action=query&meta=siteinfo
Bug: T89385
Change-Id: I4256f4d9858c09c042f649b7e701189acf85aedd
2015-02-12 23:25:19 +00:00
umherirrender
8d47b4f373 Output wikiid/api in meta=siteinfo only when non-empty
When using interwiki data from the database the value for iw_wikiid and
iw_api maybe empty strings, because the database does not allow NULL
here.
Suppress the output of the attribute in that case, because there are not
useful.
This should not break clients, because using .cdb (like WMF wikis)
already missing these attributes in the result.

Change-Id: I60b97b4b58fdeaf699951544d418e5dc06e3830a
2015-01-30 20:12:33 +01:00
Aaron Schulz
e369f66d00 Replace wfRunHooks calls with direct Hooks::run calls
* This avoids the overhead of an extra function call

Change-Id: I8ee996f237fd111873ab51965bded3d91e61e4dd
2014-12-10 12:26:59 -08:00
Arlo Breault
f9c50bd7f1 Expose legaltitlechars through the API
Bug: 47651
Change-Id: I79fdd698e6df75b1823b0d2d150db68e862c640f
2014-11-13 10:17:10 -08:00
Brad Jorsch
f62bc7536e API: Fix access on getExamplesMessages
ApiBase declares it protected, but for some reason I had made it public
in all subclasses.

Change-Id: I8a50d4f47e66c7f09137968d3941dc5cdc1d28e4
2014-10-29 11:15:27 -04:00
jenkins-bot
30cc068774 Merge "API: Internationalize all remaining core API modules" 2014-10-20 21:41:19 +00:00
Brad Jorsch
ad225f501c API: Internationalize all remaining core API modules
This also adds some new ApiBase::PARAM_* constants to generate more
helpful help, and a method to override the default description message
for the use of ApiDisabled and ApiQueryDisabled.

Bug: 71638
Change-Id: Ic0c3d232e0498d58a043037e2e0c6f0b1c3edad3
2014-10-20 16:56:35 -04:00
Chad Horohoe
90d90dad6e Remove hitcounters and associated code
The hitcounter implementation in MediaWiki is flawed
and needs removal. For proper metrics, it is suggested to use
something like Piwik or Google Analytics.

RFC: https://www.mediawiki.org/wiki/Requests_for_comment/Removing_hit_counters_from_MediaWiki_core
Change-Id: I0e5006a7e8a09c800f8fa4effa9399e8afdd7a57
2014-10-20 13:01:55 -07:00
daniel
4f0b2f4241 Allow callback functions for creating SpecialPages.
This enables factory functions to be registered for special
pages, as an alterative to giving a class name. This follows the
same rationale as Ieb85493a7765, which introduced factory functions
for API modules.

Change-Id: Ia2107dc5af7869187ba5dc02a1bef46d6801e138
2014-09-18 14:47:34 +02:00
Bartosz Dziewoński
49edf82e05 ApiQuerySiteinfo: Use proper localised skin display names if available
Based on the code in Preferences::generateSkinOptions(). This should
probably be turned into a helper method one day…

Bug: 48953
Change-Id: Ib85a783bd19de8a59e7b81a4203a05b786e67772
2014-09-15 13:03:01 +00:00
jenkins-bot
8959a09b8f Merge "Prevent "Notice: Undefined index" in ApiQuerySiteinfo" 2014-09-15 03:13:39 +00:00
Jackmcbarn
d01b01c6cc Don't list nonexistent groups as addable or removable
You can't add or remove a group that doesn't exist, so don't claim that
it's possible on Special:ListGroupRights or the API.

Change-Id: I02d3f00142ca1cb0cdcbf30e79fecb3c96e96405
2014-09-14 22:48:01 -04:00
Marius Hoch
01ca947a06 Prevent "Notice: Undefined index" in ApiQuerySiteinfo
$row['iw_trans'] wont be set if $wgInterwikiCache is used.

Change-Id: Iea1041b9c699667c251442ed7f4c95e3ba550e7c
2014-09-15 04:33:16 +02:00
umherirrender
589f9ecbb7 Add missing space to autodoc of meta=siteinfo&siprop=languages
Change-Id: I56ba3b3282ea747b47016558513f96ca597e28d7
2014-09-01 05:05:20 +00:00
jenkins-bot
914e7e2b5d Merge "Indicate the actual version of HHVM in use" 2014-08-27 22:42:12 +00:00
Bryan Davis
9cd7d691cb Check for existence of iw_local in Interwiki::getAllPrefixes
Interwiki::getAllPrefixes only sets the iw_local member in a response
row if $local is set to a non-null value. Under certain error
reporting conditions, the unqualified access to the array key leads to
warnings such as "message repeated 1471 times: [ #012Notice: Undefined
index: iw_trans in ...".

Change-Id: Ibf434dc9c362984cad76ae6bdb29de826974d81e
2014-08-21 20:24:25 -06:00
umherirrender
a203032d00 Docs: compatability -> compatibility
https://en.wiktionary.org/wiki/compatability

Change-Id: I71d82ae04d4b17609a1d5a7eec4497115e64972e
2014-08-13 19:39:07 +02:00
Brad Jorsch
f0a6435f3b API: Remove action=paraminfo 'props' and 'errors' result properties
The format for 'props' was never specified and the list for 'errors' is
impossible to keep updated when considering that many errors come from
MediaWiki backend code and extension hook functions. And since there
doesn't seem to be any real use case for either of these, let's just
kill both of them instead of wasting effort on trying to fix them.

Note that neither getResultProperties nor getPossibleErrors are called
from any extensions in gerrit, and none of the other deprecated methods
are called outside of the implementations of those two methods. Removing
the obsolete methods is left to the maintainers of the extensions, as
keeping them hurts nothing and is needed to maintain compatibility with
earlier versions of MediaWiki.

Change-Id: Ie11a401d60c834059fbf1b5625ca8ea093b3337c
2014-08-07 16:51:19 +01:00
Kevin Israel
b0751af753 Indicate the actual version of HHVM in use
Strings like "5.6.99-hhvm" are not version numbers but merely
a way for HHVM to pass version checks. They should not be
displayed in the UI.

This affects Special:Version, the API (action=query&meta=siteinfo),
the installer welcome page, and the debug toolbar.

Follows-up d09ab9001f.

Change-Id: Ia99dca64779e9c4eaddf5f0e0101674d029b8d55
2014-08-05 16:36:47 -04:00
umherirrender
53c420e278 Fixed spacing
- use tab as indent instead of spaces
- Added space after closures "function"
- Added spaces around string_concat
- Added newline inside empty blocks
- Removed four spaces after comma

Change-Id: I4425b0c6a69b36f40acfea6511b8950cf09ce2b2
2014-07-20 21:41:41 +02:00
umherirrender
2b021dc48a Fixed spacing
- Added/removed spaces around parenthesis
- Added space after switch/if/foreach
- changed else if to elseif

Change-Id: I99cda543e0e077320091addd75c188cb6e3a42c2
2014-07-19 23:12:10 +02:00
Chad Horohoe
a4334bbef5 Use PHP_VERSION constant instead of phpversion() function call
Change-Id: Ifb3d1bd92d6abaa561e7337b311b4cb10c38a2b6
2014-07-09 16:46:35 -07:00
This, that and the other
848c335371 Expose $wgLocalInterwikis via the API
This will hopefully be useful to Parsoid.

Bug: 66709
Change-Id: I67d789172d4c6b786ed781f80e513692b3ae4119
2014-06-22 15:26:28 +10:00
Bartosz Dziewoński
326f3f450c Add a 'namemsg' parameter to $wgExtensionCredits for localizable names
Works similarly to 'description' and 'descriptionmsg', but 'name'
is still required because of weird shenanigans Special:Version does.
(And would be a good idea anyway for backwards-compatibility with
older MediaWikis.)

The primary use-case is skins (which have already traditionally had
translateable names in MediaWiki, but weren't always shown on
Special:Version), but there's no reason why regular extensions can't
use this too.

Skins which already have a translated name for Special:Preferences
('skinname-<skin>' messages) can reuse the same message here.

Change-Id: Iae6f770a8fe1968670429c22aefc1ae55e8dba6f
2014-06-21 13:13:44 +02:00
This, that and the other
7665f7d767 Allow interlanguage link prefixes that are not language codes
$wgExtraInterlanguageLinkPrefixes holds a list of interwiki prefixes to be
treated as language codes if $wgInterwikiMagic is true.

To set the display text for the interlanguage links generated by this
code, you need to create MediaWiki:Interlanguage-link-foo, where "foo" is
the interwiki prefix.  To provide a friendly site name for the link title
text, use MediaWiki:Interlanguage-link-sitename-foo.  On the WMF cluster,
these messages could be set using the WikimediaMessages extension.

Information about extra language links (in the site language only) is
provided via the API in meta=siteinfo&prop=interwikimap.

Bug: 32189
Change-Id: I3d04760e2d9fb3320bb71e3d5ad115eed54a899c
2014-06-20 11:29:05 +10:00
C. Scott Ananian
3f9d79ebe0 The siteinfo API uses '' as an attribute value, not true.
Bug: 66723
Change-Id: Ibef772a72bac6b700ba2a3725832f50b057bf503
2014-06-17 10:54:15 -04: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
C. Scott Ananian
87e0aa3441 Indicate whether interwiki links can use protocol-relative URLs.
Change-Id: I17360e44f0be7490357bc9bc7af27d0a950012de
2014-05-19 15:26:44 -07:00
Thiemo Mättig
23632a4ecd Use precise ApiMain/ApiQuery type hints in all API modules
Which type is used depends on the ApiModuleManager responsible for
the API module. There are two managers, one in ApiMain and one in
ApiQuery. Both contain a list of API modules they instantiate.
Both use $this as the first parameter in the constructors of the
individual modules. There is no other regular way to instantiate the
modules, so we know the type must either be ApiMain or ApiQuery.

The lists don't intersect.

I would have prefered the naming scheme $mainModule for ApiMain
modules and $queryModule for ApiQuery modules but since this
doesn't add much I left the shorter variable names untouched.

Change-Id: Ie6bf19150f1c9b619655a06a8e051412665e54db
2014-05-16 11:07:23 -04: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
jenkins-bot
83a1cf573f Merge "Rename Skin::getUsableSkins() to Skin::getAllowedSkins()" 2014-04-13 00:30:53 +00:00
addshore
719d7a2f03 Add final period to API module descriptions
Change-Id: Icae68c1ab1fd0006e00a3a9a56ae8f831d3d0d45
2014-03-10 09:04:08 +00:00
Bartosz Dziewoński
b73b5883d4 ApiQuerySiteinfo: Add prop=restrictions for protection information
As pointed out on VPT, we previously had no way to find out about these.

This just dumps the raw config variables for now. They are documented
in DefaultSettings as having some magic applied to them when used,
maybe we should apply this magic here too, or in Setup.php?

https://en.wikipedia.org/w/index.php?title=Wikipedia:Village_pump_(technical)&oldid=594218538#API_query_to_list_available_protection_levels_for_a_wiki.3F

Change-Id: I4c1303f2a6fe6b60b44e960cc1253c555fc658dc
2014-02-06 16:51:37 +01:00
Siebrand Mazeland
f077c4b1d6 Update formatting
Change-Id: I18aff576262479c9bb1c56eb8e1d1aaae200e4b1
2014-02-06 09:27:05 +01:00
Siebrand Mazeland
0cef781886 Fix CodeSniffer errors and warnings
Change-Id: Idc74e34634d88625773fb8f73315f61edfa67e28
2014-02-05 11:20:17 +01:00
jenkins-bot
c6df6a527c Merge "Propagate the favicon information to getInfo()" 2014-01-30 20:44:49 +00:00
Reedy
ba25a53c4f API: Remove obsolete wgRightsCode from siteinfo
This was apparently a companion to $wgRightsPage, $wgRightsUrl,
$wgRightsText, and $wgRightsIcon, added in r3148.

But even then it was commented out as "not yet used", and appears to
have eventually disappeared without ever having been used.

Change-Id: I63f4393c22912f04e4ea690ebb1cd02bae65faab
2014-01-24 07:05:31 +00:00
gilles
aae0344ce0 Propagate the favicon information to getInfo()
This is needed by MultimediaViewer to show a relevant icon next to the foreign repo link to the description page

Change-Id: Id02743b036a2b88677d76613a73787874f5e448b
Mingle: Multimedia card #107
2014-01-17 17:06:44 +01:00
Gergő Tisza
b28f0af08b Add $wgFavicon to siteinfo API
This would be used by MultimediaViewer to show an icon next to the
link to the description page (and probably makes sense to include
$wgFavicon if $wgLogo is there, anyway).

Bug: 59925
Change-Id: Ibdad9c3d2b515fbfdcd458db9b061f4d4d375180
2014-01-13 11:00:53 +00:00
jenkins-bot
a5a6f595db Merge "Add licensing for extensions to Special:Version" 2014-01-04 00:42:28 +00:00
Matt Walker
357eb3d488 Add licensing for extensions to Special:Version
Allow extensions to register a software license and present
this on the Special:Version page. A new $wgExtensionCredits
parameter has been introduced for this purpose: 'license-name'.

This will also automatically pick up the presense of additional
licensing and/or credits files. If ((AUTHORS)|(CREDITS))(\.txt)?
exists in the extension base directory a credits link will be
created. If ((LICENSE)|(COPYING))(\.txt)? exists a license link
will be created.

The API has also been updated to produce VCS information and present
links to the license/credits files.

Bug: 48418
Change-Id: I388f3b630462f1909f30751c987f7af585e98881
2014-01-03 11:02:54 -08:00
Brad Jorsch
5c620805cc API: Include variant name in meta=siteinfo
For languages with variants, we're already returning the list of variant
codes in meta=siteinfo&siprop=general. Clients may have use for the
variant's human-readable name too, and we can easily add it to the
datastructure.

Change-Id: I6c7ebf43a699a0b2346cb0fdeef6487217992f5c
2013-12-27 16:25:34 -05:00