Merge "preferences: Preserve Status from saveFormData() in submitForm()"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 30 May 2018 19:24:42 +0000 (19:24 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 30 May 2018 19:24:43 +0000 (19:24 +0000)
1  2 
includes/preferences/DefaultPreferencesFactory.php

@@@ -45,7 -45,8 +45,7 @@@ use MWTimestamp
  use OutputPage;
  use Parser;
  use ParserOptions;
 -use PreferencesForm;
 -use PreferencesFormOOUI;
 +use PreferencesFormLegacy;
  use Psr\Log\LoggerAwareTrait;
  use Psr\Log\NullLogger;
  use Skin;
@@@ -1483,12 -1484,12 +1483,12 @@@ class DefaultPreferencesFactory impleme
         * @param IContextSource $context
         * @param string $formClass
         * @param array $remove Array of items to remove
 -       * @return PreferencesForm
 +       * @return HTMLForm
         */
        public function getForm(
                User $user,
                IContextSource $context,
 -              $formClass = PreferencesFormOOUI::class,
 +              $formClass = PreferencesFormLegacy::class,
                array $remove = []
        ) {
                if ( SpecialPreferences::isOouiEnabled( $context ) ) {
                }
  
                /**
 -               * @var $htmlForm PreferencesForm
 +               * @var $htmlForm HTMLForm
                 */
                $htmlForm = new $formClass( $formDescriptor, $context, 'prefs' );
  
                # Used message keys: 'accesskey-preferences-save', 'tooltip-preferences-save'
                $htmlForm->setSubmitTooltip( 'preferences-save' );
                $htmlForm->setSubmitID( 'prefcontrol' );
 -              $htmlForm->setSubmitCallback( function ( array $formData, PreferencesForm $form ) {
 +              $htmlForm->setSubmitCallback( function ( array $formData, HTMLForm $form ) {
                        return $this->submitForm( $formData, $form );
                } );
  
         * Handle the form submission if everything validated properly
         *
         * @param array $formData
 -       * @param PreferencesForm $form
 +       * @param HTMLForm $form
         * @return bool|Status|string
         */
 -      protected function saveFormData( $formData, PreferencesForm $form ) {
 +      protected function saveFormData( $formData, HTMLForm $form ) {
                $user = $form->getModifiedUser();
                $hiddenPrefs = $this->config->get( 'HiddenPrefs' );
                $result = true;
         * @deprecated since 1.31, its inception
         *
         * @param array $formData
 -       * @param PreferencesForm $form
 +       * @param HTMLForm $form
         * @return bool|Status|string
         */
 -      public function legacySaveFormData( $formData, PreferencesForm $form ) {
 +      public function legacySaveFormData( $formData, HTMLForm $form ) {
                return $this->saveFormData( $formData, $form );
        }
  
         * Save the form data and reload the page
         *
         * @param array $formData
 -       * @param PreferencesForm $form
 +       * @param HTMLForm $form
         * @return Status
         */
 -      protected function submitForm( array $formData, PreferencesForm $form ) {
 +      protected function submitForm( array $formData, HTMLForm $form ) {
                $res = $this->saveFormData( $formData, $form );
  
-               if ( $res ) {
+               if ( $res === true ) {
                        $context = $form->getContext();
                        $urlOptions = [];
  
                        if ( $res === 'eauth' ) {
                        $context->getOutput()->redirect( $url );
                }
  
-               return Status::newGood();
+               return ( $res === true ? Status::newGood() : $res );
        }
  
        /**
         * @deprecated since 1.31, its inception
         *
         * @param array $formData
 -       * @param PreferencesForm $form
 +       * @param HTMLForm $form
         * @return Status
         */
 -      public function legacySubmitForm( array $formData, PreferencesForm $form ) {
 +      public function legacySubmitForm( array $formData, HTMLForm $form ) {
                return $this->submitForm( $formData, $form );
        }