diff --git a/src/Console/DatabaseStructure.php b/src/Console/DatabaseStructure.php
index 6b1fa8d4d..a1b4fdbfe 100644
--- a/src/Console/DatabaseStructure.php
+++ b/src/Console/DatabaseStructure.php
@@ -55,6 +55,7 @@ Commands
update Update database schema
dumpsql Dump database schema
toinnodb Convert all tables from MyISAM or InnoDB in the Antelope file format to InnoDB in the Barracuda file format
+ version Set the database to a given number
Options
-h|--help|-? Show help information
@@ -86,8 +87,10 @@ HELP;
return 0;
}
- if (count($this->args) > 1) {
+ if ((count($this->args) > 1) && ($this->getArgument(0) != 'version')) {
throw new \Asika\SimpleConsole\CommandArgsException('Too many arguments');
+ } elseif ((count($this->args) != 2) && ($this->getArgument(0) == 'version')) {
+ throw new \Asika\SimpleConsole\CommandArgsException('This command needs two arguments');
}
if (!$this->dba->isConnected()) {
@@ -115,6 +118,12 @@ HELP;
DBStructure::convertToInnoDB();
$output = ob_get_clean();
break;
+ case "version":
+ ob_start();
+ DBStructure::setDatabaseVersion($this->getArgument(1));
+ $output = ob_get_clean();
+ break;
+
default:
$output = 'Unknown command: ' . $this->getArgument(0);
}
diff --git a/src/Database/DBStructure.php b/src/Database/DBStructure.php
index bf76eccac..bdd8cc208 100644
--- a/src/Database/DBStructure.php
+++ b/src/Database/DBStructure.php
@@ -48,6 +48,22 @@ class DBStructure
*/
private static $definition = [];
+ /**
+ * Set a database version to trigger update functions
+ *
+ * @param string $version
+ * @return void
+ */
+ public static function setDatabaseVersion(string $version)
+ {
+ if (!is_numeric($version)) {
+ throw new \Asika\SimpleConsole\CommandArgsException('The version number must be numeric');
+ }
+
+ DI::config()->set('system', 'build', $version);
+ echo DI::l10n()->t('The database version had been set to %s.', $version);
+ }
+
/**
* Converts all tables from MyISAM/InnoDB Antelope to InnoDB Barracuda
*/
diff --git a/src/Module/Friendica.php b/src/Module/Friendica.php
index 2d76f80d0..f02cc2610 100644
--- a/src/Module/Friendica.php
+++ b/src/Module/Friendica.php
@@ -95,7 +95,7 @@ class Friendica extends BaseModule
'about' => DI::l10n()->t('This is Friendica, version %s that is running at the web location %s. The database version is %s, the post update version is %s.',
'' . FRIENDICA_VERSION . '',
DI::baseUrl()->get(),
- '' . DB_UPDATE_VERSION . '',
+ '' . DB_UPDATE_VERSION . '/' . $config->get('system', 'build') .'',
'' . $config->get('system', 'post_update_version') . ''),
'friendica' => DI::l10n()->t('Please visit Friendi.ca to learn more about the Friendica project.'),
'bugs' => DI::l10n()->t('Bug reports and issues: please visit') . ' ' . '' . DI::l10n()->t('the bugtracker at github') . '',