From fe05f85a62275e84d61edf3576cf3f03e262d56a Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Thu, 14 Nov 2013 13:40:22 +0100 Subject: [PATCH] Update formatting on API classes Change-Id: Ifd18a8de1d2580b723a5b91e8d202818fd97795a --- includes/api/ApiBase.php | 43 +++++++++++++++++++++------ includes/api/ApiComparePages.php | 2 ++ includes/api/ApiCreateAccount.php | 3 ++ includes/api/ApiDelete.php | 3 ++ includes/api/ApiEditPage.php | 36 +++++++++++----------- includes/api/ApiFeedContributions.php | 7 +++-- includes/api/ApiFeedWatchlist.php | 4 ++- includes/api/ApiFileRevert.php | 2 -- includes/api/ApiFormatBase.php | 8 ++--- includes/api/ApiFormatJson.php | 1 + 10 files changed, 74 insertions(+), 35 deletions(-) diff --git a/includes/api/ApiBase.php b/includes/api/ApiBase.php index 6be044c70f..f776e6d447 100644 --- a/includes/api/ApiBase.php +++ b/includes/api/ApiBase.php @@ -30,10 +30,10 @@ * The class functions are divided into several areas of functionality: * * Module parameters: Derived classes can define getAllowedParams() to specify - * which parameters to expect, how to parse and validate them. + * which parameters to expect, how to parse and validate them. * * Profiling: various methods to allow keeping tabs on various tasks and their - * time costs + * time costs * * Self-documentation: code to allow the API to document its own state * @@ -124,6 +124,7 @@ abstract class ApiBase extends ContextSource { */ public function getVersion() { wfDeprecated( __METHOD__, '1.21' ); + return ''; } @@ -194,6 +195,7 @@ abstract class ApiBase extends ContextSource { if ( $this->isMain() ) { ApiBase::dieDebug( __METHOD__, 'base method was called on main module. ' ); } + return $this->getMain()->getResult(); } @@ -216,6 +218,7 @@ abstract class ApiBase extends ContextSource { */ public function createContext() { wfDeprecated( __METHOD__, '1.19' ); + return new DerivativeContext( $this->getContext() ); } @@ -293,7 +296,8 @@ abstract class ApiBase extends ContextSource { $msg .= "\nThis module only accepts POST requests"; } if ( $this->isReadMode() || $this->isWriteMode() || - $this->mustBePosted() ) { + $this->mustBePosted() + ) { $msg .= "\n"; } @@ -359,8 +363,10 @@ abstract class ApiBase extends ContextSource { $msg = ' '; } $msg .= implode( $prefix, $input ) . "\n"; + return $msg; } + return ''; } @@ -479,9 +485,10 @@ abstract class ApiBase extends ContextSource { $isArray = is_array( $type ); if ( !$isArray - || $isArray && count( $type ) > self::LIMIT_SML1 ) { + || $isArray && count( $type ) > self::LIMIT_SML1 + ) { $desc .= $paramPrefix . "Maximum number of values " . - self::LIMIT_SML1 . " (" . self::LIMIT_SML2 . " for bots)"; + self::LIMIT_SML1 . " (" . self::LIMIT_SML2 . " for bots)"; } } } @@ -493,8 +500,8 @@ abstract class ApiBase extends ContextSource { $msg .= sprintf( " %-19s - %s\n", $this->encodeParamName( $paramName ), $desc ); } - return $msg; + return $msg; } else { return false; } @@ -555,6 +562,7 @@ abstract class ApiBase extends ContextSource { public function getFinalParams( $flags = 0 ) { $params = $this->getAllowedParams( $flags ); wfRunHooks( 'APIGetAllowedParams', array( &$this, &$params, $flags ) ); + return $params; } @@ -567,6 +575,7 @@ abstract class ApiBase extends ContextSource { public function getFinalParamDescription() { $desc = $this->getParamDescription(); wfRunHooks( 'APIGetParamDescription', array( &$this, &$desc ) ); + return $desc; } @@ -599,6 +608,7 @@ abstract class ApiBase extends ContextSource { public function getFinalResultProperties() { $properties = $this->getResultProperties(); wfRunHooks( 'APIGetResultProperties', array( $this, &$properties ) ); + return $properties; } @@ -624,6 +634,7 @@ abstract class ApiBase extends ContextSource { public function getFinalDescription() { $desc = $this->getDescription(); wfRunHooks( 'APIGetDescription', array( &$this, &$desc ) ); + return $desc; } @@ -660,6 +671,7 @@ abstract class ApiBase extends ContextSource { } $this->mParamCache[$parseLimit] = $results; } + return $this->mParamCache[$parseLimit]; } @@ -672,6 +684,7 @@ abstract class ApiBase extends ContextSource { protected function getParameter( $paramName, $parseLimit = true ) { $params = $this->getFinalParams(); $paramSettings = $params[$paramName]; + return $this->getParameterFromSettings( $paramName, $paramSettings, $parseLimit ); } @@ -810,6 +823,7 @@ abstract class ApiBase extends ContextSource { */ public static function getValidNamespaces() { wfDeprecated( __METHOD__, '1.17' ); + return MWNamespace::getValidNamespaces(); } @@ -818,7 +832,7 @@ abstract class ApiBase extends ContextSource { * @param string $watchlist Valid values: 'watch', 'unwatch', 'preferences', 'nochange' * @param $titleObj Title the page under consideration * @param string $userOption The user option to consider when $watchlist=preferences. - * If not set will use watchdefault always and watchcreations if $titleObj doesn't exist. + * If not set will use watchdefault always and watchcreations if $titleObj doesn't exist. * @return bool */ protected function getWatchlistValue( $watchlist, $titleObj, $userOption = null ) { @@ -842,6 +856,7 @@ abstract class ApiBase extends ContextSource { return $this->getUser()->getBoolOption( 'watchdefault' ) || $this->getUser()->getBoolOption( 'watchcreations' ) && !$titleObj->exists(); } + # Watch the article based on the user preference return $this->getUser()->getBoolOption( $userOption ); @@ -964,7 +979,7 @@ abstract class ApiBase extends ContextSource { $min = isset( $paramSettings[self::PARAM_MIN] ) ? $paramSettings[self::PARAM_MIN] : null; $max = isset( $paramSettings[self::PARAM_MAX] ) ? $paramSettings[self::PARAM_MAX] : null; $enforceLimits = isset( $paramSettings[self::PARAM_RANGE_ENFORCE] ) - ? $paramSettings[self::PARAM_RANGE_ENFORCE] : false; + ? $paramSettings[self::PARAM_RANGE_ENFORCE] : false; if ( is_array( $value ) ) { $value = array_map( 'intval', $value ); @@ -1067,7 +1082,7 @@ abstract class ApiBase extends ContextSource { // This is a bit awkward, but we want to avoid calling canApiHighLimits() because it unstubs $wgUser $valuesList = explode( '|', $value, self::LIMIT_SML2 + 1 ); $sizeLimit = count( $valuesList ) > self::LIMIT_SML1 && $this->mMainModule->canApiHighLimits() ? - self::LIMIT_SML2 : self::LIMIT_SML1; + self::LIMIT_SML2 : self::LIMIT_SML1; if ( self::truncateArray( $valuesList, $sizeLimit ) ) { $this->setWarning( "Too many values supplied for parameter '$valueName': the limit is $sizeLimit" ); @@ -1153,6 +1168,7 @@ abstract class ApiBase extends ContextSource { if ( $unixTimestamp === false ) { $this->dieUsage( "Invalid value '$value' for timestamp parameter $encParamName", "badtimestamp_{$encParamName}" ); } + return wfTimestamp( TS_MW, $unixTimestamp ); } @@ -1167,6 +1183,7 @@ abstract class ApiBase extends ContextSource { if ( $title === null ) { $this->dieUsage( "Invalid value '$value' for user parameter $encParamName", "baduser_{$encParamName}" ); } + return $title->getText(); } @@ -1196,6 +1213,7 @@ abstract class ApiBase extends ContextSource { array_pop( $arr ); $modified = true; } + return $modified; } @@ -1521,6 +1539,7 @@ abstract class ApiBase extends ContextSource { public function isReadMode() { return true; } + /** * Indicates whether this module requires write mode * @return bool @@ -1584,6 +1603,7 @@ abstract class ApiBase extends ContextSource { } $user = $this->getUser(); } + return $user; } @@ -1656,6 +1676,7 @@ abstract class ApiBase extends ContextSource { public function getFinalPossibleErrors() { $possibleErrors = $this->getPossibleErrors(); wfRunHooks( 'APIGetPossibleErrors', array( $this, &$possibleErrors ) ); + return $possibleErrors; } @@ -1674,6 +1695,7 @@ abstract class ApiBase extends ContextSource { $ret[] = $this->parseMsg( $row ); } } + return $ret; } @@ -1730,6 +1752,7 @@ abstract class ApiBase extends ContextSource { if ( $this->mTimeIn !== 0 ) { ApiBase::dieDebug( __METHOD__, 'called without calling profileOut() first' ); } + return $this->mModuleTime; } @@ -1779,6 +1802,7 @@ abstract class ApiBase extends ContextSource { if ( $this->mDBTimeIn !== 0 ) { ApiBase::dieDebug( __METHOD__, 'called without calling profileDBOut() first' ); } + return $this->mDBTime; } @@ -1792,6 +1816,7 @@ abstract class ApiBase extends ContextSource { $this->mSlaveDB = wfGetDB( DB_SLAVE, 'api' ); $this->profileDBOut(); } + return $this->mSlaveDB; } diff --git a/includes/api/ApiComparePages.php b/includes/api/ApiComparePages.php index 1e35c349cc..79a472cda6 100644 --- a/includes/api/ApiComparePages.php +++ b/includes/api/ApiComparePages.php @@ -88,12 +88,14 @@ class ApiComparePages extends ApiBase { if ( !$title || $title->isExternal() ) { $this->dieUsageMsg( array( 'invalidtitle', $titleText ) ); } + return $title->getLatestRevID(); } elseif ( $titleId ) { $title = Title::newFromID( $titleId ); if ( !$title ) { $this->dieUsageMsg( array( 'nosuchpageid', $titleId ) ); } + return $title->getLatestRevID(); } $this->dieUsage( 'inputneeded', 'A title, a page ID, or a revision number is needed for both the from and the to parameters' ); diff --git a/includes/api/ApiCreateAccount.php b/includes/api/ApiCreateAccount.php index 0e752c5619..f25f5aeb9c 100644 --- a/includes/api/ApiCreateAccount.php +++ b/includes/api/ApiCreateAccount.php @@ -172,6 +172,7 @@ class ApiCreateAccount extends ApiBase { public function getAllowedParams() { global $wgEmailConfirmToEdit; + return array( 'name' => array( ApiBase::PARAM_TYPE => 'user', @@ -196,6 +197,7 @@ class ApiCreateAccount extends ApiBase { public function getParamDescription() { $p = $this->getModulePrefix(); + return array( 'name' => 'Username', 'password' => "Password (ignored if {$p}mailpassword is set)", @@ -280,6 +282,7 @@ class ApiCreateAccount extends ApiBase { 'code' => 'passwordtooshort', 'info' => wfMessage( 'passwordtooshort', $wgMinimalPasswordLength )->inLanguage( 'en' )->useDatabase( false )->parse() ); + return $errors; } diff --git a/includes/api/ApiDelete.php b/includes/api/ApiDelete.php index aea10482be..21264bcbb1 100644 --- a/includes/api/ApiDelete.php +++ b/includes/api/ApiDelete.php @@ -121,6 +121,7 @@ class ApiDelete extends ApiBase { } $error = ''; + // Luckily, Article.php provides a reusable delete function that does the hard work for us return $page->doDeleteArticleReal( $reason, false, 0, true, $error ); } @@ -159,6 +160,7 @@ class ApiDelete extends ApiBase { if ( is_null( $reason ) ) { // Log and RC don't like null reasons $reason = ''; } + return FileDeleteForm::doDelete( $title, $file, $oldimage, $reason, $suppress, $user ); } @@ -204,6 +206,7 @@ class ApiDelete extends ApiBase { public function getParamDescription() { $p = $this->getModulePrefix(); + return array( 'title' => "Title of the page you want to delete. Cannot be used together with {$p}pageid", 'pageid' => "Page ID of the page you want to delete. Cannot be used together with {$p}title", diff --git a/includes/api/ApiEditPage.php b/includes/api/ApiEditPage.php index bd61895b30..fd024e10ae 100644 --- a/includes/api/ApiEditPage.php +++ b/includes/api/ApiEditPage.php @@ -38,9 +38,9 @@ class ApiEditPage extends ApiBase { $params = $this->extractRequestParams(); if ( is_null( $params['text'] ) && is_null( $params['appendtext'] ) && - is_null( $params['prependtext'] ) && - $params['undo'] == 0 ) - { + is_null( $params['prependtext'] ) && + $params['undo'] == 0 + ) { $this->dieUsageMsg( 'missingtext' ); } @@ -53,8 +53,8 @@ class ApiEditPage extends ApiBase { $oldTitle = $titleObj; $titles = Revision::newFromTitle( $oldTitle, false, Revision::READ_LATEST ) - ->getContent( Revision::FOR_THIS_USER, $user ) - ->getRedirectChain(); + ->getContent( Revision::FOR_THIS_USER, $user ) + ->getRedirectChain(); // array_shift( $titles ); $redirValues = array(); @@ -101,7 +101,7 @@ class ApiEditPage extends ApiBase { $model = $contentHandler->getModelID(); $this->dieUsage( "The requested format $contentFormat is not supported for content model " . - " $model used by $name", 'badformat' ); + " $model used by $name", 'badformat' ); } if ( $params['createonly'] && $titleObj->exists() ) { @@ -121,8 +121,7 @@ class ApiEditPage extends ApiBase { } $toMD5 = $params['text']; - if ( !is_null( $params['appendtext'] ) || !is_null( $params['prependtext'] ) ) - { + if ( !is_null( $params['appendtext'] ) || !is_null( $params['prependtext'] ) ) { $content = $pageObj->getContent(); if ( !$content ) { @@ -138,6 +137,7 @@ class ApiEditPage extends ApiBase { $content = ContentHandler::makeContent( $text, $this->getTitle() ); } catch ( MWContentSerializationException $ex ) { $this->dieUsage( $ex->getMessage(), 'parseerror' ); + return; } } else { @@ -187,7 +187,7 @@ class ApiEditPage extends ApiBase { if ( $params['undoafter'] > 0 ) { if ( $params['undo'] < $params['undoafter'] ) { list( $params['undo'], $params['undoafter'] ) = - array( $params['undoafter'], $params['undo'] ); + array( $params['undoafter'], $params['undo'] ); } $undoafterRev = Revision::newFromID( $params['undoafter'] ); } @@ -363,6 +363,7 @@ class ApiEditPage extends ApiBase { if ( count( $r ) ) { $r['result'] = 'Failure'; $apiResult->addValue( null, $this->getModuleName(), $r ); + return; } else { $this->dieUsageMsg( 'hookaborted' ); @@ -513,11 +514,11 @@ class ApiEditPage extends ApiBase { array( 'code' => 'invalidsection', 'info' => 'The section parameter must be set to an integer or \'new\'' ), array( 'code' => 'sectionsnotsupported', 'info' => 'Sections are not supported for this type of page.' ), array( 'code' => 'editnotsupported', 'info' => 'Editing of this type of page is not supported using ' - . 'the text based edit API.' ), + . 'the text based edit API.' ), array( 'code' => 'appendnotsupported', 'info' => 'This type of page can not be edited by appending ' - . 'or prepending text.' ), + . 'or prepending text.' ), array( 'code' => 'badformat', 'info' => 'The requested serialization format can not be applied to ' - . 'the page\'s content model' ), + . 'the page\'s content model' ), array( 'customcssprotected' ), array( 'customjsprotected' ), ) @@ -591,6 +592,7 @@ class ApiEditPage extends ApiBase { public function getParamDescription() { $p = $this->getModulePrefix(); + return array( 'title' => "Title of the page you want to edit. Cannot be used together with {$p}pageid", 'pageid' => "Page ID of the page you want to edit. Cannot be used together with {$p}title", @@ -598,17 +600,17 @@ class ApiEditPage extends ApiBase { 'sectiontitle' => 'The title for a new section', 'text' => 'Page content', 'token' => array( 'Edit token. You can get one of these through prop=info.', - "The token should always be sent as the last parameter, or at least, after the {$p}text parameter" + "The token should always be sent as the last parameter, or at least, after the {$p}text parameter" ), 'summary' => "Edit summary. Also section title when {$p}section=new and {$p}sectiontitle is not set", 'minor' => 'Minor edit', 'notminor' => 'Non-minor edit', 'bot' => 'Mark this edit as bot', 'basetimestamp' => array( 'Timestamp of the base revision (obtained through prop=revisions&rvprop=timestamp).', - 'Used to detect edit conflicts; leave unset to ignore conflicts' + 'Used to detect edit conflicts; leave unset to ignore conflicts' ), 'starttimestamp' => array( 'Timestamp when you obtained the edit token.', - 'Used to detect edit conflicts; leave unset to ignore conflicts' + 'Used to detect edit conflicts; leave unset to ignore conflicts' ), 'recreate' => 'Override any errors about the article having been deleted in the meantime', 'createonly' => 'Don\'t edit the page if it exists already', @@ -617,10 +619,10 @@ class ApiEditPage extends ApiBase { 'unwatch' => 'Remove the page from your watchlist', 'watchlist' => 'Unconditionally add or remove the page from your watchlist, use preferences or do not change watch', 'md5' => array( "The MD5 hash of the {$p}text parameter, or the {$p}prependtext and {$p}appendtext parameters concatenated.", - 'If set, the edit won\'t be done unless the hash is correct' ), + 'If set, the edit won\'t be done unless the hash is correct' ), 'prependtext' => "Add this text to the beginning of the page. Overrides {$p}text", 'appendtext' => array( "Add this text to the end of the page. Overrides {$p}text.", - "Use {$p}section=new to append a new section" ), + "Use {$p}section=new to append a new section" ), 'undo' => "Undo this revision. Overrides {$p}text, {$p}prependtext and {$p}appendtext", 'undoafter' => 'Undo all revisions from undo to this one. If not set, just undo one revision', 'redirect' => 'Automatically resolve redirects', diff --git a/includes/api/ApiFeedContributions.php b/includes/api/ApiFeedContributions.php index 05691093f4..27037cba47 100644 --- a/includes/api/ApiFeedContributions.php +++ b/includes/api/ApiFeedContributions.php @@ -61,8 +61,8 @@ class ApiFeedContributions extends ApiBase { $feedUrl = SpecialPage::getTitleFor( 'Contributions', $params['user'] )->getFullURL(); $target = $params['user'] == 'newbies' - ? 'newbies' - : Title::makeTitleSafe( NS_USER, $params['user'] )->getText(); + ? 'newbies' + : Title::makeTitleSafe( NS_USER, $params['user'] )->getText(); $feed = new $wgFeedClasses[$params['feedformat']] ( $feedTitle, @@ -107,6 +107,7 @@ class ApiFeedContributions extends ApiBase { $comments ); } + return null; } @@ -142,12 +143,14 @@ class ApiFeedContributions extends ApiBase { htmlspecialchars( FeedItem::stripComment( $revision->getComment() ) ) . "

\n
\n
" . $html . "
"; } + return ''; } public function getAllowedParams() { global $wgFeedClasses; $feedFormatNames = array_keys( $wgFeedClasses ); + return array( 'feedformat' => array( ApiBase::PARAM_DFLT => 'rss', diff --git a/includes/api/ApiFeedWatchlist.php b/includes/api/ApiFeedWatchlist.php index fbb70fbc9b..645e7c7178 100644 --- a/includes/api/ApiFeedWatchlist.php +++ b/includes/api/ApiFeedWatchlist.php @@ -135,7 +135,6 @@ class ApiFeedWatchlist extends ApiBase { $feed = new $wgFeedClasses[$params['feedformat']] ( $feedTitle, htmlspecialchars( $msg ), $feedUrl ); ApiFormatFeedWrapper::setResult( $this->getResult(), $feed, $feedItems ); - } catch ( Exception $e ) { // Error results should not be cached @@ -199,6 +198,7 @@ class ApiFeedWatchlist extends ApiBase { $this->watchlistModule = $this->getMain()->getModuleManager()->getModule( 'query' ) ->getModuleManager()->getModule( 'watchlist' ); } + return $this->watchlistModule; } @@ -235,11 +235,13 @@ class ApiFeedWatchlist extends ApiBase { $ret['wltype'] = null; $ret['wlexcludeuser'] = null; } + return $ret; } public function getParamDescription() { $wldescr = $this->getWatchlistModule()->getParamDescription(); + return array( 'feedformat' => 'The format of the feed', 'hours' => 'List pages modified within this many hours from now', diff --git a/includes/api/ApiFileRevert.php b/includes/api/ApiFileRevert.php index cbb2ba6a35..2a7f46d2c3 100644 --- a/includes/api/ApiFileRevert.php +++ b/includes/api/ApiFileRevert.php @@ -58,7 +58,6 @@ class ApiFileRevert extends ApiBase { } $this->getResult()->addValue( null, $this->getModuleName(), $result ); - } /** @@ -130,7 +129,6 @@ class ApiFileRevert extends ApiBase { ApiBase::PARAM_REQUIRED => true ), ); - } public function getParamDescription() { diff --git a/includes/api/ApiFormatBase.php b/includes/api/ApiFormatBase.php index b89fb3a730..c1817fa816 100644 --- a/includes/api/ApiFormatBase.php +++ b/includes/api/ApiFormatBase.php @@ -43,9 +43,9 @@ abstract class ApiFormatBase extends ApiBase { public function __construct( $main, $format ) { parent::__construct( $main, $format ); - $this->mIsHtml = ( substr( $format, - 2, 2 ) === 'fm' ); // ends with 'fm' + $this->mIsHtml = ( substr( $format, -2, 2 ) === 'fm' ); // ends with 'fm' if ( $this->mIsHtml ) { - $this->mFormat = substr( $format, 0, - 2 ); // remove ending 'fm' + $this->mFormat = substr( $format, 0, -2 ); // remove ending 'fm' } else { $this->mFormat = $format; } @@ -360,8 +360,8 @@ class ApiFormatFeedWrapper extends ApiFormatBase { /** * This class expects the result data to be in a custom format set by self::setResult() - * $result['_feed'] - an instance of one of the $wgFeedClasses classes - * $result['_feeditems'] - an array of FeedItem instances + * $result['_feed'] - an instance of one of the $wgFeedClasses classes + * $result['_feeditems'] - an array of FeedItem instances */ public function execute() { $data = $this->getResultData(); diff --git a/includes/api/ApiFormatJson.php b/includes/api/ApiFormatJson.php index 342a580f9a..7a8817654e 100644 --- a/includes/api/ApiFormatJson.php +++ b/includes/api/ApiFormatJson.php @@ -43,6 +43,7 @@ class ApiFormatJson extends ApiFormatBase { if ( $params['callback'] ) { return 'text/javascript'; } + return 'application/json'; } -- 2.20.1