Create ApiBase::requireAtLeastOneParameter helper
Added new ApiBase::requireAtLeastOneParameter() helper method for modules that need one or more of a combination of parameters. The associated help message function has also been added. Change-Id: Iae6649ed503fdbf14b313d0be1a82f3dca8d7162
This commit is contained in:
parent
04966bceeb
commit
5e7a9c6f8e
1 changed files with 32 additions and 0 deletions
|
|
@ -801,6 +801,38 @@ abstract class ApiBase extends ContextSource {
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Die if none of a certain set of parameters is set and not false.
|
||||
* @param array $params of parameter names
|
||||
*/
|
||||
public function requireAtLeastOneParameter( $params ) {
|
||||
$required = func_get_args();
|
||||
array_shift( $required );
|
||||
$p = $this->getModulePrefix();
|
||||
|
||||
$intersection = array_intersect( array_keys( array_filter( $params,
|
||||
array( $this, "parameterNotEmpty" ) ) ), $required );
|
||||
|
||||
if ( count( $intersection ) == 0 ) {
|
||||
$this->dieUsage( "At least one of the parameters {$p}" . implode( ", {$p}", $required ) . ' is required', "{$p}missingparam" );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the possible errors requireAtLeastOneParameter() can die with
|
||||
*
|
||||
* @param $params array
|
||||
* @return array
|
||||
*/
|
||||
public function getRequireAtLeastOneParameterErrorMessages( $params ) {
|
||||
$p = $this->getModulePrefix();
|
||||
$params = implode( ", {$p}", $params );
|
||||
|
||||
return array(
|
||||
array( 'code' => "{$p}missingparam", 'info' => "At least one of the parameters {$p}{$params} is required" ),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $params array
|
||||
* @param bool|string $load Whether load the object's state from the database:
|
||||
|
|
|
|||
Loading…
Reference in a new issue