'Options' => [
'type' => 'multiselect',
'options-messages' => [
- 'blocklist-userblocks' => 'userblocks',
'blocklist-tempblocks' => 'tempblocks',
+ 'blocklist-indefblocks' => 'indefblocks',
+ 'blocklist-userblocks' => 'userblocks',
'blocklist-addressblocks' => 'addressblocks',
'blocklist-rangeblocks' => 'rangeblocks',
],
*/
protected function getBlockListPager() {
$conds = [];
+ $db = $this->getDB();
# Is the user allowed to see hidden blocks?
if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
$conds['ipb_deleted'] = 0;
case DatabaseBlock::TYPE_IP:
case DatabaseBlock::TYPE_RANGE:
list( $start, $end ) = IP::parseRange( $target );
- $conds[] = wfGetDB( DB_REPLICA )->makeList(
+ $conds[] = $db->makeList(
[
'ipb_address' => $target,
DatabaseBlock::getRangeCond( $start, $end )
if ( in_array( 'userblocks', $this->options ) ) {
$conds['ipb_user'] = 0;
}
- if ( in_array( 'tempblocks', $this->options ) ) {
- $conds['ipb_expiry'] = 'infinity';
- }
if ( in_array( 'addressblocks', $this->options ) ) {
$conds[] = "ipb_user != 0 OR ipb_range_end > ipb_range_start";
}
$conds[] = "ipb_range_end = ipb_range_start";
}
+ $hideTemp = in_array( 'tempblocks', $this->options );
+ $hideIndef = in_array( 'indefblocks', $this->options );
+ if ( $hideTemp && $hideIndef ) {
+ // If both types are hidden, ensure query doesn't produce any results
+ $conds[] = '1=0';
+ } elseif ( $hideTemp ) {
+ $conds['ipb_expiry'] = $db->getInfinity();
+ } elseif ( $hideIndef ) {
+ $conds[] = "ipb_expiry != " . $db->addQuotes( $db->getInfinity() );
+ }
+
if ( $this->blockType === 'sitewide' ) {
- $conds[] = 'ipb_sitewide = 1';
+ $conds['ipb_sitewide'] = 1;
} elseif ( $this->blockType === 'partial' ) {
- $conds[] = 'ipb_sitewide = 0';
+ $conds['ipb_sitewide'] = 0;
}
return new BlockListPager( $this, $conds );
protected function getGroupName() {
return 'users';
}
+
+ /**
+ * Return a IDatabase object for reading
+ *
+ * @return IDatabase
+ */
+ protected function getDB() {
+ return wfGetDB( DB_REPLICA );
+ }
}
"ipblocklist-legend": "Find a blocked user",
"blocklist-userblocks": "Hide account blocks",
"blocklist-tempblocks": "Hide temporary blocks",
+ "blocklist-indefblocks": "Hide indefinite blocks",
"blocklist-addressblocks": "Hide single IP blocks",
"blocklist-type": "Type:",
"blocklist-type-opt-all": "All",
"ipblocklist-legend": "Used as legend of the form in [[Special:BlockList]].\n\nSee also:\n* {{msg-mw|Ipblocklist-legend}}\n* {{msg-mw|Ipblocklist-submit}}",
"blocklist-userblocks": "Used as the label for the multi-select checkbox in the form on [[Special:BlockList]].\n{{Related|Blocklist-blocks}}",
"blocklist-tempblocks": "Used as the label for the multi-select checkbox in the form on [[Special:BlockList]].\n{{Related|Blocklist-blocks}}",
+ "blocklist-indefblocks": "Used as the label for the multi-select checkbox in the form on [[Special:BlockList]].\n{{Related|Blocklist-blocks}}",
"blocklist-addressblocks": "Used as the label for the multi-select checkbox in the form on [[Special:BlockList]].\n{{Related|Blocklist-blocks}}",
"blocklist-type": "Used as label for dropdown box in [[Special:BlockList]].",
"blocklist-type-opt-all": "Used as option for dropdown box in [[Special:BlockList]]. This is the default option and indicates that \"all\" blocks will be listed\n{{Identical|All}}",