Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions
UninstallDependencyCheck Class Reference

Public Member Functions

 __construct (ComposerInformation $composerInfo, DependencyChecker $dependencyChecker, ThemeDependencyCheckerFactory $themeDependencyCheckerFactory)
 
 runUninstallReadinessCheck (array $packages)
 

Detailed Description

Class checks components dependencies for uninstall flow

Definition at line 16 of file UninstallDependencyCheck.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( ComposerInformation  $composerInfo,
DependencyChecker  $dependencyChecker,
ThemeDependencyCheckerFactory  $themeDependencyCheckerFactory 
)

Constructor

Parameters
ComposerInformation$composerInfo
DependencyChecker$dependencyChecker
ThemeDependencyCheckerFactory$themeDependencyCheckerFactory

Definition at line 42 of file UninstallDependencyCheck.php.

46  {
47  $this->composerInfo = $composerInfo;
48  $this->packageDependencyChecker = $dependencyChecker;
49  $this->themeDependencyChecker = $themeDependencyCheckerFactory->create();
50  }

Member Function Documentation

◆ runUninstallReadinessCheck()

runUninstallReadinessCheck ( array  $packages)

Run Composer dependency check for uninstall

Parameters
array$packages
Returns
array
Exceptions

Definition at line 59 of file UninstallDependencyCheck.php.

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  }
$message

The documentation for this class was generated from the following file: