wiki.techinc.nl/includes/libs/ParamValidator/SimpleCallbacks.php

90 lines
2.1 KiB
PHP
Raw Normal View History

<?php
namespace Wikimedia\ParamValidator;
use Wikimedia\Message\DataMessageValue;
use Wikimedia\ParamValidator\Util\UploadedFile;
/**
* Simple Callbacks implementation for $_GET/$_POST/$_FILES data
*
* Options array keys used by this class:
* - 'useHighLimits': (bool) Return value from useHighLimits()
*
* @since 1.34
* @unstable
*/
class SimpleCallbacks implements Callbacks {
/** @var (string|string[])[] $_GET/$_POST data */
private $params;
/** @var (array|UploadedFile)[] $_FILES data or UploadedFile instances */
private $files;
/** @var array[] Any recorded conditions */
private $conditions = [];
/**
* @param (string|string[])[] $params Data from $_POST + $_GET
* @param array[] $files Data from $_FILES
*/
public function __construct( array $params, array $files = [] ) {
$this->params = $params;
$this->files = $files;
}
public function hasParam( $name, array $options ) {
return isset( $this->params[$name] );
}
public function getValue( $name, $default, array $options ) {
return $this->params[$name] ?? $default;
}
public function hasUpload( $name, array $options ) {
return isset( $this->files[$name] );
}
public function getUploadedFile( $name, array $options ) {
$file = $this->files[$name] ?? null;
if ( $file && !$file instanceof UploadedFile ) {
$file = new UploadedFile( $file );
$this->files[$name] = $file;
}
// @phan-suppress-next-line PhanTypeMismatchReturnNullable False positive
return $file;
}
public function recordCondition(
DataMessageValue $message, $name, $value, array $settings, array $options
) {
$this->conditions[] = [
'message' => $message,
'name' => $name,
'value' => $value,
'settings' => $settings,
];
}
/**
* Fetch any recorded conditions
* @return array[]
*/
public function getRecordedConditions() {
return $this->conditions;
}
/**
* Clear any recorded conditions
*/
public function clearRecordedConditions() {
$this->conditions = [];
}
public function useHighLimits( array $options ) {
return !empty( $options['useHighLimits'] );
}
}