Fix regression in r53316, some more intelligent handling.
authorAndrew Garrett <werdna@users.mediawiki.org>
Wed, 29 Jul 2009 16:20:10 +0000 (16:20 +0000)
committerAndrew Garrett <werdna@users.mediawiki.org>
Wed, 29 Jul 2009 16:20:10 +0000 (16:20 +0000)
includes/HTMLForm.php

index 53cf698..619a069 100644 (file)
@@ -666,6 +666,14 @@ class HTMLSelectOrOtherField extends HTMLTextField {
 
                parent::__construct( $params );
        }
+       
+       static function forceToStringRecursive( $array ) {
+               if ( is_array($array) ) {
+                       return array_map( array( __CLASS__, 'forceToStringRecursive' ), $array);
+               } else {
+                       return strval($array);
+               }
+       }
 
        function getInputHTML( $value ) {
                $valInSelect = false;
@@ -675,9 +683,11 @@ class HTMLSelectOrOtherField extends HTMLTextField {
                                                        HTMLFormField::flattenOptions( $this->mParams['options'] ) );
 
                $selected = $valInSelect ? $value : 'other';
+               
+               $opts = self::forceToStringRecursive( $this->mParams['options'] );
 
                $select = new XmlSelect( $this->mName, $this->mID, $selected );
-               $select->addOptions( array_map( 'strval', $this->mParams['options'] ) );
+               $select->addOptions( $opts );
 
                $select->setAttribute( 'class', 'mw-htmlform-select-or-other' );