From: Reedy Date: Tue, 18 Feb 2014 01:30:13 +0000 (+0000) Subject: Refactor out HTMLFormField class and type normalisation code X-Git-Tag: 1.31.0-rc.0~16871 X-Git-Url: http://git.cyclocoop.org/%24image?a=commitdiff_plain;h=bec75cc99f52c8f2fd406f359cccc4d7c44cd253;p=lhc%2Fweb%2Fwiklou.git Refactor out HTMLFormField class and type normalisation code Also include fieldname when exceptioning over bad descriptor class Change-Id: Ia612453625fdeb611875d5ffc724cef2abe4f776 --- diff --git a/includes/htmlform/HTMLForm.php b/includes/htmlform/HTMLForm.php index 422fa8a311..43c1a940d2 100644 --- a/includes/htmlform/HTMLForm.php +++ b/includes/htmlform/HTMLForm.php @@ -306,15 +306,22 @@ class HTMLForm extends ContextSource { } /** - * Initialise a new Object for the field + * Get the HTMLFormField subclass for this descriptor. + * + * The descriptor can be passed either 'class' which is the name of + * a HTMLFormField subclass, or a shorter 'type' which is an alias. + * This makes sure the 'class' is always set, and also is returned by + * this function for ease. * - * @param $fieldname string - * @param string $descriptor input Descriptor, as described above + * @since 1.23 + * + * @param string $fieldname Name of the field + * @param array $descriptor Input Descriptor, as described above * * @throws MWException - * @return HTMLFormField subclass + * @return string Name of a HTMLFormField subclass */ - static function loadInputFromParameters( $fieldname, $descriptor ) { + public static function getClassFromDescriptor( $fieldname, &$descriptor ) { if ( isset( $descriptor['class'] ) ) { $class = $descriptor['class']; } elseif ( isset( $descriptor['type'] ) ) { @@ -325,8 +332,22 @@ class HTMLForm extends ContextSource { } if ( !$class ) { - throw new MWException( "Descriptor with no class: " . print_r( $descriptor, true ) ); + throw new MWException( "Descriptor with no class for $fieldname: " . print_r( $descriptor, true ) ); } + return $class; + } + + /** + * Initialise a new Object for the field + * + * @param string $fieldname Name of the field + * @param array $descriptor Input Descriptor, as described above + * + * @throws MWException + * @return HTMLFormField subclass + */ + public static function loadInputFromParameters( $fieldname, $descriptor ) { + $class = self::getClassFromDescriptor( $fieldname, $descriptor ); $descriptor['fieldname'] = $fieldname;