<?php
-
/**
- * Created on Sep 5, 2006
- *
* API for MediaWiki 1.8+
*
+ * Created on Sep 5, 2006
+ *
* Copyright © 2006, 2010 Yuri Astrakhan <Firstname><Lastname>@gmail.com
*
* This program is free software; you can redistribute it and/or modify
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
*/
/**
if ( $deprecated ) {
$desc = "DEPRECATED! $desc";
}
-
+
$required = isset( $paramSettings[self::PARAM_REQUIRED] ) ?
$paramSettings[self::PARAM_REQUIRED] : false;
if ( $required ) {
if ( $params ) { // getFinalParams() can return false
foreach ( $params as $paramName => $paramSettings ) {
- $results[$paramName] = $this->getParameterFromSettings(
+ $results[$paramName] = $this->getParameterFromSettings(
$paramName, $paramSettings, $parseLimit );
}
}
$this->mParamCache[$parseLimit] = $results;
}
-
- $allparams = $this->getAllowedParams();
- foreach( $this->mParamCache[$parseLimit] as $param => $val ) {
- if( !isset( $allparams[$param][ApiBase::PARAM_REQUIRED] ) ) {
- $this->dieUsageMsg( array( 'missingparam', $param ) );
- }
- }
-
return $this->mParamCache[$parseLimit];
}
* @returns mixed
*/
protected function getWatchlistValue ( $watchlist, $titleObj, $userOption = null ) {
+ global $wgUser;
switch ( $watchlist ) {
case 'watch':
return true;
return false;
case 'preferences':
- global $wgUser;
# If the user is already watching, don't bother checking
if ( $titleObj->userIsWatching() ) {
return null;
$type = gettype( $paramSettings );
$dupes = false;
$deprecated = false;
+ $required = false;
} else {
$default = isset( $paramSettings[self::PARAM_DFLT] ) ? $paramSettings[self::PARAM_DFLT] : null;
$multi = isset( $paramSettings[self::PARAM_ISMULTI] ) ? $paramSettings[self::PARAM_ISMULTI] : false;
$type = isset( $paramSettings[self::PARAM_TYPE] ) ? $paramSettings[self::PARAM_TYPE] : null;
$dupes = isset( $paramSettings[self::PARAM_ALLOW_DUPLICATES] ) ? $paramSettings[self::PARAM_ALLOW_DUPLICATES] : false;
$deprecated = isset( $paramSettings[self::PARAM_DEPRECATED] ) ? $paramSettings[self::PARAM_DEPRECATED] : false;
+ $required = isset( $paramSettings[self::PARAM_REQUIRED] ) ? $paramSettings[self::PARAM_REQUIRED] : false;
// When type is not given, and no choices, the type is the same as $default
if ( !isset( $type ) ) {
switch ( $type ) {
case 'NULL': // nothing to do
break;
- case 'string': // nothing to do
+ case 'string':
+ if ( $required && $value === '' ) {
+ $this->dieUsageMsg( array( 'missingparam', $paramName ) );
+ }
+
break;
case 'integer': // Force everything using intval() and optionally validate limits
break;
case 'user':
if ( !is_array( $value ) ) {
- $value = array( $value );
- }
+ $value = array( $value );
+ }
foreach ( $value as $key => $val ) {
$title = Title::makeTitleSafe( NS_USER, $val );
}
if ( !$multi ) {
- $value = $value[0];
- }
- break;
+ $value = $value[0];
+ }
+ break;
default:
ApiBase::dieDebug( __METHOD__, "Param $encParamName's type is unknown - $type" );
}
if ( $deprecated && $value !== false ) {
$this->setWarning( "The $encParamName parameter has been deprecated." );
}
+ } else if ( $required ) {
+ $this->dieUsageMsg( array( 'missingparam', $paramName ) );
}
return $value;
public function getPossibleErrors() {
$ret = array();
+ $params = $this->getFinalParams();
+ if ( $params ) {
+ foreach ( $params as $paramName => $paramSettings ) {
+ if ( isset( $paramSettings[ApiBase::PARAM_REQUIRED] ) ) {
+ $ret[] = array( 'missingparam', $paramName );
+ }
+ }
+ }
+
if ( $this->mustBePosted() ) {
$ret[] = array( 'mustbeposted', $this->getModuleName() );
}