-
Notifications
You must be signed in to change notification settings - Fork 3
/
UpdateMessageApiModule.php
99 lines (85 loc) · 2.46 KB
/
UpdateMessageApiModule.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
namespace Liquipedia\Extension\LiquipediaMediaWikiMessages\Api;
use ApiBase;
use Liquipedia\Extension\LiquipediaMediaWikiMessages\Cache;
use MediaWiki\MediaWikiServices;
use Wikimedia\ParamValidator\ParamValidator;
class UpdateMessageApiModule extends ApiBase {
/**
*
*/
public function execute() {
$postValues = $this->getRequest()->getPostValues();
$messageName = $postValues[ 'messagename' ];
$value = $postValues[ 'value' ];
$services = MediaWikiServices::getInstance();
$loadBalancer = $services->getDBLoadBalancer();
$dbw = $loadBalancer->getConnection( DB_PRIMARY, '', $this->getConfig()->get( 'DBname' ) );
$tablename = 'liquipedia_mediawiki_messages';
// Search if the message is present
$row = $dbw->selectRow( $tablename, [ '1' ], [ 'messagename' => $messageName ] );
// If the message is not present, just return an error
if ( !$row ) {
$this->getResult()->addValue( null, $this->getModuleName(), [
'message' => $this->msg( 'liquipediamediawikimessages-api-result-error' )
] );
return;
}
// Else update the message to the given value
$dbw->update( $tablename, [ 'messagevalue' => $value ], [ 'messagename' => $messageName ] );
// Delete from cache
$cache = $services->getMainWANObjectCache();
$cache->delete(
$cache->makeGlobalKey(
Cache::getPrefix(), md5( $messageName )
),
);
$this->getResult()->addValue( null, $this->getModuleName(), [
'message' => $this->msg( 'liquipediamediawikimessages-api-result-success' )
] );
}
/**
* @return true
*/
public function mustBePosted() {
return true;
}
/**
* @return mixed
*/
public function getDescription() {
return $this->msg( 'liquipediamediawikimessages-api-shortdesc' )->text();
}
/**
* @return mixed
*/
public function getParamDescription() {
return parent::getParamDescription();
}
/**
* @return array
*/
public function getExamplesMessages() {
return [
'action=updatelpmwmessageapi&format=json'
=> 'liquipediamediawikimessages-api-example',
];
}
/**
* @return array
*/
public function getAllowedParams() {
return [
'messagename' => [
ParamValidator::PARAM_TYPE => 'string',
ApiBase::PARAM_HELP_MSG => 'liquipediamediawikimessages-api-message-name',
ParamValidator::PARAM_REQUIRED => true,
],
'value' => [
ParamValidator::PARAM_TYPE => 'string',
ApiBase::PARAM_HELP_MSG => 'liquipediamediawikimessages-api-message-value',
ParamValidator::PARAM_REQUIRED => true,
]
];
}
}