const META_TYPE = '_type';
/**
- * Key for the metatata item whose value specifies the name used for the
+ * Key for the metadata item whose value specifies the name used for the
* kvp key in the alternative output format with META_TYPE 'kvp' or
* 'BCkvp', i.e. the "name" in <container><item name="key">value</item></container>.
* Value is string.
private $errorFormatter;
// Deprecated fields
- private $isRawMode, $checkingSize, $mainForContinuation;
+ private $checkingSize, $mainForContinuation;
/**
* @param int|bool $maxSize Maximum result "size", or false for no limit
}
$this->maxSize = $maxSize;
- $this->isRawMode = false;
$this->checkingSize = true;
$this->reset();
}
* @param int $flags Zero or more OR-ed flags like OVERRIDE | ADD_ON_TOP.
*/
public static function setValue( array &$arr, $name, $value, $flags = 0 ) {
- if ( !( $flags & ApiResult::NO_VALIDATE ) ) {
+ if ( ( $flags & ApiResult::NO_VALIDATE ) !== ApiResult::NO_VALIDATE ) {
$value = self::validateValue( $value );
}
$arr = &$this->path( $path, ( $flags & ApiResult::ADD_ON_TOP ) ? 'prepend' : 'append' );
if ( $this->checkingSize && !( $flags & ApiResult::NO_SIZE_CHECK ) ) {
+ // self::valueSize needs the validated value. Then flag
+ // to not re-validate later.
+ $value = self::validateValue( $value );
+ $flags |= ApiResult::NO_VALIDATE;
+
$newsize = $this->size + self::valueSize( $value );
if ( $this->maxSize !== false && $newsize > $this->maxSize ) {
/// @todo Add i18n message when replacing calls to ->setWarning()
* or the sum of the strlen()s of the elements if the item is an array.
* @note Once the deprecated public self::size is removed, we can rename
* this back to a less awkward name.
- * @param mixed $value
+ * @param mixed $value Validated value (see self::validateValue())
* @return int
*/
private static function valueSize( $value ) {
$s = 0;
- if ( is_array( $value ) ||
- is_object( $value ) && !is_callable( array( $value, '__toString' ) )
- ) {
+ if ( is_array( $value ) ) {
foreach ( $value as $k => $v ) {
if ( !self::isMetadataKey( $s ) ) {
$s += self::valueSize( $v );
*/
/**
- * Call this function when special elements such as '_element'
- * are needed by the formatter, for example in XML printing.
+ * Formerly used to enable/disable "raw mode".
* @deprecated since 1.25, you shouldn't have been using it in the first place
* @since 1.23 $flag parameter added
* @param bool $flag Set the raw mode flag to this state
*/
public function setRawMode( $flag = true ) {
- // Can't wfDeprecated() here, since we need to set this flag from
- // ApiMain for BC with stuff using self::getIsRawMode as
- // "self::getIsXMLMode".
- $this->isRawMode = $flag;
+ wfDeprecated( __METHOD__, '1.25' );
}
/**
- * Returns true whether the formatter requested raw data.
+ * Returns true, the equivalent of "raw mode" is always enabled now
* @deprecated since 1.25, you shouldn't have been using it in the first place
* @return bool
*/
public function getIsRawMode() {
- /// @todo: After Wikibase stops calling this, warn
- return $this->isRawMode;
+ wfDeprecated( __METHOD__, '1.25' );
+ return true;
}
/**
return $this->getResultData( null, array(
'BC' => array(),
'Types' => array(),
- 'Strip' => $this->isRawMode ? 'bc' : 'all',
+ 'Strip' => 'all',
) );
}
*/
public static function setElement( &$arr, $name, $value, $flags = 0 ) {
wfDeprecated( __METHOD__, '1.25' );
- return self::setValue( $arr, $name, $value, $flags );
+ self::setValue( $arr, $name, $value, $flags );
}
/**
*/
public static function size( $value ) {
wfDeprecated( __METHOD__, '1.25' );
- return self::valueSize( $value );
+ return self::valueSize( self::validateValue( $value ) );
}
/**