X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FConsole%2FDatabaseStructure.php;h=1ec108d2e61cfd2f0d5d2fc07502b733ba3843b3;hb=3aa77685fcccff9739384136b4894de43200fa8c;hp=709b9724e88cf34c73bfd02ac1b0ced108c67479;hpb=9665f4ed415d34cbcf09df8c6ca04882303e9544;p=friendica.git diff --git a/src/Core/Console/DatabaseStructure.php b/src/Core/Console/DatabaseStructure.php index 709b9724e8..1ec108d2e6 100644 --- a/src/Core/Console/DatabaseStructure.php +++ b/src/Core/Console/DatabaseStructure.php @@ -1,110 +1,93 @@ - - */ -class DatabaseStructure extends \Asika\SimpleConsole\Console -{ - protected $helpOptions = ['h', 'help', '?']; - - protected function getHelp() - { - $help = << [-h|--help|-?] [-v] - -Commands - dryrun Show database update schema queries without running them - update Update database schema - dumpsql Dump database schema - toinnodb Convert all tables from MyISAM to InnoDB - -Options - -h|--help|-? Show help information - -v Show more debug information. -HELP; - return $help; - } - - protected function doExecute() - { - if ($this->getOption('v')) { - $this->out('Class: ' . __CLASS__); - $this->out('Arguments: ' . var_export($this->args, true)); - $this->out('Options: ' . var_export($this->options, true)); - } - - if (count($this->args) == 0) { - $this->out($this->getHelp()); - return 0; - } - - if (count($this->args) > 1) { - throw new \Asika\SimpleConsole\CommandArgsException('Too many arguments'); - } - - require_once '.htconfig.php'; - $result = \dba::connect($db_host, $db_user, $db_pass, $db_data); - unset($db_host, $db_user, $db_pass, $db_data); - - if (!$result) { - throw new \RuntimeException('Unable to connect to database'); - } - - Core\Config::load(); - - switch ($this->getArgument(0)) { - case "dryrun": - $output = DBStructure::update(true, false); - break; - case "update": - $output = DBStructure::update(true, true); - - $build = Core\Config::get('system', 'build'); - if (empty($build)) { - Core\Config::set('system', 'build', DB_UPDATE_VERSION); - $build = DB_UPDATE_VERSION; - } - - $stored = intval($build); - $current = intval(DB_UPDATE_VERSION); - - // run any left update_nnnn functions in update.php - for ($x = $stored; $x < $current; $x ++) { - $r = run_update_function($x); - if (!$r) { - break; - } - } - - Core\Config::set('system', 'build', DB_UPDATE_VERSION); - break; - case "dumpsql": - ob_start(); - DBStructure::printStructure(); - $output = ob_get_clean(); - break; - case "toinnodb": - ob_start(); - DBStructure::convertToInnoDB(); - $output = ob_get_clean(); - break; - } - - $this->out($output); - - return 0; - } - -} + + */ +class DatabaseStructure extends \Asika\SimpleConsole\Console +{ + protected $helpOptions = ['h', 'help', '?']; + + protected function getHelp() + { + $help = << [-h|--help|-?] |-f|--force] [-v] + +Commands + dryrun Show database update schema queries without running them + update Update database schema + dumpsql Dump database schema + toinnodb Convert all tables from MyISAM to InnoDB + +Options + -h|--help|-? Show help information + -v Show more debug information. + -f|--force Force the command in case of "update" (Ignore failed updates/running updates) +HELP; + return $help; + } + + protected function doExecute() + { + if ($this->getOption('v')) { + $this->out('Class: ' . __CLASS__); + $this->out('Arguments: ' . var_export($this->args, true)); + $this->out('Options: ' . var_export($this->options, true)); + } + + if (count($this->args) == 0) { + $this->out($this->getHelp()); + return 0; + } + + if (count($this->args) > 1) { + throw new \Asika\SimpleConsole\CommandArgsException('Too many arguments'); + } + + if (!DBA::connected()) { + throw new RuntimeException('Unable to connect to database'); + } + + Core\Config::load(); + + $a = get_app(); + + switch ($this->getArgument(0)) { + case "dryrun": + $output = DBStructure::update($a->getBasePath(), true, false); + break; + case "update": + $force = $this->getOption(['f', 'force'], false); + $output = Update::run($a->getBasePath(), $force, true, false); + break; + case "dumpsql": + ob_start(); + DBStructure::printStructure($a->getBasePath()); + $output = ob_get_clean(); + break; + case "toinnodb": + ob_start(); + DBStructure::convertToInnoDB(); + $output = ob_get_clean(); + break; + default: + $output = 'Unknown command: ' . $this->getArgument(0); + } + + $this->out($output); + + return 0; + } + +}