From d47885a4450f81ce6370c72bad872f797caf9989 Mon Sep 17 00:00:00 2001
From: Daniel Seifert <ds@shopmodule.com>
Date: Tue, 21 Sep 2021 11:18:02 +0200
Subject: [PATCH] make compatible to Composer 2

---
 composer.json        |  2 +-
 src/Translatable.php |  2 +-
 src/Wplang.php       | 15 ++++++++++++---
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/composer.json b/composer.json
index 2e7bfe4..1c2c508 100644
--- a/composer.json
+++ b/composer.json
@@ -11,7 +11,7 @@
         }
     ],
     "require": {
-        "composer-plugin-api": "^1.0"
+        "composer-plugin-api": "^2.0"
     },
     "autoload": {
         "psr-4": {
diff --git a/src/Translatable.php b/src/Translatable.php
index 6649fe6..855dfb8 100644
--- a/src/Translatable.php
+++ b/src/Translatable.php
@@ -60,7 +60,7 @@ class Translatable {
 	 * @param string $type          The package type: 'plugin', 'theme' or 'core'.
 	 * @param string $slug          The plugin/theme slug, E.g. 'query-monitor'. In case of core, this is 'wordpress'.
 	 * @param string $version       The package version.
-	 * @param string $languages     Array of the languages we are using.
+	 * @param array $languages     Array of the languages we are using.
 	 * @param string $wpLanguageDir Full path to the language files target directory.
 	 */
 	public function __construct( $type, $slug, $version, $languages, $wpLanguageDir ) {
diff --git a/src/Wplang.php b/src/Wplang.php
index 31f32b6..2b074c8 100644
--- a/src/Wplang.php
+++ b/src/Wplang.php
@@ -3,7 +3,7 @@
 namespace BJ\Wplang;
 
 use Composer\Composer;
-use Composer\Script\Event;
+use Composer\DependencyResolver\Operation\UpdateOperation;
 use Composer\EventDispatcher\EventSubscriberInterface;
 use Composer\IO\IOInterface;
 use Composer\Plugin\PluginInterface;
@@ -50,10 +50,19 @@ class Wplang implements PluginInterface, EventSubscriberInterface {
 		}
 
 		if ( ! empty( $extra['wordpress-language-dir'] ) ) {
-			$this->wpLanguageDir = dirname( dirname( dirname( dirname( __DIR__ ) ) ) ) . '/' . $extra['wordpress-language-dir'];
+			$this->wpLanguageDir = dirname( __DIR__, 4 ) . '/' . $extra['wordpress-language-dir'];
 		}
 	}
 
+    public function deactivate(Composer $composer, IOInterface $io)
+    {
+        // do nothing
+    }
+
+    public function uninstall(Composer $composer, IOInterface $io)
+    {
+        // do nothing
+    }
 
 	/**
 	 * Subscribe to Composer events.
@@ -77,7 +86,7 @@ class Wplang implements PluginInterface, EventSubscriberInterface {
 	 * @param  PackageEvent $event The package event object.
 	 */
 	public function onPackageAction( PackageEvent $event ) {
-        if ( 'update' === $event->getOperation()->getJobType() ) {
+        if ($event->getOperation() instanceof UpdateOperation) {
             $package = $event->getOperation()->getTargetPackage();
         } else {
             $package = $event->getOperation()->getPackage();
-- 
GitLab