103 lines
2.5 KiB
PHP
103 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace BitApps\FM\Providers;
|
|
|
|
use BitApps\FM\Config;
|
|
use BitApps\WPDatabase\Schema;
|
|
use BitApps\WPKit\Migration\MigrationHelper;
|
|
use BitApps\WPKit\Utils\Capabilities;
|
|
use BitApps\WPDatabase\Connection;
|
|
|
|
\defined('ABSPATH') || exit();
|
|
|
|
class VersionMigrationProvider
|
|
{
|
|
private $_oldVersion;
|
|
|
|
private $_currentVersion;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->_oldVersion = Config::getOption('version', '528');
|
|
$this->_currentVersion = Config::VERSION_ID;
|
|
}
|
|
|
|
public function migrate()
|
|
{
|
|
if (!Capabilities::check('manage_options')) {
|
|
return;
|
|
}
|
|
|
|
if ($this->_oldVersion < $this->_currentVersion) {
|
|
$this->migrateToLatest();
|
|
}
|
|
|
|
if (version_compare(Config::getOption('db_version', '0.0'), Config::DB_VERSION, '<')) {
|
|
MigrationHelper::migrate(InstallerProvider::migration());
|
|
}
|
|
}
|
|
|
|
private function migrateToLatest()
|
|
{
|
|
$this->migrateTo651();
|
|
}
|
|
|
|
private function migrateTo651()
|
|
{
|
|
if ($this->_oldVersion >= 651) {
|
|
return;
|
|
}
|
|
|
|
Schema::withPrefix(Connection::wpPrefix() . 'fm_')->drop('logs');
|
|
Schema::withPrefix(Connection::wpPrefix() . 'fm_')->drop('log');
|
|
$this->migrateTo600();
|
|
}
|
|
|
|
private function migrateTo600()
|
|
{
|
|
if ($this->_oldVersion >= 600) {
|
|
return;
|
|
}
|
|
|
|
delete_option('fm_current_version');
|
|
delete_option('fm_log');
|
|
$this->renameSettingsOptionV600();
|
|
$this->renameReviewOptionV600();
|
|
$this->migrateTo502();
|
|
}
|
|
|
|
private function renameSettingsOptionV600()
|
|
{
|
|
$previousSettings = get_option('file-manager', false);
|
|
if ($previousSettings && isset($previousSettings['file_manager_settings'])) {
|
|
Config::addOption(
|
|
'preferences',
|
|
$previousSettings['file_manager_settings'],
|
|
true
|
|
);
|
|
delete_option('file-manager');
|
|
}
|
|
}
|
|
|
|
private function renameReviewOptionV600()
|
|
{
|
|
$previousReview = get_option('fm-review-data', false);
|
|
if ($previousReview) {
|
|
Config::addOption(
|
|
'notify_review',
|
|
maybe_unserialize($previousReview),
|
|
true
|
|
);
|
|
delete_option('fm-review-data');
|
|
}
|
|
}
|
|
|
|
private function migrateTo502()
|
|
{
|
|
$logFile = FM_UPLOAD_BASE_DIR . DIRECTORY_SEPARATOR . 'log.txt';
|
|
if (file_exists($logFile)) {
|
|
unlink($logFile);
|
|
}
|
|
}
|
|
}
|