修复因为数据库索引导致签到功能异常的问题

master
落雨楓 2 years ago
parent e7ce4d04c9
commit d39a4861c4

@ -24,6 +24,8 @@ class Hooks {
} }
public static function onBeforePageDisplay(OutputPage $out, Skin $skin) { public static function onBeforePageDisplay(OutputPage $out, Skin $skin) {
$user = $out->getUser();
$config = MediaWikiServices::getInstance()->getMainConfig(); $config = MediaWikiServices::getInstance()->getMainConfig();
$out->addModuleStyles(['ext.isekai.userpoints.base']); $out->addModuleStyles(['ext.isekai.userpoints.base']);

@ -1,6 +1,7 @@
<?php <?php
namespace Isekai\UserPoints\Service; namespace Isekai\UserPoints\Service;
use Isekai\UserPoints\Utils;
use User; use User;
use stdClass; use stdClass;
use MediaWiki\MediaWikiServices; use MediaWiki\MediaWikiServices;
@ -376,6 +377,13 @@ class IsekaiUserPoints {
return true; return true;
} }
public function getPointInfo() {
return [
'name' => Utils::getPointName($this->type),
'icon' => Utils::getPointIcon($this->type),
];
}
/** /**
* Save point data * Save point data
*/ */

@ -1,43 +1,45 @@
$(function() { $(function() {
const storeKey = 'isekai-userpoints-dailysign-lastSignDate'; if (!mw.user.isAnon()) {
const lastSignDate = localStorage.getItem(storeKey); const storeKey = 'isekai-userpoints-dailysign-lastSignDate';
const today = new Date().toLocaleDateString(); const lastSignDate = localStorage.getItem(storeKey);
if (lastSignDate !== today) { const today = new Date().toLocaleDateString();
let mwApi = new mw.Api(); if (lastSignDate !== today) {
mwApi.postWithToken('csrf', { let mwApi = new mw.Api();
action: 'userdailysign', mwApi.postWithToken('csrf', {
}).done(function(data) { action: 'userdailysign',
if (data.userdailysign && data.userdailysign.success) { }).done(function(data) {
if (Array.isArray(data.userdailysign.point_delta)) { if (data.userdailysign && data.userdailysign.success) {
const pointDelta = data.userdailysign.point_delta; if (Array.isArray(data.userdailysign.point_delta)) {
let pointMsgList = []; const pointDelta = data.userdailysign.point_delta;
pointDelta.forEach(function (pointDeltaInfo) { let pointMsgList = [];
let msg = mw.msg('isekai-userpoints-point-name-num', pointDeltaInfo.name, pointDeltaInfo.icon, pointDeltaInfo.points); pointDelta.forEach(function (pointDeltaInfo) {
pointMsgList.push(msg); let msg = mw.msg('isekai-userpoints-point-name-num', pointDeltaInfo.name, pointDeltaInfo.icon, pointDeltaInfo.points);
}); pointMsgList.push(msg);
let separator = mw.msg('comma-separator'); });
let pointMsg = pointMsgList.join(separator); let separator = mw.msg('comma-separator');
let pointMsg = pointMsgList.join(separator);
let notificationMsg = mw.msg('isekai-userpoints-dailysign-notify-success', pointMsg); let notificationMsg = mw.msg('isekai-userpoints-dailysign-notify-success', pointMsg);
mw.notify('', { mw.notify('', {
title: mw.msg('isekai-userpoints-dailysign-notify-title'), title: mw.msg('isekai-userpoints-dailysign-notify-title'),
tag: 'isekai-userpoints-dailysign', tag: 'isekai-userpoints-dailysign',
id: 'isekai-userpoints-dailysign-notify', id: 'isekai-userpoints-dailysign-notify',
}); });
function changeNotifyContent() { function changeNotifyContent() {
let notifyDom = document.querySelector('#isekai-userpoints-dailysign-notify'); let notifyDom = document.querySelector('#isekai-userpoints-dailysign-notify');
if (notifyDom) { if (notifyDom) {
notifyDom.querySelector('.mw-notification-content').innerHTML = notificationMsg; notifyDom.querySelector('.mw-notification-content').innerHTML = notificationMsg;
} else { } else {
requestAnimationFrame(changeNotifyContent); requestAnimationFrame(changeNotifyContent);
}
} }
}
changeNotifyContent(); changeNotifyContent();
}
localStorage.setItem(storeKey, today);
} }
localStorage.setItem(storeKey, today); });
} }
});
} }
}); });

@ -4,7 +4,7 @@ CREATE TABLE /*_*/isekai_user_daily_sign_log (
`month` INT UNSIGNED NOT NULL, `month` INT UNSIGNED NOT NULL,
`sign_log` LONGTEXT NOT NULL `sign_log` LONGTEXT NOT NULL
) /*$wgDBTableOptions*/; ) /*$wgDBTableOptions*/;
ALTER TABLE /*_*/isekai_user_daily_sign_log ADD PRIMARY KEY (`user_id`); ALTER TABLE /*_*/isekai_user_daily_sign_log ADD PRIMARY KEY (`user_id`, `year`, `month`);
ALTER TABLE /*_*/isekai_user_daily_sign_log ADD INDEX(`user_id`, `year`, `month`); ALTER TABLE /*_*/isekai_user_daily_sign_log ADD INDEX(`user_id`);
ALTER TABLE /*_*/isekai_user_daily_sign_log ADD INDEX(`year`); ALTER TABLE /*_*/isekai_user_daily_sign_log ADD INDEX(`year`);
ALTER TABLE /*_*/isekai_user_daily_sign_log ADD INDEX(`month`); ALTER TABLE /*_*/isekai_user_daily_sign_log ADD INDEX(`month`);

@ -4,7 +4,7 @@ CREATE TABLE isekai_user_daily_sign_log (
month INT NOT NULL, month INT NOT NULL,
sign_log JSON NOT NULL sign_log JSON NOT NULL
); );
ALTER TABLE isekai_user_daily_sign_log ADD PRIMARY KEY (user_id); ALTER TABLE isekai_user_daily_sign_log ADD PRIMARY KEY (user_id, year, month);
ALTER TABLE isekai_user_daily_sign_log ADD INDEX(user_id, year, month); ALTER TABLE isekai_user_daily_sign_log ADD INDEX(user_id);
ALTER TABLE isekai_user_daily_sign_log ADD INDEX(year); ALTER TABLE isekai_user_daily_sign_log ADD INDEX(year);
ALTER TABLE isekai_user_daily_sign_log ADD INDEX(month); ALTER TABLE isekai_user_daily_sign_log ADD INDEX(month);
Loading…
Cancel
Save