mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
synced 2024-11-17 12:52:22 +00:00
2a0e98e9a9
* These tend to log errors many times in a row for the same few users in any given time period. There is probably some usage pattern issue in JS on top of the abuse of preferences for such tracking state. In any case, this should help. Bug: T95839 Change-Id: I4d57b1db43a63300a412a5de220b66081da754f1
91 lines
1.8 KiB
PHP
Executable file
91 lines
1.8 KiB
PHP
Executable file
<?php
|
|
|
|
class ApiEchoMarkSeen extends ApiBase {
|
|
|
|
public function execute() {
|
|
// To avoid API warning, register the parameter used to bust browser cache
|
|
$this->getMain()->getVal( '_' );
|
|
|
|
$user = $this->getUser();
|
|
if ( $user->isAnon() ) {
|
|
$this->dieUsage( 'Login is required', 'login-required' );
|
|
}
|
|
|
|
// Load from the master to reduce CAS errors from high update frequency
|
|
$u = User::newFromId( $user->getId() );
|
|
$u->load( User::READ_LATEST );
|
|
|
|
$timestamp = wfTimestamp( TS_MW );
|
|
// @TODO: do not abuse user preferences for "last seen"
|
|
$u->setOption( 'echo-seen-time', $timestamp );
|
|
$u->saveSettings();
|
|
|
|
$this->getResult()->addValue( 'query', $this->getModuleName(), array(
|
|
'result' => 'success',
|
|
'timestamp' => $timestamp,
|
|
) );
|
|
}
|
|
|
|
public function getAllowedParams() {
|
|
return array(
|
|
'token' => array(
|
|
ApiBase::PARAM_REQUIRED => true,
|
|
),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @deprecated since MediaWiki core 1.25
|
|
*/
|
|
public function getParamDescription() {
|
|
return array(
|
|
'token' => 'edit token',
|
|
);
|
|
}
|
|
|
|
public function needsToken() {
|
|
return 'csrf';
|
|
}
|
|
|
|
public function getTokenSalt() {
|
|
return '';
|
|
}
|
|
|
|
public function mustBePosted() {
|
|
return true;
|
|
}
|
|
|
|
public function isWriteMode() {
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @deprecated since MediaWiki core 1.25
|
|
*/
|
|
public function getDescription() {
|
|
return 'Mark notifications as seen for the current user';
|
|
}
|
|
|
|
/**
|
|
* @deprecated since MediaWiki core 1.25
|
|
*/
|
|
public function getExamples() {
|
|
return array(
|
|
'api.php?action=echomarkseen',
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @see ApiBase::getExamplesMessages()
|
|
*/
|
|
protected function getExamplesMessages() {
|
|
return array(
|
|
'action=echomarkseen' => 'apihelp-echomarkseen-example-1',
|
|
);
|
|
}
|
|
|
|
public function getHelpUrls() {
|
|
return 'https://www.mediawiki.org/wiki/Echo_(Notifications)/API';
|
|
}
|
|
}
|