X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fdrupal%2Fconsole%2Fsrc%2FExtension%2FManager.php;h=b0798f9659923a6e0084e52599e716d9344c0e9f;hp=a1a79a1a0fd4b5c0853bd5bbb3ae238fe5e3ef83;hb=eba34333e3c89f208d2f72fa91351ad019a71583;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae diff --git a/vendor/drupal/console/src/Extension/Manager.php b/vendor/drupal/console/src/Extension/Manager.php index a1a79a1a0..b0798f965 100644 --- a/vendor/drupal/console/src/Extension/Manager.php +++ b/vendor/drupal/console/src/Extension/Manager.php @@ -3,6 +3,8 @@ namespace Drupal\Console\Extension; use Drupal\Console\Utils\Site; +use GuzzleHttp\Client; +use GuzzleHttp\Exception\ClientException; /** * Class ExtensionManager @@ -15,6 +17,12 @@ class Manager * @var Site */ protected $site; + + /** + * @var Client + */ + protected $httpClient; + /** * @var string */ @@ -39,13 +47,16 @@ class Manager * ExtensionManager constructor. * * @param Site $site + * @param Client $httpClient * @param string $appRoot */ public function __construct( Site $site, + Client $httpClient, $appRoot ) { $this->site = $site; + $this->httpClient = $httpClient; $this->appRoot = $appRoot; $this->initialize(); } @@ -135,6 +146,8 @@ class Manager { $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); } + + /** + * @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; + } }