| [ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Implements Special:Lockdb 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with this program; if not, write to the Free Software Foundation, Inc., 17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 * http://www.gnu.org/copyleft/gpl.html 19 * 20 * @file 21 * @ingroup SpecialPage 22 */ 23 24 /** 25 * A form to make the database readonly (eg for maintenance purposes). 26 * 27 * @ingroup SpecialPage 28 */ 29 class SpecialLockdb extends FormSpecialPage { 30 protected $reason = ''; 31 32 public function __construct() { 33 parent::__construct( 'Lockdb', 'siteadmin' ); 34 } 35 36 public function requiresWrite() { 37 return false; 38 } 39 40 public function checkExecutePermissions( User $user ) { 41 parent::checkExecutePermissions( $user ); 42 # If the lock file isn't writable, we can do sweet bugger all 43 if ( !is_writable( dirname( $this->getConfig()->get( 'ReadOnlyFile' ) ) ) ) { 44 throw new ErrorPageError( 'lockdb', 'lockfilenotwritable' ); 45 } 46 } 47 48 protected function getFormFields() { 49 return array( 50 'Reason' => array( 51 'type' => 'textarea', 52 'rows' => 4, 53 'vertical-label' => true, 54 'label-message' => 'enterlockreason', 55 ), 56 'Confirm' => array( 57 'type' => 'toggle', 58 'label-message' => 'lockconfirm', 59 ), 60 ); 61 } 62 63 protected function alterForm( HTMLForm $form ) { 64 $form->setWrapperLegend( false ); 65 $form->setHeaderText( $this->msg( 'lockdbtext' )->parseAsBlock() ); 66 $form->setSubmitTextMsg( 'lockbtn' ); 67 } 68 69 public function onSubmit( array $data ) { 70 global $wgContLang; 71 72 if ( !$data['Confirm'] ) { 73 return Status::newFatal( 'locknoconfirm' ); 74 } 75 76 wfSuppressWarnings(); 77 $fp = fopen( $this->getConfig()->get( 'ReadOnlyFile' ), 'w' ); 78 wfRestoreWarnings(); 79 80 if ( false === $fp ) { 81 # This used to show a file not found error, but the likeliest reason for fopen() 82 # to fail at this point is insufficient permission to write to the file...good old 83 # is_writable() is plain wrong in some cases, it seems... 84 return Status::newFatal( 'lockfilenotwritable' ); 85 } 86 fwrite( $fp, $data['Reason'] ); 87 $timestamp = wfTimestampNow(); 88 fwrite( $fp, "\n<p>" . $this->msg( 'lockedbyandtime', 89 $this->getUser()->getName(), 90 $wgContLang->date( $timestamp, false, false ), 91 $wgContLang->time( $timestamp, false, false ) 92 )->inContentLanguage()->text() . "</p>\n" ); 93 fclose( $fp ); 94 95 return Status::newGood(); 96 } 97 98 public function onSuccess() { 99 $out = $this->getOutput(); 100 $out->addSubtitle( $this->msg( 'lockdbsuccesssub' ) ); 101 $out->addWikiMsg( 'lockdbsuccesstext' ); 102 } 103 104 protected function getGroupName() { 105 return 'wiki'; 106 } 107 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |