public function load($modelId, $field = null) { parent::load($modelId, $field); $this->setId($modelId); // array_filter to remove empty items caused by non-magento modules requirements $this->setDepends(array_filter($this->packageInfo->getRequire($this->getCode()))); $this->setVersion($this->packageInfo->getVersion($this->getCode())); $this->setPackageName($this->packageInfo->getPackageName($this->getCode())); return $this; }
/** * Validate list of modules against installed composer packages and return error messages * * @param string[] $modules * @return string[] */ protected function validate(array $modules) { $messages = []; $unknownPackages = []; $unknownModules = []; $installedPackages = $this->composer->getRootRequiredPackages(); foreach ($modules as $module) { if (array_search($this->packageInfo->getPackageName($module), $installedPackages) === false) { $unknownPackages[] = $module; } if (!$this->fullModuleList->has($module)) { $unknownModules[] = $module; } } $unknownPackages = array_diff($unknownPackages, $unknownModules); if (!empty($unknownPackages)) { $text = count($unknownPackages) > 1 ? ' are not installed composer packages' : ' is not an installed composer package'; $messages[] = '<error>' . implode(', ', $unknownPackages) . $text . '</error>'; } if (!empty($unknownModules)) { $messages[] = '<error>Unknown module(s): ' . implode(', ', $unknownModules) . '</error>'; } return $messages; }
/** * Get full list of modules as an associative array * * @return array */ private function getAllModules() { $modules = []; $allModules = $this->fullModuleList->getNames(); foreach ($allModules as $module) { $moduleName = $this->packageInfo->getPackageName($module); $modules[$moduleName]['name'] = $moduleName; $modules[$moduleName]['type'] = \Magento\Framework\Composer\ComposerInformation::MODULE_PACKAGE_TYPE; $modules[$moduleName]['version'] = $this->packageInfo->getVersion($module); } return $modules; }
public function testGetPackageName() { $this->assertEquals('a', $this->packageInfo->getPackageName('A')); $this->assertEquals('b', $this->packageInfo->getPackageName('B')); $this->assertEquals('c', $this->packageInfo->getPackageName('C')); $this->assertEquals('d', $this->packageInfo->getPackageName('D')); $this->assertEquals('e', $this->packageInfo->getPackageName('E')); }