mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
synced 2024-11-30 18:45:07 +00:00
da07893647
I tried to stick as close to the existing code as possible. Special:Notifications is slightly different from the overlay, however. I made it add .mw-echo-unread class for consistency, but that JS doesn't record seen time (it only loads older entries), not does the CSS fadeout apply there (it marks everything as read as soon as it's displayed, so different behavior from overlay) PS: I'm not sure about browser compat for the fadeout. But even if some obscure browsers don't support this, meh. It's not an "important" feature that can't be missed. Bug: T94634 Change-Id: Ibb201823fb52ef8a3d5eaa39b0b724ede8d271d1
86 lines
1.6 KiB
PHP
86 lines
1.6 KiB
PHP
<?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' );
|
|
}
|
|
|
|
$timestamp = wfTimestamp( TS_MW );
|
|
$user->setOption( 'echo-seen-time', $timestamp );
|
|
$user->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';
|
|
}
|
|
}
|