This plugin advises you to back up your database before using it, which is good, because it is really easy to shoot yourself in the foot with this plugin.
The user experience is confusing. It tries to get you to experiment before doing anything that will actually change data, which is great, but in doing so, it adds complexity and confusion.
I have a few ideas on making it clearer and safer.
- For consistency, give people the option to limit the tables & fields they search agains in the trial/test section (it is currently only available when changing the database
- Make the whole process more "wizzard-like." Hide the UI for the potentially destructive actions and only expose it once the user has made the trial actions
- Require people to test the search/replace before allowing them to perform any changes on data.
- Once people have done a trial run, don't let them change the search/replace data before performing changes on data unless they do a new trial run
- Before performing changes, automatically make backup copies of the tables that will be changed
So, the flow would be:
- Click to the Search & Replace Screen
- Select fields and tables, enter search and replace criteria
- Click to run a trial query
- Review results
- Click to proceed with changing the database, or return to step #2 and alter the selected fields and criteria
- Confirm that you want to backup the tables and change the database
- Database table(s) is copied to a backup table(s), replace query is run
- User reviews results, is given the option of reverting to the backup tables
- If user clicks to approve of the results, they are then asked if they want to delete the backup.
- If they do not choose to delete the backup, the backup tables will be listed on a section of the main Search & Replace page where they can choose to delete them. If they don't choose to restore the backup immediately after running and reviewing the replace action, they are not given the option on the list of old backups. In order to reduce the chance that they accidentally restoring over new data, they will have to work directly with the database.