Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
PackagesData Class Reference

Public Member Functions

 __construct (\Magento\Framework\Composer\ComposerInformation $composerInformation, \Magento\Setup\Model\DateTime\TimeZoneProvider $timeZoneProvider, \Magento\Setup\Model\PackagesAuth $packagesAuth, \Magento\Framework\Filesystem $filesystem, \Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider, \Magento\Setup\Model\Grid\TypeMapper $typeMapper)
 
 syncPackagesData ()
 
 getInstalledPackages ()
 
 getPackagesForUpdate ()
 
 addPackageExtraInfo (array $package)
 
 getPackagesForInstall ()
 
 getMetaPackagesMap ()
 

Data Fields

const COMPOSER_SHOW = 'show'
 
const PARAM_COMMAND = 'command'
 
const PARAM_PACKAGE = 'package'
 
const PARAM_AVAILABLE = '--available'
 

Protected Member Functions

 isNewUserPackage ($package, $packageNames)
 
 unsetDevVersions ($package)
 

Protected Attributes

 $urlPrefix = 'https://'
 

Detailed Description

Class PackagesData returns system packages and available for update versions @SuppressWarnings(PHPMD.CouplingBetweenObjects)

Definition at line 12 of file PackagesData.php.

Constructor & Destructor Documentation

◆ __construct()

PackagesData constructor.

Parameters
\Magento\Framework\Composer\ComposerInformation$composerInformation

Definition at line 73 of file PackagesData.php.

80  {
81  $this->objectManagerProvider = $objectManagerProvider;
82  $this->composerInformation = $composerInformation;
83  $this->timeZoneProvider = $timeZoneProvider;
84  $this->packagesAuth = $packagesAuth;
85  $this->filesystem = $filesystem;
86  $this->typeMapper = $typeMapper;
87  }
$filesystem

Member Function Documentation

◆ addPackageExtraInfo()

addPackageExtraInfo ( array  $package)

Add package extra info

Parameters
array$package
Returns
array

Definition at line 321 of file PackagesData.php.

322  {
323  $extraInfo = $this->getPackageExtraInfo($package['name'], $package['version']);
324 
325  $package['package_title'] = isset($extraInfo['x-magento-ext-title']) ?
326  $extraInfo['x-magento-ext-title'] : $package['name'];
327  $package['package_type'] = isset($extraInfo['x-magento-ext-type']) ? $extraInfo['x-magento-ext-type'] :
328  $this->typeMapper->map($package['type']);
329  $package['package_link'] = isset($extraInfo['x-magento-ext-package-link']) ?
330  $extraInfo['x-magento-ext-package-link'] : '';
331 
332  return $package;
333  }

◆ getInstalledPackages()

getInstalledPackages ( )

Get list of manually installed package

Returns
array

Definition at line 177 of file PackagesData.php.

178  {
179  $installedPackages = array_intersect_key(
180  $this->composerInformation->getInstalledMagentoPackages(),
181  $this->composerInformation->getRootPackage()->getRequires()
182  );
183 
184  foreach ($installedPackages as &$package) {
185  $package = $this->addPackageExtraInfo($package);
186  }
187 
188  return $this->filterPackagesList($installedPackages);
189  }

◆ getMetaPackagesMap()

getMetaPackagesMap ( )

Get all metapackages

Returns
array

Definition at line 451 of file PackagesData.php.

452  {
453  if ($this->metapackagesMap === null) {
454  $packages = $this->getPackagesJson();
455  array_walk($packages, function ($packageVersions) {
456  $package = array_shift($packageVersions);
457  if ($package['type'] == \Magento\Framework\Composer\ComposerInformation::METAPACKAGE_PACKAGE_TYPE
458  && isset($package['require'])
459  ) {
460  foreach (array_keys($package['require']) as $key) {
461  $this->metapackagesMap[$key] = $package['name'];
462  }
463  }
464  });
465  }
466 
467  return $this->metapackagesMap;
468  }

◆ getPackagesForInstall()

getPackagesForInstall ( )

Sync list of available for install versions for packages

Returns
array
Exceptions

