X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialProtectedtitles.php;h=a80f0d0a1c69bb36b4d714494b53c0a26566f9a9;hb=0d81130dd47970a71871dae4ff1f625ff6f33014;hp=390103e12ae4b991e1254fc3e1421dc561f064b4;hpb=b791252b113a453c8e05aa7592998656ea593761;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialProtectedtitles.php b/includes/specials/SpecialProtectedtitles.php index 390103e12a..a80f0d0a1c 100644 --- a/includes/specials/SpecialProtectedtitles.php +++ b/includes/specials/SpecialProtectedtitles.php @@ -1,109 +1,130 @@ setPagetitle( wfMsg( "protectedtitles" ) ); - if ( "" != $msg ) { - $wgOut->setSubtitle( $msg ); - } + function execute( $par ) { + $this->setHeaders(); + $this->outputHeader(); // Purge expired entries on one in every 10 queries if ( !mt_rand( 0, 10 ) ) { Title::purgeExpiredRestrictions(); } - $type = $wgRequest->getVal( $this->IdType ); - $level = $wgRequest->getVal( $this->IdLevel ); - $sizetype = $wgRequest->getVal( 'sizetype' ); - $size = $wgRequest->getIntOrNull( 'size' ); - $NS = $wgRequest->getIntOrNull( 'namespace' ); + $request = $this->getRequest(); + $type = $request->getVal( $this->IdType ); + $level = $request->getVal( $this->IdLevel ); + $sizetype = $request->getVal( 'sizetype' ); + $size = $request->getIntOrNull( 'size' ); + $NS = $request->getIntOrNull( 'namespace' ); $pager = new ProtectedTitlesPager( $this, array(), $type, $level, $NS, $sizetype, $size ); - $wgOut->addHTML( $this->showOptions( $NS, $type, $level, $sizetype, $size ) ); + $this->getOutput()->addHTML( $this->showOptions( $NS, $type, $level ) ); if ( $pager->getNumRows() ) { - $s = $pager->getNavigationBar(); - $s .= ""; - $s .= $pager->getNavigationBar(); + $this->getOutput()->addHTML( + $pager->getNavigationBar() . + '' . + $pager->getNavigationBar() + ); } else { - $s = '

' . wfMsgHtml( 'protectedtitlesempty' ) . '

'; + $this->getOutput()->addWikiMsg( 'protectedtitlesempty' ); } - $wgOut->addHTML( $s ); } /** * Callback function to output a restriction + * + * @return string */ function formatRow( $row ) { - global $wgUser, $wgLang, $wgContLang; - wfProfileIn( __METHOD__ ); - static $skin=null; + static $infinity = null; - if( is_null( $skin ) ) - $skin = $wgUser->getSkin(); + if( is_null( $infinity ) ){ + $infinity = wfGetDB( DB_SLAVE )->getInfinity(); + } $title = Title::makeTitleSafe( $row->pt_namespace, $row->pt_title ); - $link = $skin->makeLinkObj( $title ); + $link = Linker::link( $title ); $description_items = array (); - $protType = wfMsgHtml( 'restriction-level-' . $row->pt_create_perm ); + $protType = $this->msg( 'restriction-level-' . $row->pt_create_perm )->escaped(); $description_items[] = $protType; - $expiry_description = ''; $stxt = ''; - - if ( $row->pt_expiry != 'infinity' && strlen($row->pt_expiry) ) { - $expiry = Block::decodeExpiry( $row->pt_expiry ); - - $expiry_description = wfMsgForContent( 'protect-expiring', $wgLang->timeanddate( $expiry ) ); - - $description_items[] = $expiry_description; + $lang = $this->getLanguage(); + $expiry = strlen( $row->pt_expiry ) ? $lang->formatExpiry( $row->pt_expiry, TS_MW ) : $infinity; + if( $expiry != $infinity ) { + $user = $this->getUser(); + $description_items[] = $this->msg( + 'protect-expiring-local', + $lang->userTimeAndDate( $expiry, $user ), + $lang->userDate( $expiry, $user ), + $lang->userTime( $expiry, $user ) + )->escaped(); } wfProfileOut( __METHOD__ ); - return '
  • ' . wfSpecialList( $link . $stxt, implode( $description_items, ', ' ) ) . "
  • \n"; + return '
  • ' . $lang->specialList( $link, implode( $description_items, ', ' ) ) . "
  • \n"; } /** - * @param $namespace int + * @param $namespace Integer: * @param $type string * @param $level string - * @param $minsize int + * @return string * @private */ - function showOptions( $namespace, $type='edit', $level, $sizetype, $size ) { + function showOptions( $namespace, $type='edit', $level ) { global $wgScript; $action = htmlspecialchars( $wgScript ); - $title = SpecialPage::getTitleFor( 'ProtectedTitles' ); + $title = $this->getTitle(); $special = htmlspecialchars( $title->getPrefixedDBkey() ); return "
    \n" . '
    ' . - Xml::element( 'legend', array(), wfMsg( 'protectedtitles' ) ) . - Xml::hidden( 'title', $special ) . " \n" . - $this->getNamespaceMenu( $namespace ) . " \n" . - $this->getLevelMenu( $level ) . " \n" . - " " . Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n" . + Xml::element( 'legend', array(), $this->msg( 'protectedtitles' )->text() ) . + Html::hidden( 'title', $special ) . " \n" . + $this->getNamespaceMenu( $namespace ) . " \n" . + $this->getLevelMenu( $level ) . " \n" . + " " . Xml::submitButton( $this->msg( 'allpagessubmit' )->text() ) . "\n" . "
    "; } @@ -111,13 +132,21 @@ class ProtectedTitlesForm { * Prepare the namespace filter drop-down; standard namespace * selector, sans the MediaWiki namespace * - * @param mixed $namespace Pre-select namespace + * @param $namespace Mixed: pre-select namespace * @return string */ function getNamespaceMenu( $namespace = null ) { - return Xml::label( wfMsg( 'namespace' ), 'namespace' ) - . ' ' - . Xml::namespaceSelector( $namespace, '' ); + return Html::namespaceSelector( + array( + 'selected' => $namespace, + 'all' => '', + 'label' => $this->msg( 'namespace' )->text() + ), array( + 'name' => 'namespace', + 'id' => 'namespace', + 'class' => 'namespaceselector', + ) + ); } /** @@ -127,13 +156,13 @@ class ProtectedTitlesForm { function getLevelMenu( $pr_level ) { global $wgRestrictionLevels; - $m = array( wfMsg('restriction-level-all') => 0 ); // Temporary array + $m = array( $this->msg( 'restriction-level-all' )->text() => 0 ); // Temporary array $options = array(); // First pass to load the log names foreach( $wgRestrictionLevels as $type ) { if ( $type !='' && $type !='*') { - $text = wfMsg("restriction-level-$type"); + $text = $this->msg( "restriction-level-$type" )->text(); $m[$text] = $type; } } @@ -148,7 +177,7 @@ class ProtectedTitlesForm { } return - Xml::label( wfMsg('restriction-level') , $this->IdLevel ) . ' ' . + Xml::label( $this->msg( 'restriction-level' )->text(), $this->IdLevel ) . ' ' . Xml::tags( 'select', array( 'id' => $this->IdLevel, 'name' => $this->IdLevel ), implode( "\n", $options ) ); @@ -159,7 +188,7 @@ class ProtectedTitlesForm { * @todo document * @ingroup Pager */ -class ProtectedtitlesPager extends AlphabeticPager { +class ProtectedTitlesPager extends AlphabeticPager { public $mForm, $mConds; function __construct( $form, $conds = array(), $type, $level, $namespace, $sizetype='', $size=0 ) { @@ -168,7 +197,7 @@ class ProtectedtitlesPager extends AlphabeticPager { $this->level = $level; $this->namespace = $namespace; $this->size = intval($size); - parent::__construct(); + parent::__construct( $form->getContext() ); } function getStartBody() { @@ -177,7 +206,7 @@ class ProtectedtitlesPager extends AlphabeticPager { $this->mResult->seek( 0 ); $lb = new LinkBatch; - while ( $row = $this->mResult->fetchObject() ) { + foreach ( $this->mResult as $row ) { $lb->add( $row->pt_namespace, $row->pt_title ); } @@ -186,10 +215,20 @@ class ProtectedtitlesPager extends AlphabeticPager { return ''; } + /** + * @return Title + */ + function getTitle() { + return $this->mForm->getTitle(); + } + function formatRow( $row ) { return $this->mForm->formatRow( $row ); } + /** + * @return array + */ function getQueryInfo() { $conds = $this->mConds; $conds[] = 'pt_expiry>' . $this->mDb->addQuotes( $this->mDb->timestamp() ); @@ -209,12 +248,3 @@ class ProtectedtitlesPager extends AlphabeticPager { } } -/** - * Constructor - */ -function wfSpecialProtectedtitles() { - - $ppForm = new ProtectedTitlesForm(); - - $ppForm->showList(); -}