On 02/06/2011 12:42 AM, Krinkle wrote:
So I was thinking :
- upload a mediawiki install (the same version that WMF runs, ie.
1.16wmf4 or 1.17wmf1)
- make it not publically accessable (we don't want people actually
browsing the wiki)
- Configure it in a special way so that one can use the same code for
any wiki (ie. a $lang and $family variable of some kind)
So you basically want to set up an internal copy of MediaWiki core so that it can run on the Toolserver databases in read-only mode, and provide a wrapper so that it can be conveniently accessed from PHP code?
That sounds potentially very useful, at least for people who write their tools in PHP.
Then one can include includes/WebStart.php, and use the API (ie. using the huge library of quiries already in the MediaWiki core (ie. action=query&list=categorymembers, using generators and getting properties, you name it) like this:
<source> $site = 'wikipedia'; $lang = 'en'; require( $mw_root . '/includes/WebStart.php' ); // loads all common code including LocalSettings.php // LocalSettings contains extra code to check for $site and $lang figuring out the correct $wgDBname, // $wgDBserver etc. a tiny bit like wmf's CommonSettings.php
$apiRequest = array( 'action' => 'query', 'list' => '...', /* etc. */ ); /* etc. */
</source>
On the other hand, I'm not sure why you'd want to do that. Calling the API internally via FauxRequest is basically a huge kluge. I suppose it may sometimes be the easiest way to get a particular job done, but it's not really the first (or even second or third) solution I'd consider.
Most of the time, if you have direct access to the MediaWiki core classes, you really should just use them directly.