[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/includes/specials/ -> SpecialPreferences.php (source)

   1  <?php
   2  /**
   3   * Implements Special:Preferences
   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 special page that allows users to change their preferences
  26   *
  27   * @ingroup SpecialPage
  28   */
  29  class SpecialPreferences extends SpecialPage {
  30  	function __construct() {
  31          parent::__construct( 'Preferences' );
  32      }
  33  
  34  	public function execute( $par ) {
  35          $this->setHeaders();
  36          $this->outputHeader();
  37          $out = $this->getOutput();
  38          $out->disallowUserJs(); # Prevent hijacked user scripts from sniffing passwords etc.
  39  
  40          $this->requireLogin( 'prefsnologintext2' );
  41          $this->checkReadOnly();
  42  
  43          if ( $par == 'reset' ) {
  44              $this->showResetForm();
  45  
  46              return;
  47          }
  48  
  49          $out->addModules( 'mediawiki.special.preferences' );
  50  
  51          if ( $this->getRequest()->getCheck( 'success' ) ) {
  52              $out->wrapWikiMsg(
  53                  "<div class=\"successbox\">\n$1\n</div>",
  54                  'savedprefs'
  55              );
  56          }
  57  
  58          $htmlForm = Preferences::getFormObject( $this->getUser(), $this->getContext() );
  59          $htmlForm->setSubmitCallback( array( 'Preferences', 'tryUISubmit' ) );
  60  
  61          $htmlForm->show();
  62      }
  63  
  64  	private function showResetForm() {
  65          if ( !$this->getUser()->isAllowed( 'editmyoptions' ) ) {
  66              throw new PermissionsError( 'editmyoptions' );
  67          }
  68  
  69          $this->getOutput()->addWikiMsg( 'prefs-reset-intro' );
  70  
  71          $context = new DerivativeContext( $this->getContext() );
  72          $context->setTitle( $this->getPageTitle( 'reset' ) ); // Reset subpage
  73          $htmlForm = new HTMLForm( array(), $context, 'prefs-restore' );
  74  
  75          $htmlForm->setSubmitTextMsg( 'restoreprefs' );
  76          $htmlForm->setSubmitDestructive();
  77          $htmlForm->setSubmitCallback( array( $this, 'submitReset' ) );
  78          $htmlForm->suppressReset();
  79  
  80          $htmlForm->show();
  81      }
  82  
  83  	public function submitReset( $formData ) {
  84          if ( !$this->getUser()->isAllowed( 'editmyoptions' ) ) {
  85              throw new PermissionsError( 'editmyoptions' );
  86          }
  87  
  88          $user = $this->getUser();
  89          $user->resetOptions( 'all', $this->getContext() );
  90          $user->saveSettings();
  91  
  92          $url = $this->getPageTitle()->getFullURL( 'success' );
  93  
  94          $this->getOutput()->redirect( $url );
  95  
  96          return true;
  97      }
  98  
  99  	protected function getGroupName() {
 100          return 'users';
 101      }
 102  }


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1