* @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3 * @link http://snapcreek.com */ class ProBase extends \Duplicator\Core\Addons\AbstractAddonCore { /** * @return void */ public function init(): void { add_action('init', [$this, 'hookInit']); add_filter('duplicator_main_menu_label', fn(): string => 'Duplicator Pro'); add_filter('duplicator_menu_pages', [$this, 'addScheduleMenuField']); add_action(MigrationMng::HOOK_FIRST_LOGIN_AFTER_INSTALL, function (MigrateData $migrationData): void { License::clearVersionCache(true); $licenseData = LicenseData::getInstance(); if ($licenseData->getStatus() !== LicenseData::STATUS_VALID) { $licenseData->activate(); } }); add_action('duplicator_after_activation', [$this, 'onUpgradePlugin'], 10, 2); add_action('duplicator_before_update_crypt_setting', [self::class, 'beforeCryptUpdateSettings']); add_action('duplicator_after_update_crypt_setting', [self::class, 'afterCryptUpdateSettings']); add_filter('duplicator_dynamic_data_skip_reset', function (array $skipResetData): array { $skipResetData[] = 'license_key_visible'; $skipResetData[] = 'license_key_visible_pwd'; return $skipResetData; }); add_filter('duplicator_dynamic_skip_data_export', function (array $skipExportData): array { $skipExportData[] = 'license_key_visible'; $skipExportData[] = 'license_key_visible_pwd'; return $skipExportData; }); LicenseNotices::init(); LicensingController::init(); } /** * Add schedule menu page * * @param array $basicMenuPages menu pages * * @return array */ public function addScheduleMenuField($basicMenuPages) { $page = SchedulePageController::getInstance(); $basicMenuPages[$page->getSlug()] = $page; return $basicMenuPages; } /** * Function calle on duplicator_addons_loaded hook * * @return void */ public function hookInit(): void { License::check(); } /** * Function called on plugin upgrade * * @param false|string $currentVersion current version * @param string $newVersion new version * * @return void */ public function onUpgradePlugin($currentVersion, $newVersion): void { if ($currentVersion !== false && version_compare($currentVersion, '4.5.16-beta1', '<')) { $legacyKey = get_option(LicenseData::LICENSE_OLD_KEY_OPTION_NAME, ''); if (!empty($legacyKey)) { LicenseData::getInstance()->setKey($legacyKey); } delete_option(LicenseData::LICENSE_OLD_KEY_OPTION_NAME); } License::clearVersionCache(false); } /** * Before crypt update settings * * @return void */ public static function beforeCryptUpdateSettings(): void { // make sure the license date si reade before the settings are updated LicenseData::getInstance(); } /** * After crypt update settings * * @return void */ public static function afterCryptUpdateSettings(): void { LicenseData::getInstance()->save(); } /** * * @return string */ public static function getAddonPath(): string { return __DIR__; } /** * * @return string */ public static function getAddonFile(): string { return __FILE__; } }