Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
UninstallDependencyCheck.php
Go to the documentation of this file.
1 <?php
7 namespace Magento\Setup\Model;
8 
12 
17 {
21  private $composerInfo;
22 
26  private $packageDependencyChecker;
27 
33  private $themeDependencyChecker;
34 
42  public function __construct(
43  ComposerInformation $composerInfo,
44  DependencyChecker $dependencyChecker,
45  ThemeDependencyCheckerFactory $themeDependencyCheckerFactory
46  ) {
47  $this->composerInfo = $composerInfo;
48  $this->packageDependencyChecker = $dependencyChecker;
49  $this->themeDependencyChecker = $themeDependencyCheckerFactory->create();
50  }
51 
59  public function runUninstallReadinessCheck(array $packages)
60  {
61  try {
62  $packagesAndTypes = $this->composerInfo->getRootRequiredPackageTypesByName();
63  $dependencies = $this->packageDependencyChecker->checkDependencies($packages, true);
64  $messages = [];
65  $themes = [];
66 
67  foreach ($packages as $package) {
68  if (!isset($packagesAndTypes[$package])) {
69  throw new \RuntimeException('Package ' . $package . ' not found in the system.');
70  }
71 
72  switch ($packagesAndTypes[$package]) {
74  unset($dependencies[$package]);
75  break;
77  $themes[] = $package;
78  break;
79  }
80 
81  if (!empty($dependencies[$package])) {
82  $messages[] = $package . " has the following dependent package(s): "
83  . implode(', ', $dependencies[$package]);
84  }
85  }
86 
87  if (!empty($themes)) {
88  $messages = array_merge(
89  $messages,
90  $this->themeDependencyChecker->checkChildThemeByPackagesName($themes)
91  );
92  }
93 
94  if (!empty($messages)) {
95  throw new \RuntimeException(implode(PHP_EOL, $messages));
96  }
97 
98  return ['success' => true];
99  } catch (\RuntimeException $e) {
100  $message = str_replace(PHP_EOL, '<br/>', htmlspecialchars($e->getMessage()));
101  return ['success' => false, 'error' => $message];
102  }
103  }
104 }
$message
__construct(ComposerInformation $composerInfo, DependencyChecker $dependencyChecker, ThemeDependencyCheckerFactory $themeDependencyCheckerFactory)