get('wcgateway.settings'); assert($settings instanceof Settings); // TODO: This is a flag only present in the #legacy-ui. Should we change this to a filter, or remove the DB reset code? $should_clear_db = $settings->has('uninstall_clear_db_on_uninstall') && $settings->get('uninstall_clear_db_on_uninstall'); if (!$should_clear_db) { return; } $clear_db = $app_container->get('uninstall.clear-db'); assert($clear_db instanceof ClearDatabaseInterface); $option_names = $app_container->get('uninstall.ppcp-all-option-names'); $scheduled_action_names = $app_container->get('uninstall.ppcp-all-scheduled-action-names'); $clear_db->delete_options($option_names); $clear_db->clear_scheduled_actions($scheduled_action_names); } catch (\WooCommerce\PayPalCommerce\Throwable $throwable) { $message = sprintf('Error: %s
%s
', $throwable->getMessage(), $throwable->getTraceAsString()); add_action('all_admin_notices', static function () use ($message) { $class = 'notice notice-error'; printf('

%2$s

', esc_attr($class), wp_kses_post($message)); }); } })($root_dir); /** * Clears plugin branding by resetting the installation path flag. * * @param ContainerInterface $container The plugin's DI container. * @return void */ function clear_plugin_branding(ContainerInterface $container): void { /* * This flag is set by WooCommerce when the plugin is installed via their * Settings page. We remove it here, as uninstalling the plugin should * open up the possibility of installing it from a different source in * "white label" mode. */ delete_option('woocommerce_paypal_branded'); delete_option('ppcp_bn_code'); try { $general_settings = $container->get('settings.data.general'); assert($general_settings instanceof GeneralSettings); if ($general_settings->reset_installation_path('plugin_uninstall')) { $general_settings->save(); } } catch (NotFoundExceptionInterface $e) { // The container does not exist or did not return a GeneralSettings instance. // In any case: A failure can be ignored, as it means we cannot reset anything. return; } }