MediaWiki-Bot-Plugin-Admin

 view release on metacpan or  search on metacpan

lib/MediaWiki/Bot/Plugin/Admin.pm  view on Meta::CPAN



sub delete {
    my $self    = shift;
    my $page    = shift;
    my $summary = shift || 'BOT: deleted page by command';

    my $res = $self->{api}->api({
        action  => 'query',
        titles  => $page,
        prop    => 'info|revisions',
        intoken => 'delete'
    });
    my $data = [ %{ $res->{query}->{pages} } ]->[1];
    my $edittoken = $data->{deletetoken};

    $res = $self->{api}->api({
        action => 'delete',
        title  => $page,
        token  => $edittoken,
        reason => $summary
    });
    return $self->_handle_api_error() unless $res;

    return $res;
}


sub undelete {
    my $self    = shift;
    my $page    = shift;
    my $summary = shift || 'BOT: undeleting page by command';

    # http://meta.wikimedia.org/w/api.php?action=query&list=deletedrevs&titles=User:Mike.lifeguard/sandbox&drprop=token&drlimit=1
    my $token_results = $self->{api}->api({
        action  => 'query',
        list    => 'deletedrevs',
        titles  => $page,
        drlimit => 1,
        drprop  => 'token',
    });
    my $token = $token_results->{query}->{deletedrevs}->[0]->{token};

    my $res = $self->{api}->api({
        action  => 'undelete',
        title   => $page,
        reason  => $summary,
        token   => $token,
    });
    return $self->_handle_api_error() unless $res;

    return $res;
}


sub delete_archived_image {
    my $self    = shift;
    my $archive = shift;
    my $summary = shift || 'BOT: deleting old version of image by command';

    my $file = [ split m/!/, $archive ]->[1];

    my ($token) = $self->_get_edittoken($file);

    my $res = $self->{api}->api({
        action   => 'delete',
        title    => "File:$file",
        token    => $token,
        reason   => $summary,
        oldimage => $archive,
    });
    return $self->_handle_api_error() unless $res;

    return $res;

}


sub block {
    my $self = shift;
    my $user;
    my $length;
    my $summary;
    my $anononly;
    my $autoblock;
    my $blockac;
    my $blockemail;
    my $blocktalk;
    if (ref $_[0] eq 'HASH') {
        $user       = $_[0]->{user};
        $length     = $_[0]->{length};
        $summary    = $_[0]->{summary};
        $anononly   = $_[0]->{anononly};
        $autoblock  = $_[0]->{autoblock};
        $blockac    = $_[0]->{blockac};
        $blockemail = $_[0]->{blockemail};
        $blocktalk  = $_[0]->{blocktalk};
    }
    else {
        $user       = shift;
        $length     = shift;
        $summary    = shift;
        $anononly   = shift;
        $autoblock  = shift;
        $blockac    = shift;
        $blockemail = shift;
        $blocktalk  = shift;
    }

    my $res;
    my $edittoken;

    if ($self->{blocktoken}) {
        $edittoken = $self->{blocktoken};
    }
    else {
        $res = $self->{api}->api({
            action  => 'query',
            titles  => 'Main_Page',
            prop    => 'info|revisions',
            intoken => 'block'



( run in 0.787 second using v1.01-cache-2.11-cpan-71847e10f99 )