setPagetitle( wfMsg( "protectedpages" ) ); if ( "" != $msg ) { $wgOut->setSubtitle( $msg ); } // Purge expired entries on one in every 10 queries if ( !mt_rand( 0, 10 ) ) { Title::purgeExpiredRestrictions(); } $type = $wgRequest->getVal( 'type' ); $level = $wgRequest->getVal( 'level' ); $minsize = $wgRequest->getIntOrNull( 'minsize' ); $NS = $wgRequest->getIntOrNull( 'namespace' ); $pager = new ProtectedPagesPager( $this, array(), $type, $level, $NS, $minsize ); $wgOut->addHTML( $this->showOptions( $NS, $type, $level, $minsize ) ); if ( $pager->getNumRows() ) { $s = $pager->getNavigationBar(); $s .= ""; $s .= $pager->getNavigationBar(); } else { $s = '

' . wfMsgHTML( 'protectedpagesempty' ) . '

'; } $wgOut->addHTML( $s ); } /** * Callback function to output a restriction */ function formatRow( $row ) { global $wgUser, $wgLang; wfProfileIn( __METHOD__ ); static $skin=null; if( is_null( $skin ) ) $skin = $wgUser->getSkin(); $title = Title::makeTitleSafe( $row->page_namespace, $row->page_title ); $link = $skin->makeLinkObj( $title ); $description_items = array (); $protType = wfMsgHtml( 'restriction-level-' . $row->pr_level ); $description_items[] = $protType; $expiry_description = ''; $stxt = ''; if ( $row->pr_expiry != 'infinity' && strlen($row->pr_expiry) ) { $expiry = Block::decodeExpiry( $row->pr_expiry ); $expiry_description = wfMsgForContent( 'protect-expiring', $wgLang->timeanddate( $expiry ) ); $description_items[] = $expiry_description; } if (!is_null($size = $row->page_len)) { if ($size == 0) $stxt = ' ' . wfMsgHtml('historyempty') . ''; else $stxt = ' ' . wfMsgHtml('historysize', $wgLang->formatNum( $size ) ) . ''; } wfProfileOut( __METHOD__ ); return '
  • ' . wfSpecialList( $link . $stxt, implode( $description_items, ', ' ) ) . "
  • \n"; } /** * @param $namespace int * @param $type string * @param $level string * @param $minsize int * @private */ function showOptions( $namespace, $type='edit', $level, $minsize ) { global $wgScript; $action = htmlspecialchars( $wgScript ); $title = SpecialPage::getTitleFor( 'ProtectedPages' ); $special = htmlspecialchars( $title->getPrefixedDBkey() ); return "
    \n" . '
    ' . Xml::element( 'legend', array(), wfMsg( 'protectedpages' ) ) . Xml::hidden( 'title', $special ) . "\n" . $this->getNamespaceMenu( $namespace ) . "\n" . $this->getTypeMenu( $type ) . "\n" . $this->getLevelMenu( $level ) . "
    \n" . $this->getSizeLimit( $minsize ) . "\n" . Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n" . "
    "; } function getNamespaceMenu( $namespace=NULL ) { return "" . HTMLnamespaceselector($namespace, ''); } /** * @return string Formatted HTML * @private */ function getSizeLimit( $minsize=0 ) { $out = Xml::input('minsize', 9, $minsize, array( 'id' => 'minsize' ) ); return ": " . $out; } /** * @return string Formatted HTML * @private */ function getTypeMenu( $pr_type ) { global $wgRestrictionTypes, $wgUser; $out = "'; return ": " . $out; } /** * @return string Formatted HTML * @private */ function getLevelMenu( $pr_level ) { global $wgRestrictionLevels, $wgUser; $out = "'; return ": " . $out; } } /** * @todo document * @addtogroup Pager */ class ProtectedPagesPager extends ReverseChronologicalPager { public $mForm, $mConds; function __construct( $form, $conds = array(), $type, $level, $namespace, $minsize ) { $this->mForm = $form; $this->mConds = $conds; $this->type = ( $type ) ? $type : 'edit'; $this->level = $level; $this->namespace = $namespace; $this->minsize = intval($minsize); parent::__construct(); } function getStartBody() { wfProfileIn( __METHOD__ ); # Do a link batch query $this->mResult->seek( 0 ); $lb = new LinkBatch; while ( $row = $this->mResult->fetchObject() ) { $name = str_replace( ' ', '_', $row->page_title ); $lb->add( $row->page_namespace, $name ); } $lb->execute(); wfProfileOut( __METHOD__ ); return ''; } function formatRow( $row ) { $block = new Block; return $this->mForm->formatRow( $row ); } function getQueryInfo() { $conds = $this->mConds; $conds[] = 'pr_expiry>' . $this->mDb->addQuotes( $this->mDb->timestamp() ); $conds[] = 'page_id=pr_page'; $conds[] = 'page_len>=' . $this->minsize; $conds[] = 'pr_type=' . $this->mDb->addQuotes( $this->type ); if ( $this->level ) $conds[] = 'pr_level=' . $this->mDb->addQuotes( $this->level ); if ( !is_null($this->namespace) ) $conds[] = 'page_namespace=' . $this->mDb->addQuotes( $this->namespace ); return array( 'tables' => array( 'page_restrictions', 'page' ), 'fields' => 'max(pr_id) AS pr_id,page_namespace,page_title,page_len,pr_type,pr_level,pr_expiry', 'conds' => $conds, 'options' => array( 'GROUP BY' => 'page_namespace,page_title,pr_level,pr_expiry,page_len,pr_type' ), ); } function getIndexField() { return 'pr_id'; } } /** * Constructor */ function wfSpecialProtectedpages() { list( $limit, $offset ) = wfCheckLimits(); $ppForm = new ProtectedPagesForm(); $ppForm->showList(); } ?>