Definition at line 378 of file PackagesData.php.

379  {
380  $actualInstallPackages = [];
381 
382  try {
383  $installPackages = $this->syncPackagesForInstall()['packages'];
384  $metaPackageByPackage = $this->getMetaPackageForPackage($installPackages);
385  foreach ($installPackages as $package) {
386  $package['metapackage'] =
387  isset($metaPackageByPackage[$package['name']]) ? $metaPackageByPackage[$package['name']] : '';
388  $actualInstallPackages[$package['name']] = $package;
389  $actualInstallPackages[$package['name']]['version'] = $package['versions'][0];
390  }
391  $installPackagesInfo['packages'] = $actualInstallPackages;
392  return $installPackagesInfo;
393  } catch (\Exception $e) {
394  throw new \RuntimeException('Error in getting new packages to install');
395  }
396  }

◆ getPackagesForUpdate()

getPackagesForUpdate ( )

Get packages that need updates

Returns
array

Definition at line 196 of file PackagesData.php.

197  {
198  $packagesForUpdate = [];
199  $packages = $this->getInstalledPackages();
200 
201  foreach ($packages as $package) {
202  $latestProductVersion = $this->getLatestNonDevVersion($package['name']);
203  if ($latestProductVersion && version_compare($latestProductVersion, $package['version'], '>')) {
204  $availableVersions = $this->getPackageAvailableVersions($package['name']);
205  $package['latestVersion'] = $latestProductVersion;
206  $package['versions'] = array_filter($availableVersions, function ($version) use ($package) {
207  return version_compare($version, $package['version'], '>');
208  });
209  $packagesForUpdate[$package['name']] = $package;
210  }
211  }
212 
213  return $packagesForUpdate;
214  }

◆ isNewUserPackage()

isNewUserPackage (   $package,
  $packageNames 
)
protected

Check if this new user package

Parameters
array$package
array$packageNames
Returns
bool

Definition at line 342 of file PackagesData.php.

343  {
344  if (!in_array($package['name'], $packageNames) &&
345  in_array($package['type'], $this->composerInformation->getPackagesTypes()) &&
346  strpos($package['name'], 'magento/product-') === false &&
347  strpos($package['name'], 'magento/project-') === false
348  ) {
349  return true;
350  }
351  return false;
352  }
return false
Definition: gallery.phtml:36

◆ syncPackagesData()

syncPackagesData ( )
Returns
array|bool|mixed
Exceptions

Definition at line 93 of file PackagesData.php.

94  {
95  try {
96  $lastSyncData = [];
97  $lastSyncData['lastSyncDate'] = $this->getLastSyncDate();
98  $lastSyncData['packages'] = $this->getPackagesForUpdate();
99  $packagesForInstall = $this->syncPackagesForInstall();
100  $lastSyncData = $this->formatLastSyncData($packagesForInstall, $lastSyncData);
101  return $lastSyncData;
102  } catch (\Exception $e) {
103  throw new \RuntimeException($e->getMessage());
104  }
105  }

◆ unsetDevVersions()

unsetDevVersions (   $package)
protected

Unset dev versions

Parameters
array$package
Returns
array

Definition at line 360 of file PackagesData.php.

361  {
362  foreach ($package as $key => $version) {
363  if (strpos($key, 'dev') !== false) {
364  unset($package[$key]);
365  }
366  }
367  unset($version);
368 
369  return $package;
370  }

Field Documentation

◆ $urlPrefix

$urlPrefix = 'https://'
protected

Definition at line 31 of file PackagesData.php.

◆ COMPOSER_SHOW

const COMPOSER_SHOW = 'show'

#+ Composer command params and options

Definition at line 17 of file PackagesData.php.

◆ PARAM_AVAILABLE

const PARAM_AVAILABLE = '--available'

Definition at line 20 of file PackagesData.php.

◆ PARAM_COMMAND

const PARAM_COMMAND = 'command'

Definition at line 18 of file PackagesData.php.

◆ PARAM_PACKAGE

const PARAM_PACKAGE = 'package'

Definition at line 19 of file PackagesData.php.


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