*
* @since 1.17
*
- * @param mixed ... Parameters as strings, or a single argument that is
- * an array of strings.
+ * @param mixed ... Parameters as strings or arrays from
+ * Message::numParam() and the like, or a single array of parameters.
*
* @return Message $this
*/
public function params( /*...*/ ) {
$args = func_get_args();
- if ( isset( $args[0] ) && is_array( $args[0] ) ) {
- $args = $args[0];
+
+ // If $args has only one entry and it's an array, then it's either a
+ // non-varargs call or it happens to be a call with just a single
+ // "special" parameter. Since the "special" parameters don't have any
+ // numeric keys, we'll test that to differentiate the cases.
+ if ( count( $args ) === 1 && isset( $args[0] ) && is_array( $args[0] ) ) {
+ if ( $args[0] === [] ) {
+ $args = [];
+ } else {
+ foreach ( $args[0] as $key => $value ) {
+ if ( is_int( $key ) ) {
+ $args = $args[0];
+ break;
+ }
+ }
+ }
}
- $args_values = array_values( $args );
- $this->parameters = array_merge( $this->parameters, $args_values );
+
+ $this->parameters = array_merge( $this->parameters, array_values( $args ) );
return $this;
}
/**
* @since 1.22
*
- * @param number $period
+ * @param int $period
*
- * @return number[] Array with a single "period" key.
+ * @return int[] Array with a single "period" key.
*/
public static function timeperiodParam( $period ) {
return [ 'period' => $period ];
*/
protected function formatListParam( array $params, $listType, $format ) {
if ( !isset( self::$listTypeMap[$listType] ) ) {
- $warning = 'Invalid list type for message "' . $this->getKey() . '": ' .
- htmlspecialchars( serialize( $param ) );
+ $warning = 'Invalid list type for message "' . $this->getKey() . '": '
+ . htmlspecialchars( $listType )
+ . ' (params are ' . htmlspecialchars( serialize( $params ) ) . ')';
trigger_error( $warning, E_USER_WARNING );
$e = new Exception;
wfDebugLog( 'Bug58676', $warning . "\n" . $e->getTraceAsString() );