Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
OldDbValidator.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
10 use Composer\Package\Version\VersionParser;
12 
18 {
22  private $dbVersionInfo;
23 
27  public function __construct(DbVersionInfo $dbVersionInfo)
28  {
29  $this->dbVersionInfo = $dbVersionInfo;
30  }
31 
35  public function getNotUpToDateMessage(): string
36  {
37  $genericMessage = '<info>The module code base doesn\'t match the DB schema and data.</info>' .
38  PHP_EOL .
39  '<info>Some modules use code versions newer or older than the database.</info>';
40  $messages = [];
41  $versionParser = new VersionParser();
42  $codebaseUpdateNeeded = false;
43  foreach ($this->dbVersionInfo->getDbVersionErrors() as $error) {
44  if (!$codebaseUpdateNeeded && $error[DbVersionInfo::KEY_CURRENT] !== 'none') {
45  // check if module code base update is needed
46  $currentVersion = $versionParser->parseConstraints($error[DbVersionInfo::KEY_CURRENT]);
47  $requiredVersion = $versionParser->parseConstraints('>' . $error[DbVersionInfo::KEY_REQUIRED]);
48  if ($requiredVersion->matches($currentVersion)) {
49  $codebaseUpdateNeeded = true;
50  };
51 
52  $messages[] = sprintf(
53  "<info>%20s %10s: %11s -> %-11s</info>",
58  );
59  }
60  }
61 
62  return implode(PHP_EOL, $messages) . ($codebaseUpdateNeeded ? $genericMessage : '');
63  }
64 
68  public function isUpToDate(): bool
69  {
70  return empty($this->dbVersionInfo->getDbVersionErrors());
71  }
72 }
__construct(DbVersionInfo $dbVersionInfo)