Merge "Adjust type hints in htmlform related classes"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Fri, 5 Jul 2019 21:32:55 +0000 (21:32 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 5 Jul 2019 21:32:55 +0000 (21:32 +0000)
1  2 
includes/htmlform/HTMLForm.php

@@@ -180,10 -180,12 +180,11 @@@ class HTMLForm extends ContextSource 
        protected $mMessagePrefix;
  
        /** @var HTMLFormField[] */
 -      protected $mFlatFields;
 -
 -      protected $mFieldTree;
 +      protected $mFlatFields = [];
 +      protected $mFieldTree = [];
        protected $mShowReset = false;
        protected $mShowSubmit = true;
+       /** @var string[] */
        protected $mSubmitFlags = [ 'primary', 'progressive' ];
        protected $mShowCancel = false;
        protected $mCancelTarget;
        /**
         * Build a new HTMLForm from an array of field attributes
         *
 -       * @param array $descriptor Array of Field constructs, as described above
 +       * @param array $descriptor Array of Field constructs, as described
 +       *      in the class documentation
         * @param IContextSource|null $context Available since 1.18, will become compulsory in 1.18.
         *     Obviates the need to call $form->setTitle()
         * @param string $messagePrefix A prefix to go in front of default messages
                        $this->displayFormat = 'div';
                }
  
 -              // Expand out into a tree.
 +              $this->addFields( $descriptor );
 +      }
 +
 +      /**
 +       * Add fields to the form
 +       *
 +       * @since 1.34
 +       *
 +       * @param array $descriptor Array of Field constructs, as described
 +       *      in the class documentation
 +       * @return HTMLForm
 +       */
 +      public function addFields( $descriptor ) {
                $loadedDescriptor = [];
 -              $this->mFlatFields = [];
  
                foreach ( $descriptor as $fieldname => $info ) {
 +
                        $section = $info['section'] ?? '';
  
                        if ( isset( $info['type'] ) && $info['type'] === 'file' ) {
                        $this->mFlatFields[$fieldname] = $field;
                }
  
 -              $this->mFieldTree = $loadedDescriptor;
 +              $this->mFieldTree = array_merge( $this->mFieldTree, $loadedDescriptor );
 +
 +              return $this;
        }
  
        /**
         * @since 1.23
         *
         * @param string $fieldname Name of the field
 -       * @param array &$descriptor Input Descriptor, as described above
 +       * @param array &$descriptor Input Descriptor, as described
 +       *      in the class documentation
         *
         * @throws MWException
         * @return string Name of a HTMLFormField subclass
         * Initialise a new Object for the field
         *
         * @param string $fieldname Name of the field
 -       * @param array $descriptor Input Descriptor, as described above
 +       * @param array $descriptor Input Descriptor, as described
 +       *      in the class documentation
         * @param HTMLForm|null $parent Parent instance of HTMLForm
         *
         * @throws MWException