diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2006-10-11 18:12:39 +0000 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2006-10-11 18:12:39 +0000 |
commit | 183851b06bd6c52f3cae5375f433da720d410447 (patch) | |
tree | a477257decbf3360127f6739c2f9d0ec57a03d39 /includes/SpecialLockdb.php |
MediaWiki 1.7.1 wiederhergestellt
Diffstat (limited to 'includes/SpecialLockdb.php')
-rw-r--r-- | includes/SpecialLockdb.php | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/includes/SpecialLockdb.php b/includes/SpecialLockdb.php new file mode 100644 index 00000000..38d715be --- /dev/null +++ b/includes/SpecialLockdb.php @@ -0,0 +1,118 @@ +<?php +/** + * + * @package MediaWiki + * @subpackage SpecialPage + */ + +/** + * Constructor + */ +function wfSpecialLockdb() { + global $wgUser, $wgOut, $wgRequest; + + if ( ! $wgUser->isAllowed('siteadmin') ) { + $wgOut->developerRequired(); + return; + } + $action = $wgRequest->getVal( 'action' ); + $f = new DBLockForm(); + + if ( 'success' == $action ) { + $f->showSuccess(); + } else if ( 'submit' == $action && $wgRequest->wasPosted() && + $wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ) ) { + $f->doSubmit(); + } else { + $f->showForm( '' ); + } +} + +/** + * + * @package MediaWiki + * @subpackage SpecialPage + */ +class DBLockForm { + var $reason = ''; + + function DBLockForm() { + global $wgRequest; + $this->reason = $wgRequest->getText( 'wpLockReason' ); + } + + function showForm( $err ) { + global $wgOut, $wgUser; + + $wgOut->setPagetitle( wfMsg( 'lockdb' ) ); + $wgOut->addWikiText( wfMsg( 'lockdbtext' ) ); + + if ( "" != $err ) { + $wgOut->setSubtitle( wfMsg( 'formerror' ) ); + $wgOut->addHTML( '<p class="error">' . htmlspecialchars( $err ) . "</p>\n" ); + } + $lc = htmlspecialchars( wfMsg( 'lockconfirm' ) ); + $lb = htmlspecialchars( wfMsg( 'lockbtn' ) ); + $elr = htmlspecialchars( wfMsg( 'enterlockreason' ) ); + $titleObj = Title::makeTitle( NS_SPECIAL, 'Lockdb' ); + $action = $titleObj->escapeLocalURL( 'action=submit' ); + $token = htmlspecialchars( $wgUser->editToken() ); + + $wgOut->addHTML( <<<END +<form id="lockdb" method="post" action="{$action}"> +{$elr}: +<textarea name="wpLockReason" rows="10" cols="60" wrap="virtual"></textarea> +<table border="0"> + <tr> + <td align="right"> + <input type="checkbox" name="wpLockConfirm" /> + </td> + <td align="left">{$lc}</td> + </tr> + <tr> + <td> </td> + <td align="left"> + <input type="submit" name="wpLock" value="{$lb}" /> + </td> + </tr> +</table> +<input type="hidden" name="wpEditToken" value="{$token}" /> +</form> +END +); + + } + + function doSubmit() { + global $wgOut, $wgUser, $wgLang, $wgRequest; + global $wgReadOnlyFile; + + if ( ! $wgRequest->getCheck( 'wpLockConfirm' ) ) { + $this->showForm( wfMsg( 'locknoconfirm' ) ); + return; + } + $fp = fopen( $wgReadOnlyFile, 'w' ); + + if ( false === $fp ) { + $wgOut->showFileNotFoundError( $wgReadOnlyFile ); + return; + } + fwrite( $fp, $this->reason ); + fwrite( $fp, "\n<p>(by " . $wgUser->getName() . " at " . + $wgLang->timeanddate( wfTimestampNow() ) . ")\n" ); + fclose( $fp ); + + $titleObj = Title::makeTitle( NS_SPECIAL, 'Lockdb' ); + $wgOut->redirect( $titleObj->getFullURL( 'action=success' ) ); + } + + function showSuccess() { + global $wgOut; + + $wgOut->setPagetitle( wfMsg( 'lockdb' ) ); + $wgOut->setSubtitle( wfMsg( 'lockdbsuccesssub' ) ); + $wgOut->addWikiText( wfMsg( 'lockdbsuccesstext' ) ); + } +} + +?> |