dbVersionInfo = $dbVersionInfo;
}
/**
* @inheritdoc
*/
public function getNotUpToDateMessage(): string
{
$genericMessage = 'The module code base doesn\'t match the DB schema and data.' .
PHP_EOL .
'Some modules use code versions newer or older than the database.';
$messages = [];
$versionParser = new VersionParser();
$codebaseUpdateNeeded = false;
foreach ($this->dbVersionInfo->getDbVersionErrors() as $error) {
if (!$codebaseUpdateNeeded && $error[DbVersionInfo::KEY_CURRENT] !== 'none') {
// check if module code base update is needed
$currentVersion = $versionParser->parseConstraints($error[DbVersionInfo::KEY_CURRENT]);
$requiredVersion = $versionParser->parseConstraints('>' . $error[DbVersionInfo::KEY_REQUIRED]);
if ($requiredVersion->matches($currentVersion)) {
$codebaseUpdateNeeded = true;
}
$messages[] = sprintf(
"%20s %10s: %11s -> %-11s",
$error[DbVersionInfo::KEY_MODULE],
$error[DbVersionInfo::KEY_TYPE],
$error[DbVersionInfo::KEY_CURRENT],
$error[DbVersionInfo::KEY_REQUIRED]
);
}
}
return implode(PHP_EOL, $messages) . ($codebaseUpdateNeeded ? $genericMessage : '');
}
/**
* Is up to date
*
* @return bool
*/
public function isUpToDate(): bool
{
return empty($this->dbVersionInfo->getDbVersionErrors());
}
}