$vals['blockid'] = $block->getId();
$vals['blockedby'] = $block->getByName();
$vals['blockedbyid'] = $block->getBy();
- $vals['blockreason'] = $block->mReason;
- $vals['blockedtimestamp'] = wfTimestamp( TS_ISO_8601, $block->mTimestamp );
+ $vals['blockreason'] = $block->getReason();
+ $vals['blockedtimestamp'] = wfTimestamp( TS_ISO_8601, $block->getTimestamp() );
$vals['blockexpiry'] = ApiResult::formatExpiry( $block->getExpiry(), 'infinite' );
$vals['blockpartial'] = !$block->isSitewide();
if ( $block->getSystemBlockType() !== null ) {
$vals['realname'] = $user->getRealName();
}
- if ( $user->isAllowed( 'viewmyprivateinfo' ) ) {
- if ( isset( $this->prop['email'] ) ) {
- $vals['email'] = $user->getEmail();
- $auth = $user->getEmailAuthenticationTimestamp();
- if ( !is_null( $auth ) ) {
- $vals['emailauthenticated'] = wfTimestamp( TS_ISO_8601, $auth );
- }
+ if ( $user->isAllowed( 'viewmyprivateinfo' ) && isset( $this->prop['email'] ) ) {
+ $vals['email'] = $user->getEmail();
+ $auth = $user->getEmailAuthenticationTimestamp();
+ if ( $auth !== null ) {
+ $vals['emailauthenticated'] = wfTimestamp( TS_ISO_8601, $auth );
}
}
);
}
+ if ( isset( $this->prop['latestcontrib'] ) ) {
+ $ts = $this->getLatestContributionTime();
+ if ( $ts !== null ) {
+ $vals['latestcontrib'] = $ts;
+ }
+ }
+
return $vals;
}
return $retval;
}
+ /**
+ * @return string|null ISO 8601 timestamp of current user's last contribution or null if none
+ */
+ protected function getLatestContributionTime() {
+ global $wgActorTableSchemaMigrationStage;
+
+ $user = $this->getUser();
+ $dbr = $this->getDB();
+
+ if ( $wgActorTableSchemaMigrationStage & SCHEMA_COMPAT_READ_NEW ) {
+ if ( $user->getActorId() === null ) {
+ return null;
+ }
+ $res = $dbr->selectField( 'revision_actor_temp',
+ 'MAX(revactor_timestamp)',
+ [ 'revactor_actor' => $user->getActorId() ],
+ __METHOD__
+ );
+ } else {
+ if ( $user->isLoggedIn() ) {
+ $conds = [ 'rev_user' => $user->getId() ];
+ } else {
+ $conds = [ 'rev_user_text' => $user->getName() ];
+ }
+ $res = $dbr->selectField( 'revision',
+ 'MAX(rev_timestamp)',
+ $conds,
+ __METHOD__
+ );
+ }
+
+ return $res ? wfTimestamp( TS_ISO_8601, $res ) : null;
+ }
+
public function getAllowedParams() {
return [
'prop' => [
'unreadcount',
'centralids',
'preferencestoken',
+ 'latestcontrib',
],
ApiBase::PARAM_HELP_MSG_PER_VALUE => [
'unreadcount' => [