joomla_test/libraries/joomla/mediawiki/sites.php
2020-01-02 22:20:31 +07:00

316 lines
7.6 KiB
PHP

<?php
/**
* @package Joomla.Platform
* @subpackage MediaWiki
*
* @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die;
/**
* MediaWiki API Sites class for the Joomla Platform.
*
* @package Joomla.Platform
* @subpackage MediaWiki
* @since 12.3
*/
class JMediawikiSites extends JMediawikiObject
{
/**
* Method to get site information.
*
* @param array $siprop The sysinfo properties to get.
* @param string $sifilteriw Only local or only non local entries to return.
* @param boolean $sishowalldb List all database servers.
* @param boolean $sinumberingroup List the number of users in usergroups.
* @param array $siinlanguagecode Language code for localized languages.
*
* @return object
*
* @since 12.3
*/
public function getSiteInfo(array $siprop = null, $sifilteriw = null, $sishowalldb = false, $sinumberingroup = false, array $siinlanguagecode = null)
{
// Build the request.
$path = '?action=query&meta=siteinfo';
if (isset($siprop))
{
$path .= '&siprop=' . $this->buildParameter($siprop);
}
if (isset($sifilteriw))
{
$path .= '&sifilteriw=' . $sifilteriw;
}
if ($sishowalldb)
{
$path .= '&sishowalldb=';
}
if ($sinumberingroup)
{
$path .= '&sinumberingroup=';
}
if (isset($siinlanguagecode))
{
$path .= '&siinlanguagecode=' . $this->buildParameter($siinlanguagecode);
}
// Send the request.
$response = $this->client->get($this->fetchUrl($path));
return $this->validateResponse($response);
}
/**
* Method to get events from logs.
*
* @param array $leprop List of properties to get.
* @param string $letype Filter log actions to only this type.
* @param string $leaction Filter log actions to only this type.
* @param string $letitle Filter entries to those related to a page.
* @param string $leprefix Filter entries that start with this prefix.
* @param string $letag Filter entries with tag.
* @param string $leuser Filter entries made by the given user.
* @param string $lestart Starting timestamp.
* @param string $leend Ending timestamp.
* @param string $ledir Direction of enumeration.
* @param integer $lelimit Event limit to return.
*
* @return object
*
* @since 12.3
*/
public function getEvents(array $leprop = null, $letype = null, $leaction = null, $letitle = null, $leprefix = null, $letag = null,
$leuser = null, $lestart = null, $leend = null, $ledir = null, $lelimit = null)
{
// Build the request
$path = '?action=query&list=logevents';
if (isset($leprop))
{
$path .= '&leprop=' . $this->buildParameter($leprop);
}
if (isset($letype))
{
$path .= '&letype=' . $letype;
}
if (isset($leaction))
{
$path .= '&leaction=' . $leaction;
}
if (isset($letitle))
{
$path .= '&letitle=' . $letitle;
}
if (isset($leprefix))
{
$path .= '&leprefix=' . $leprefix;
}
if (isset($letag))
{
$path .= '&letag=' . $letag;
}
if (isset($leuser))
{
$path .= '&leuser=' . $leuser;
}
if (isset($lestart))
{
$path .= '&lestart=' . $lestart;
}
if (isset($leend))
{
$path .= '&leend=' . $leend;
}
if (isset($ledir))
{
$path .= '&ledir=' . $ledir;
}
if (isset($lelimit))
{
$path .= '&lelimit=' . $lelimit;
}
// Send the request.
$response = $this->client->get($this->fetchUrl($path));
return $this->validateResponse($response);
}
/**
* Method to get recent changes on a site.
*
* @param string $rcstart Starting timestamp.
* @param string $rcend Ending timestamp.
* @param string $rcdir Direction of enumeration.
* @param array $rcnamespace Filter changes to only this namespace(s).
* @param string $rcuser Filter changes by this user.
* @param string $rcexcludeuser Filter changes to exclude changes by this user.
* @param string $rctag Filter changes by this tag.
* @param array $rcprop Filter log actions to only this type.
* @param array $rctoken Which token to obtain for each change.
* @param array $rcshow Filter changes by this criteria.
* @param string $rclimit Changes limit to return.
* @param string $rctype Filter event by type of changes.
* @param string $rctoponly Filter changes which are latest revision.
*
* @return object
*
* @since 12.3
*/
public function getRecentChanges($rcstart = null, $rcend = null, $rcdir = null, array $rcnamespace = null, $rcuser = null, $rcexcludeuser = null,
$rctag = null, array $rcprop = null, array $rctoken = null, array $rcshow = null, $rclimit = null, $rctype = null, $rctoponly = null)
{
// Build the request.
$path = '?action=query&list=recentchanges';
if (isset($rcstart))
{
$path .= '&rcstart=' . $rcstart;
}
if (isset($rcend))
{
$path .= '&rcend=' . $rcend;
}
if (isset($rcdir))
{
$path .= '&rcdir=' . $rcdir;
}
if (isset($rcnamespace))
{
$path .= '&rcnamespaces=' . $this->buildParameter($rcnamespace);
}
if (isset($rcuser))
{
$path .= '&rcuser=' . $rcuser;
}
if (isset($rcexcludeuser))
{
$path .= '&rcexcludeuser=' . $rcexcludeuser;
}
if (isset($rctag))
{
$path .= '&rctag=' . $rctag;
}
if (isset($rcprop))
{
$path .= '&rcprop=' . $this->buildParameter($rcprop);
}
if (isset($rctoken))
{
$path .= '&rctoken=' . $this->buildParameter($rctoken);
}
if (isset($rcshow))
{
$path .= '&rcshow=' . $this->buildParameter($rcshow);
}
if (isset($rclimit))
{
$path .= '&rclimit=' . $rclimit;
}
if (isset($rctype))
{
$path .= '&rctype=' . $rctype;
}
if (isset($rctoponly))
{
$path .= '&rctoponly=' . $rctoponly;
}
// Send the request.
$response = $this->client->get($this->fetchUrl($path));
return $this->validateResponse($response);
}
/**
* Method to get protected titles on a site.
*
* @param array $ptnamespace Only list titles in this namespace.
* @param array $ptlevel Only list titles with these protection level.
* @param integer $ptlimit Limit of pages to return.
* @param string $ptdir Direction of enumeration.
* @param string $ptstart Starting timestamp.
* @param string $ptend Ending timestamp.
* @param array $ptprop List of properties to get.
*
* @return object
*
* @since 12.3
*/
public function getProtectedTitles(array $ptnamespace = null, array $ptlevel = null, $ptlimit = null, $ptdir = null, $ptstart = null,
$ptend = null, array $ptprop = null)
{
// Build the request.
$path = '?action=query&list=protectedtitles';
if (isset($ptnamespace))
{
$path .= '&ptnamespace=' . $this->buildParameter($ptnamespace);
}
if (isset($ptlevel))
{
$path .= '&ptlevel=' . $this->buildParameter($ptlevel);
}
if (isset($ptlimit))
{
$path .= '&ptlimit=' . $ptlimit;
}
if (isset($ptdir))
{
$path .= '&ptdir=' . $ptdir;
}
if (isset($ptstart))
{
$path .= '&ptstart=' . $ptstart;
}
if (isset($ptend))
{
$path .= '&ptend=' . $ptend;
}
if (isset($ptprop))
{
$path .= '&ptprop=' . $this->buildParameter($ptprop);
}
// Send the request.
$response = $this->client->get($this->fetchUrl($path));
return $this->validateResponse($response);
}
}