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()); } }