13 use Magento\Framework\Config\Composer\PackageFactory;
35 private $packageFactory;
40 private $componentRegistrar;
45 private $directoryReadFactory;
60 PackageFactory $packageFactory,
65 $this->packageFactory = $packageFactory;
67 $this->directoryReadFactory = $directoryReadFactory ?:
79 $installExtensions = [];
80 $suggests = $this->composerInformation->getSuggestedPackages();
83 if (strpos(
$version, self::SAMPLE_DATA_SUGGEST) === 0) {
84 $installExtensions[
$name] = trim(substr(
$version, strlen(self::SAMPLE_DATA_SUGGEST)));
87 return $installExtensions;
100 $package = $this->getModuleComposerPackage($moduleDir);
101 $suggest = json_decode(json_encode($package->get(
'suggest')),
true);
102 if (!empty($suggest)) {
103 $suggests += $suggest;
116 private function getModuleComposerPackage($moduleDir)
124 foreach ([$moduleDir, $moduleDir . DIRECTORY_SEPARATOR .
'..'] as $dir) {
126 $directory = $this->directoryReadFactory->create($dir);
127 if ($directory->isExist(
'composer.json') && $directory->isReadable(
'composer.json')) {
129 return $this->packageFactory->create([
'json' => json_decode($directory->readFile(
'composer.json'))]);
132 return $this->packageFactory->create([
'json' =>
new \stdClass]);
const SAMPLE_DATA_SUGGEST
__construct(ComposerInformation $composerInformation, Filesystem $filesystem, PackageFactory $packageFactory, ComponentRegistrarInterface $componentRegistrar, \Magento\Framework\Filesystem\Directory\ReadFactory $directoryReadFactory=null)
if(!isset($_GET['name'])) $name