admin/migrate.php
<?php declare(strict_types=1);
// ------------------------------------------------------------------------ //
// XOOPS - PHP Content Management System //
// Copyright (c) 2000-2016 XOOPS.org //
// <https://xoops.org> //
// ------------------------------------------------------------------------ //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// You may not change or alter any portion of this comment or credits //
// of supporting developers from this source code or any supporting //
// source code which is considered copyrighted (c) material of the //
// original comment or credit authors. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
// ------------------------------------------------------------------------ //
// Author: Kazumi Ono (AKA onokazu) //
// URL: https://www.myweb.ne.jp/, https://xoops.org/, https://jp.xoops.org/ //
// Project: XOOPS Project //
// ------------------------------------------------------------------------- //
use Xmf\Request;
use XoopsModules\Adslight\{
Common\Configurator,
Common\Migrate,
};
/** @var Admin $adminObject */
/** @var Helper $helper */
require_once __DIR__ . '/admin_header.php';
xoops_cp_header();
$adminObject->displayNavigation(basename(__FILE__));
echo <<<EOF
<form method="post" class="form-inline">
<div class="form-group">
<input name="show" class="btn btn-default" type="submit" value="Show SQL">
</div>
<div class="form-group">
<input name="migrate" class="btn btn-default" type="submit" value="Do Migration">
</div>
<div class="form-group">
<input name="schema" class="btn btn-default" type="submit" value="Write Schema">
</div>
</form>
EOF;
//XoopsLoad::load('migrate', 'newbb');
//$configurator = new Configurator();
$migrator = new Migrate();
$op = Request::getCmd('op', 'default');
$opShow = Request::getCmd('show', '', 'POST');
$opMigrate = Request::getCmd('migrate', '', 'POST');
$opSchema = Request::getCmd('schema', '', 'POST');
$op = !empty($opShow) ? 'show' : $op;
$op = !empty($opMigrate) ? 'migrate' : $op;
$op = !empty($opSchema) ? 'schema' : $op;
$message = '';
switch ($op) {
case 'show':
$queue = $migrator->getSynchronizeDDL();
if (!empty($queue)) {
echo "<pre>\n";
foreach ($queue as $line) {
echo $line . ";\n";
}
echo "</pre>\n";
}
break;
case 'migrate':
$migrator->synchronizeSchema();
$message = 'Database migrated to current schema.';
break;
case 'schema':
xoops_confirm(
['op' => 'confirmwrite'],
'migrate.php',
'Warning! This is intended for developers only. Confirm write schema file from current database.',
'Confirm'
);
break;
case 'confirmwrite':
if ($GLOBALS['xoopsSecurity']->check()) {
$migrator->saveCurrentSchema();
$message = 'Current schema file written';
}
break;
}
echo "<div>{$message}</div>";
require_once __DIR__ . '/admin_footer.php';