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 ( 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; } }