From d683526c69e4bc40bb6f0ed105e59cc692111521 Mon Sep 17 00:00:00 2001 From: Frank Duncan <frank@kank.net> Date: Thu, 20 Oct 2022 12:07:44 -0500 Subject: [PATCH] Changes for upgrade to mediawiki 1.38 --- extension.json | 2 +- includes/Deliberation.php | 19 ++++++++++++------- includes/DeliberationHooks.php | 4 ++-- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/extension.json b/extension.json index 211667a..62c6410 100644 --- a/extension.json +++ b/extension.json @@ -9,7 +9,7 @@ "descriptionmsg": "deliberation-desc", "type": "specialpages", "requires": { - "MediaWiki": ">= 1.31.0" + "MediaWiki": ">= 1.38.0" }, "LogHeaders": { "deliberation": "deliberationlogpagetext" diff --git a/includes/Deliberation.php b/includes/Deliberation.php index 10d6d9c..2c2913a 100644 --- a/includes/Deliberation.php +++ b/includes/Deliberation.php @@ -5,13 +5,18 @@ class Deliberation { if($title->getArticleID() != 0) { $lb = \MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancer(); $dbw = $lb->getConnectionRef(DB_MASTER); - $dbw->upsert("Deliberation", [ - 'page_id' => $title->getArticleID(), - 'user_id' => $user->getId(), - 'choice' => $value - ], - ['page_id', 'user_id'], - ['choice' => $value]); + $params = ['page_id' => $title->getArticleID(), 'user_id' => $user->getId()]; + if($dbw->newSelectQueryBuilder() + ->select(['id']) + ->from('Deliberation') + ->where($params) + ->fetchRowCount() == 0) { + + $params["choice"] = $value; + $dbw->insert("Deliberation", $params); + } else { + $dbw->update("Deliberation", [ 'choice' => $value ], $params); + } } } diff --git a/includes/DeliberationHooks.php b/includes/DeliberationHooks.php index 0633991..0333a34 100644 --- a/includes/DeliberationHooks.php +++ b/includes/DeliberationHooks.php @@ -6,14 +6,14 @@ class DeliberationHooks { public static function renderDeliberation($parser) { $parser->getOutput()->updateCacheExpiry(0); - if($parser->getUser()->isAllowed("deliberation-write")) { + if($parser->getUserIdentity()->isAllowed("deliberation-write")) { $po = $parser->getOutput(); $po->addModules('ext.deliberation.js'); $po->addModuleStyles('ext.deliberation.css'); ob_start(); $template = new DeliberationWidgetTemplate(); - $template->set('user', $parser->getUser()); + $template->set('user', $parser->getUserIdentity()); $template->set('title', $parser->getTitle()); $template->execute(); -- GitLab