/
ExportedDrupal7ExtensionsInspector.php
68 lines (56 loc) · 1.93 KB
/
ExportedDrupal7ExtensionsInspector.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
declare(strict_types = 1);
namespace Acquia\Cli\Tests\Commands\App\From;
use Acquia\Cli\Command\App\From\JsonResourceParserTrait;
use Acquia\Cli\Command\App\From\SourceSite\Drupal7Extension;
use Acquia\Cli\Command\App\From\SourceSite\SiteInspectorBase;
final class ExportedDrupal7ExtensionsInspector extends SiteInspectorBase {
use JsonResourceParserTrait;
/**
* ExportedDrupal7ExtensionsInspector constructor.
*
* @param \Acquia\Cli\Command\App\From\SourceSite\Drupal7Extension[] $extensions
* An array of extensions.
*/
protected function __construct(
protected array $extensions
) {}
/**
* Creates a new ExportedDrupal7ExtensionsInspector.
*
* @param resource $extensions_resource
* A resource containing a list of Drupal 7 extension information.
* @return static
* A new instance of this class.
*/
public static function createFromResource($extensions_resource): static {
assert(is_resource($extensions_resource));
return new static(static::parseExtensionsFromResource($extensions_resource));
}
/**
* {@inheritDoc}
*/
protected function readExtensions(): array {
return $this->extensions;
}
public function getPublicFilePath(): string {
return 'sites/default/files';
}
public function getPrivateFilePath(): ?string {
return NULL;
}
/**
* Reads an extensions resource into extensions objects.
*
* @param resource $extensions_resource
* A serialized extensions resource from which to parse extensions.
* @return \Acquia\Cli\Command\App\From\SourceSite\Drupal7Extension[]
* An array of extensions.
*/
protected static function parseExtensionsFromResource($extensions_resource): array {
return array_map(function (array $extension) {
$extension['status'] = $extension['enabled'];
return Drupal7Extension::createFromStdClass((object) $extension);
}, static::parseJsonResource($extensions_resource));
}
}