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:
Tyler Anthony Romeo 2013-05-21 00:51:23 +00:00 committed by Reedy
parent 04966bceeb
commit 5e7a9c6f8e

View file

@ -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: