User:Tisane/rped.php
Appearance
<?php
/*
This file is part of Peachy MediaWiki Bot API
Peachy is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
class RPED {
/**
* Wiki class
*
* @var Wiki
* @access private
*/
private $wiki;
/**
* maxURLLength
* Default maximum length of the URL to be posted
*
* @var int
* @access private
*/
private $defaultMaxURLLength = 1000;
/**
* Construction method for the RPED class
*
* @access public
* @param Wiki &$wikiClass The Wiki class object
* @return void
*/
function __construct( &$wikiClass ) {
$this->wiki = $wikiClass;
return;
}
/**
* Loads and constructs the RPED class
*
* @access public
* @param Wiki &$wikiClass The Wiki class object
* @return RPED
*/
public static function load( &$wikiClass ) {
if( !array_key_exists( 'Central Auth', $wikiClass->get_extensions() ) ) {
throw new DependancyError( "RPED", "http://www.mediawiki.org/wiki/Extension:RPED" );
}
return new RPED( $wikiClass );
}
/**
* Insert a page title into the rped_page table
*
* @static
* @access public
* @param string $pageTitle The title of the page to insert
* @return void
*/
public function insert( $page ) {
$this->wiki->apiQuery(
array(
'action' => 'rped',
'insert' => 'page',
));
}
/**
* Delete a page title from the rped_page table
*
* @static
* @access public
* @param string $pageTitle The title of the page to insert
* @return void
*/
public function delete( $page ) {
$this->wiki->apiQuery(
array(
'action' => 'rped',
'delete' => 'page',
));
}
/**
* Insert/delete an array of page titles into/from the rped_page table
*
* @static
* @access public
* @param string $command Either 'insert' or 'delete'
* @param array $pageArray The array of page title to insert
* @param int $maxURLLength The maximum length of the url to be POSTed
* @return void
*/
public function insertOrDeleteArray( $command, $pageArray, $maxURLLength = 0) {
if ( $command != 'insert' && $command != 'delete' )
{
die('Something tried to call insertOrDeleteArray without'
.'specifying an insert or delete command.' );
}
if ( $maxURLLength == 0 ) {
$maxURLLength = $defaultMaxURLLength;
}
$line = '';
foreach ( $pageArray as $page ) {
if ( $line != '' ) {
$line .= '|';
}
if ( strlen( $line ) + strlen( $buffer ) > $maxURLLength ) {
if ( $command == 'delete' ) {
$this->delete( $line );
} else {
$this->insert( $line );
}
$line = '';
}
$line .= $page;
}
}
/**
* Insert an array of page titles into/from the rped_page table
*
* @static
* @access public
* @param array $pageArray The array of page title to insert
* @param int $maxURLLength The maximum length of the url to be POSTed
* @return void
*/
public function insertArray( $pageArray, $maxURLLength = 0) {
$this->insertOrDeleteArray( 'insert', $pageArray, $maxURLLength );
}
/**
* Delete an array of page titles from the rped_page table
*
* @static
* @access public
* @param array $pageArray The array of page title to insert
* @param int $maxURLLength The maximum length of the url to be POSTed
* @return void
*/
public function deleteArray( $pageArray, $maxURLLength = 0) {
$this->insertOrDeleteArray( 'delete', $pageArray, $maxURLLength );
}
}