You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.4 KiB
PHP
66 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace Isekai\UserPoints;
|
|
|
|
use DatabaseUpdater;
|
|
use MediaWiki\MediaWikiServices;
|
|
use OutputPage;
|
|
use Skin;
|
|
use User;
|
|
|
|
class Hooks {
|
|
/**
|
|
* Implements LoadExtensionSchemaUpdates hook.
|
|
*
|
|
* @param \DatabaseUpdater $updater
|
|
*/
|
|
public static function onLoadExtensionSchemaUpdates($updater) {
|
|
$dir = dirname(__DIR__) . '/sql/';
|
|
$type = $updater->getDB()->getType();
|
|
$updater->addExtensionTable('isekai_user_daily_sign', $dir . $type . '/isekai_user_daily_sign.sql');
|
|
$updater->addExtensionTable('isekai_user_daily_sign_log', $dir . $type . '/isekai_user_daily_sign_log.sql');
|
|
$updater->addExtensionTable('isekai_user_points', $dir . $type . '/isekai_user_points.sql');
|
|
$updater->addExtensionTable('isekai_user_points_log', $dir . $type . '/isekai_user_points_log.sql');
|
|
}
|
|
|
|
public static function onBeforePageDisplay(OutputPage $out, Skin $skin) {
|
|
$user = $out->getUser();
|
|
|
|
$config = MediaWikiServices::getInstance()->getMainConfig();
|
|
|
|
$out->addModuleStyles(['ext.isekai.userpoints.base']);
|
|
|
|
$dailySignConfig = $config->get('IsekaiUserDailySignConfig');
|
|
if ($dailySignConfig) {
|
|
$out->addModules(['ext.isekai.userpoints.dailysign']);
|
|
}
|
|
}
|
|
|
|
public static function onGetPreferences(User $user, &$preferences) {
|
|
$config = MediaWikiServices::getInstance()->getMainConfig();
|
|
if ($config->get('IsekaiUserPointShowOnUserPerferences')) {
|
|
$userPointConfig = $config->get('IsekaiUserPointConfig');
|
|
|
|
/** @var \Isekai\UserPoints\Service\IsekaiUserPointsFactory */
|
|
$userPointsFactory = MediaWikiServices::getInstance()->getService('IsekaiUserPoints');
|
|
|
|
foreach ($userPointConfig as $pointType => $pointConfig) {
|
|
$userPoints = $userPointsFactory->newFromUser($user, $pointType);
|
|
|
|
$icon = Utils::getPointIcon($pointType);
|
|
$name = Utils::getPointName($pointType);
|
|
|
|
$language = MediaWikiServices::getInstance()->getContentLanguage();
|
|
|
|
$preferences['isekai-userpoints-' . $pointType] = [
|
|
'type' => 'info',
|
|
'label-raw' => $icon . ' ' . $name,
|
|
'default' => $language->formatNum($userPoints->points),
|
|
'section' => 'personal/info',
|
|
'raw' => true,
|
|
];
|
|
}
|
|
}
|
|
}
|
|
}
|