Go to the documentation of this file.
41 parent::__construct(
'BlockList' );
52 $out->setPageTitle( $this->
msg(
'ipblocklist' ) );
53 $out->addModuleStyles( [
'mediawiki.special' ] );
56 $par = $request->getVal(
'ip', $par );
57 $this->target = trim( $request->getVal(
'wpTarget', $par ) );
59 $this->options = $request->getArray(
'wpOptions', [] );
60 $this->blockType = $request->getVal(
'blockType' );
62 $action = $request->getText(
'action' );
64 if ( $action ==
'unblock' || $action ==
'submit' && $request->wasPosted() ) {
65 # B/C @since 1.18: Unblock interface is now at Special:Unblock
67 $out->redirect(
$title->getFullURL() );
72 # setup BlockListPager here to get the actual default Limit
75 # Just show the block list
79 'label-message' =>
'ipaddressorusername',
85 'type' =>
'multiselect',
86 'options-messages' => [
87 'blocklist-tempblocks' =>
'tempblocks',
88 'blocklist-indefblocks' =>
'indefblocks',
89 'blocklist-userblocks' =>
'userblocks',
90 'blocklist-addressblocks' =>
'addressblocks',
91 'blocklist-rangeblocks' =>
'rangeblocks',
97 if ( $this->
getConfig()->
get(
'EnablePartialBlocks' ) ) {
98 $fields[
'BlockType'] = [
100 'label-message' =>
'blocklist-type',
102 $this->
msg(
'blocklist-type-opt-all' )->escaped() =>
'',
103 $this->
msg(
'blocklist-type-opt-sitewide' )->escaped() =>
'sitewide',
104 $this->
msg(
'blocklist-type-opt-partial' )->escaped() =>
'partial',
106 'name' =>
'blockType',
107 'cssclass' =>
'mw-field-block-type',
112 'type' =>
'limitselect',
113 'label-message' =>
'table_pager_limit_label',
114 'options' => $pager->getLimitSelectList(),
116 'default' => $pager->getLimit(),
117 'cssclass' => $this->
getConfig()->get(
'EnablePartialBlocks' ) ?
118 'mw-field-limit mw-has-field-block-type' :
127 ->setFormIdentifier(
'blocklist' )
128 ->setWrapperLegendMsg(
'ipblocklist-legend' )
129 ->setSubmitTextMsg(
'ipblocklist-submit' )
131 ->displayForm(
false );
142 $db = $this->
getDB();
143 # Is the user allowed to see hidden blocks?
144 if ( !MediaWikiServices::getInstance()
146 ->userHasRight( $this->
getUser(),
'hideuser' )
148 $conds[
'ipb_deleted'] = 0;
151 if ( $this->target !==
'' ) {
152 list(
$target,
$type ) = DatabaseBlock::parseTarget( $this->target );
155 case DatabaseBlock::TYPE_ID:
156 case DatabaseBlock::TYPE_AUTO:
160 case DatabaseBlock::TYPE_IP:
161 case DatabaseBlock::TYPE_RANGE:
163 $conds[] = $db->makeList(
166 DatabaseBlock::getRangeCond( $start, $end )
170 $conds[
'ipb_auto'] = 0;
173 case DatabaseBlock::TYPE_USER:
174 $conds[
'ipb_address'] =
$target->getName();
175 $conds[
'ipb_auto'] = 0;
181 if ( in_array(
'userblocks', $this->options ) ) {
182 $conds[
'ipb_user'] = 0;
184 if ( in_array(
'addressblocks', $this->options ) ) {
185 $conds[] =
"ipb_user != 0 OR ipb_range_end > ipb_range_start";
187 if ( in_array(
'rangeblocks', $this->options ) ) {
188 $conds[] =
"ipb_range_end = ipb_range_start";
191 $hideTemp = in_array(
'tempblocks', $this->options );
192 $hideIndef = in_array(
'indefblocks', $this->options );
193 if ( $hideTemp && $hideIndef ) {
196 } elseif ( $hideTemp ) {
197 $conds[
'ipb_expiry'] = $db->getInfinity();
198 } elseif ( $hideIndef ) {
199 $conds[] =
"ipb_expiry != " . $db->addQuotes( $db->getInfinity() );
202 if ( $this->blockType ===
'sitewide' ) {
203 $conds[
'ipb_sitewide'] = 1;
204 } elseif ( $this->blockType ===
'partial' ) {
205 $conds[
'ipb_sitewide'] = 0;
218 # Check for other blocks, i.e. global/tor blocks
219 $otherBlockLink = [];
220 Hooks::run(
'OtherBlockLogLink', [ &$otherBlockLink, $this->target ] );
222 # Show additional header for the local block only when other blocks exists.
223 # Not necessary in a standard installation without such extensions enabled
224 if ( count( $otherBlockLink ) ) {
226 Html::element(
'h2', [], $this->
msg(
'ipblocklist-localblock' )->text() ) .
"\n"
232 } elseif ( $this->target ) {
233 $out->addWikiMsg(
'ipblocklist-no-results' );
235 $out->addWikiMsg(
'ipblocklist-empty' );
238 if ( count( $otherBlockLink ) ) {
243 $this->
msg(
'ipblocklist-otherblocks', count( $otherBlockLink ) )->parse()
247 foreach ( $otherBlockLink as $link ) {
248 $list .= Html::rawElement(
'li', [], $link ) .
"\n";
250 $out->addHTML( Html::rawElement(
252 [
'class' =>
'mw-ipblocklist-otherblocks' ],
getPageTitle( $subpage=false)
Get a self-referential title object.
msg( $key,... $params)
Wrapper around wfMessage that sets the current context.
getOutput()
Get the OutputPage being used for this instance.
static getTitleFor( $name, $subpage=false, $fragment='')
Get a localised Title object for a specified special page name If you don't need a full Title object,...
getBlockListPager()
Setup a new BlockListPager instance.
An IContextSource implementation which will inherit context from another source but allow individual ...
addHelpLink( $to, $overrideBaseUrl=false)
Adds help link with an icon via page indicators.
getConfig()
Shortcut to get main config object.
showList(BlockListPager $pager)
Show the list of blocked accounts matching the actual filter.
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
setHeaders()
Sets headers - this should be called from the execute() method of all derived classes!
getUser()
Shortcut to get the User executing this instance.
getContext()
Gets the context this SpecialPage is executed in.
Parent class for all special pages.
static parseRange( $range)
Given a string range in a number of formats, return the start and end of the range in hexadecimal.
getRequest()
Get the WebRequest being used for this instance.
getGroupName()
Under which header this special page is listed in Special:SpecialPages See messages 'specialpages-gro...
A special page that lists existing blocks.
static run( $event, array $args=[], $deprecatedVersion=null)
Call hook functions defined in Hooks::register and $wgHooks.
getDB()
Return a IDatabase object for reading.
outputHeader( $summaryMessageKey='')
Outputs a summary message on top of special pages Per default the message key is the canonical name o...