Yaffs site version 1.1
[yaffs-website] / vendor / drupal / console / src / Extension / Manager.php
index a1a79a1a0fd4b5c0853bd5bbb3ae238fe5e3ef83..b0798f9659923a6e0084e52599e716d9344c0e9f 100644 (file)
@@ -3,6 +3,8 @@
 namespace Drupal\Console\Extension;
 
 use Drupal\Console\Utils\Site;
 namespace Drupal\Console\Extension;
 
 use Drupal\Console\Utils\Site;
+use GuzzleHttp\Client;
+use GuzzleHttp\Exception\ClientException;
 
 /**
  * Class ExtensionManager
 
 /**
  * Class ExtensionManager
@@ -15,6 +17,12 @@ class Manager
      * @var Site
      */
     protected $site;
      * @var Site
      */
     protected $site;
+
+    /**
+     * @var Client
+     */
+    protected $httpClient;
+
     /**
      * @var string
      */
     /**
      * @var string
      */
@@ -39,13 +47,16 @@ class Manager
      * ExtensionManager constructor.
      *
      * @param Site   $site
      * ExtensionManager constructor.
      *
      * @param Site   $site
+     * @param Client $httpClient
      * @param string $appRoot
      */
     public function __construct(
         Site $site,
      * @param string $appRoot
      */
     public function __construct(
         Site $site,
+        Client $httpClient,
         $appRoot
     ) {
         $this->site = $site;
         $appRoot
     ) {
         $this->site = $site;
+        $this->httpClient = $httpClient;
         $this->appRoot = $appRoot;
         $this->initialize();
     }
         $this->appRoot = $appRoot;
         $this->initialize();
     }
@@ -135,6 +146,8 @@ class Manager
     {
         $this->extension = $extension;
         $this->extensions[$extension] = $this->discoverExtensions($extension);
     {
         $this->extension = $extension;
         $this->extensions[$extension] = $this->discoverExtensions($extension);
+
+        return $this;
     }
 
     /**
     }
 
     /**
@@ -347,4 +360,45 @@ class Manager
         $extension = $this->getExtension($type, $name);
         return $this->createExtension($extension);
     }
         $extension = $this->getExtension($type, $name);
         return $this->createExtension($extension);
     }
+
+    /**
+     * @param array  $extensions
+     * @param string $type
+     * @return array
+     */
+    public function checkExtensions(array $extensions, $type = 'module')
+    {
+        $checkextensions = [
+          'local_extensions' => [],
+          'drupal_extensions' => [],
+          'no_extensions' => [],
+        ];
+
+        $local_extensions = $this->discoverExtension($type)
+            ->showInstalled()
+            ->showUninstalled()
+            ->showCore()
+            ->showNoCore()
+            ->getList(true);
+
+        foreach ($extensions as $extension) {
+            if (in_array($extension, $local_extensions)) {
+                $checkextensions['local_extensions'][] = $extension;
+            } else {
+                try {
+                    $response = $this->httpClient->head('https://www.drupal.org/project/' . $extension);
+                    $header_link = explode(';', $response->getHeader('link'));
+                    if (empty($header_link[0])) {
+                        $checkextensions['no_extensions'][] = $extension;
+                    } else {
+                        $checkextensions['drupal_extensions'][] = $extension;
+                    }
+                } catch (ClientException $e) {
+                    $checkextensions['no_extensions'][] = $extension;
+                }
+            }
+        }
+
+        return $checkextensions;
+    }
 }
 }