[Mediawiki-l] php API query <- possible?
Adam Meyer
meyer7 at mindspring.com
Sat Jun 20 11:33:04 UTC 2009
Im on 1.14
So say, I wanted to query the main page for a list of all of its
categories, I would think I could do this.
$params = array (
'action' => 'query',
'prop' => 'categories',
'cllimit' => 500,
'titles' => 'Main Page',
'format' => 'json'
);
$api = new ApiMain($params);
$api->execute();
$data = & $api->getResultData();
But I get
Call to a member function getVal() on a non-object in includes/api/
ApiMain.php on line 146
So I figure this is not how it is done.
On Jun 20, 2009, at 2:27 AM, Michael Daly wrote:
> When you said "through plain PHP," I interpreted that to mean outside
> the wiki - i.e. a stand alone PHP program. You could do that the
> way I
> showed, but what you are pointing to with that URL is for use within
> the
> wiki - e.g. from within an extension.
>
> What version of MW are you using - the hook function you need may be
> in
> your version if you are not running 1.14 or 1.15.
>
> Without seeing details of what you're doing, anything I say would be a
> wild guess.
>
>
> Adam Meyer wrote:
>> It looks like this would be my answer.
>> http://www.mediawiki.org/wiki/API:Calling_internally
>>
>> But it dosnt work.
>> I get some error about a hook function missing or something.
>>
>> But I would love it if it could work this easily.
>>
>>
>> On Jun 19, 2009, at 9:28 PM, Michael Daly wrote:
>>
>>> Adam Meyer wrote:
>>>
>>>> Is this doable?
>>> There may be a better way to do this, but...
>>>
>>> In PHP, you can get the wiki page as if it was a file:
>>>
>>> $myPageUrl ="http://example.com/api.php?action=parse&text={{:Main
>>> Page}}__TOC__&prop=sections";
>>> // set to 20 second timeout then restore.
>>> $currentTimeout = ini_set( 'default_socket_timeout', "20" );
>>> $myPage = file($myPageUrl);
>>> ini_set( 'default_socket_timeout', $currentTimeout );
>>>
>>>
>>> This will produce a list of section headers. Count them to see what
>>> the
>>> last one is.
>>>
>>> I've found it useful to ensure that any timeouts due to the web page
>>> access are trapped here and don't run into the overall program
>>> timeout.
>>> Restore the old timeout once the page is read.
>>>
>>> If you need to set up a session (e.g. to log in and stay logged in
>>> while
>>> you get data from pages) look up curl in the online PHP manual.
>>>
>>> Mike
>>>
>>>
>>> _______________________________________________
>>> MediaWiki-l mailing list
>>> MediaWiki-l at lists.wikimedia.org
>>> https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
>>
>>
>> _______________________________________________
>> MediaWiki-l mailing list
>> MediaWiki-l at lists.wikimedia.org
>> https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
>>
>
>
>
> _______________________________________________
> MediaWiki-l mailing list
> MediaWiki-l at lists.wikimedia.org
> https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
More information about the MediaWiki-l
mailing list