getDB()->getType(); $updater->addExtensionTable('isekai_user_quests_record', $dir . $type . '/isekai_user_quests_record.sql'); } /** * @param \WikiPage $wikiPage * @param \MediaWiki\User\UserIdentity $user * @param string $summary * @param int $flags * @param \MediaWiki\Revision\RevisionRecord $revisionRecord * @param \MediaWiki\Storage\EditResult $editResult */ public static function onPageSaveComplete($wikiPage, $user, $summary, $flags, $revisionRecord, $editResult) { wfDebugLog('IsekaiQuests', 'onPageSaveComplete'); $services = MediaWikiServices::getInstance(); $config = $services->getMainConfig(); $questsConfig = $config->get('IsekaiQuestsConfig'); $allowedNamespaces = [NS_MAIN, NS_CATEGORY, NS_TEMPLATE, NS_HELP]; if (in_array($wikiPage->getNamespace(), $allowedNamespaces)) { if ($flags & EDIT_NEW && isset($questsConfig['new'])) { // 新建页面 $questConfig = $questsConfig['new']; $questRes = QuestsUtils::onQuestComplete($user, 'new', $questConfig); wfDebugLog('IsekaiQuests', 'quest finished: ', var_export($questRes, true)); if ($questRes) { QuestsUtils::setQuestCompleteNotification('new', $questRes['deltaPoints'], $questRes['completeNum'], $questConfig); return true; } } // 如果新建页面的任务次数已满,则作为编辑页面处理 if ($flags & EDIT_UPDATE && isset($questsConfig['edit'])) { // 编辑页面 $questConfig = $questsConfig['edit']; $questRes = QuestsUtils::onQuestComplete($user, 'edit', $questConfig); wfDebugLog('IsekaiQuests', 'quest finished: ', var_export($questRes, true)); if ($questRes) { QuestsUtils::setQuestCompleteNotification('edit', $questRes['deltaPoints'], $questRes['completeNum'], $questConfig); return true; } } } return true; } public static function onBeforePageDisplay(OutputPage $out, $skin) { $out->addModules(['ext.isekai.userpoints.quests.notification']); $sessionManager = SessionManager::getGlobalSession(); if ($sessionManager->exists(QuestsUtils::SESSION_KEY_QUEST_COMPLETE_NOTIFICATION)) { $out->addJsConfigVars([ 'wgIsekaiQuestsCompleteNotification' => $sessionManager->get(QuestsUtils::SESSION_KEY_QUEST_COMPLETE_NOTIFICATION), ]); $sessionManager->remove(QuestsUtils::SESSION_KEY_QUEST_COMPLETE_NOTIFICATION); } } }