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