PluginProbe
Database Reset / 3.25
Database Reset v3.25
2.3.2 3.0 3.0.1 3.0.2 3.1 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23 3.24 3.25 trunk 1.0 1.2 1.2.1 1.2.2 1.3 1.4 2.0 2.1 All 27 releases
← All changes | wp-reset.php +46 -303 1.23.25 View file →
@@ -1,313 +1,56 @@
1 1 <?php
2 2 /*
3 -Plugin Name: WP Reset
4 -Plugin URI: https://github.com/chrisberthe/wp-reset
5 -Description: A plugin that allows you to reset the database to WordPress's initial state.
6 -Version: 1.0
7 -Author: Chris Berthe ☻
8 -Author URI: https://github.com/chrisberthe
9 -License: GNU General Public License
3 + Plugin Name: WP Database Reset
4 + Plugin URI: https://wordpress.org/plugins/wordpress-database-reset/
5 + Description: Reset all or some WP database tables back to their original state.
6 + Version: 3.25
7 + Tested up to: 7.1
8 + Author: WebFactory Ltd
9 + Author URI: https://www.webfactoryltd.com/
10 + License: GPLv2 or later
11 + Text-domain: wordpress-database-reset
12 +
13 + Copyright 2011 - 2026 WebFactory Ltd (email: support@webfactoryltd.com)
14 +
15 + This program is free software; you can redistribute it and/or modify
16 + it under the terms of the GNU General Public License, version 2, as
17 + published by the Free Software Foundation.
18 +
19 + This program is distributed in the hope that it will be useful,
20 + but WITHOUT ANY WARRANTY; without even the implied warranty of
21 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 + GNU General Public License for more details.
23 +
24 + You should have received a copy of the GNU General Public License
25 + along with this program; if not, write to the Free Software
26 + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
10 27 */
11 28
12 -if ( ! class_exists('cb_wp_reset') && is_admin() ) :
29 +define( 'DB_RESET_VERSION', '3.25' );
30 +define( 'DB_RESET_PATH', dirname( __FILE__ ) );
31 +define( 'DB_RESET_NAME', basename( DB_RESET_PATH ) );
32 +define( 'DB_RESET_FILE', __FILE__ );
33 +define( 'AUTOLOADER', DB_RESET_PATH . '/lib/class-plugin-autoloader.php' );
13 34
14 - class cb_wp_reset
15 - {
16 - /**
17 - * Nonce value
18 - */
19 - private $_nonce = 'wp-reset-nonce';
20 -
21 - /**
22 - * Loads default options
23 - *
24 - * @return void
25 - */
26 - function __construct()
27 - {
28 - add_action('init', array($this, 'init_language'));
29 - add_action('admin_init', array($this, 'wp_reset_init'));
30 - add_action('admin_init', array($this, '_redirect_user'));
31 - add_action('admin_footer', array($this, 'add_admin_javascript'));
32 - add_action('admin_menu', array($this, 'add_admin_menu'));
33 - add_filter('contextual_help', array($this, 'add_contextual_help'), 10, 2);
34 - add_filter('wp_mail', array($this, '_fix_mail'));
35 - }
36 -
37 - /**
38 - * Handles the admin page functionality
39 - *
40 - * @access public
41 - * @uses wp_install Located in includes/upgrade.php (line 22)
42 - */
43 - function wp_reset_init()
44 - {
45 - global $wpdb, $current_user, $pagenow;
46 -
47 - if ( isset($_POST['wp-random-value'], $_POST['wp-reset-input']) && $_POST['wp-random-value'] == $_POST['wp-reset-input']
48 - && check_admin_referer('wp-nonce-submit', $this->_nonce) )
49 - {
50 - require_once( ABSPATH . '/wp-admin/includes/upgrade.php' );
51 -
52 - $blog_title = get_option('blogname');
53 - $public = get_option('blog_public');
54 -
55 - $admin_user = get_userdatabylogin('admin');
56 - $user = ( ! $admin_user || ! user_can( $admin_user->ID, 'update_core' ) ) ? $current_user : $admin_user;
57 -
58 - // Run through the database columns and drop all the tables
59 - if ( $db_tables = $wpdb->get_col("SHOW TABLES LIKE '{$wpdb->prefix}%'") )
60 - {
61 - foreach ( $db_tables as $db_table )
62 - {
63 - $wpdb->query("DROP TABLE {$db_table}");
64 - }
65 -
66 - // Return user keys and import variables
67 - $keys = wp_install($blog_title, $user->user_login, $user->user_email, $public);
68 - $this->_wp_update_user($user, $keys);
69 - }
70 -
71 - // Reactivate the plugin after reinstalling
72 - if ( isset($_POST['wp-reset-check']) && $_POST['wp-reset-check'] == 'true' )
73 - {
74 - update_option('active_plugins', array(plugin_basename(__FILE__)));
75 - wp_redirect(admin_url($pagenow) . '?page=wp-reset&reset=success'); exit();
76 - }
77 -
78 - // If the wp-reset-check isn't checked just redirect user to dashboard
79 - wp_redirect(admin_url()); exit();
80 - }
81 - }
82 -
83 - /**
84 - * Displays the admin page
85 - *
86 - * @access public
87 - * @return void
88 - */
89 - function show_admin_page()
90 - {
91 - global $current_user;
92 -
93 - // Return to see if admin object exists
94 - $admin_user = get_userdatabylogin('admin');
95 -
96 - // Generate a random value for the input box
97 - $random_string = $this->_rand_string();
98 -?>
99 - <?php if ( isset($_POST['wp-random-value'], $_POST['wp-reset-input']) && $_POST['wp-random-value'] != $_POST['wp-reset-input'] ) : ?>
100 - <div class="error"><p><strong><?php _e('You entered the wrong value - please try again', 'wp-reset') ?>.</strong></p></div>
101 - <?php elseif ( isset($_GET['reset']) && $_GET['reset'] == 'success' ) : ?>
102 - <div class="updated"><p><strong><?php _e('The WordPress database has been reset successfully', 'wp-reset') ?>.</strong></p></div>
103 - <?php endif ?>
35 +require_once( DB_RESET_PATH . '/lib/helpers.php' );
104 36
105 - <div class="wrap">
106 - <?php screen_icon() ?>
107 - <h2><?php _e('Database Reset', 'wp-reset') ?></h2>
108 - <p><?php _e('Please type in (or copy/paste) the generated value into the text box', 'wp-reset') ?>:&nbsp;&nbsp;<strong><?php echo $random_string ?></strong></p>
109 - <form action="" method="POST" id="wp-reset-form">
110 - <?php wp_nonce_field('wp-nonce-submit', $this->_nonce) ?>
111 - <input type="hidden" name="wp-random-value" value="<?php echo $random_string ?>" id="wp-random-value" />
112 - <input type="text" name="wp-reset-input" value="" id="wp-reset-input" />
113 - <input type="submit" name="wp-reset-submit" value="<?php _e('Reset Database', 'wp-reset') ?>" id="wp-reset-submit" class="button-primary" />
114 - <p>
115 - <label for="wp-reset-check">
116 - <input type="checkbox" name="wp-reset-check" id="wp-reset-check" checked="checked" value="true" />
117 - <?php _e('Reactivate plugin after resetting?', 'wp-reset') ?>
118 - </label>
119 - </p>
120 - </form>
121 -
122 - <?php if ( ! $admin_user || ! user_can( $admin_user->ID, 'update_core' ) ) : ?>
123 - <p style="margin-top: 25px"><?php printf(__('The default user <strong><u>admin</u></strong> was never created for this WordPress install. So <strong><u>%s</u></strong> will be recreated with its current password instead', 'wp-reset'), $current_user->user_login) ?>.</p>
124 - <?php else : ?>
125 - <p><?php _e('The default user <strong><u>admin</u></strong> will be recreated with its current password upon resetting', 'wp-reset') ?>.</p>
126 - <?php endif; ?>
127 -
128 - <p><?php _e('Note that once you reset the database, all users will be deleted except the initial admin user.', 'wp-reset') ?></p>
129 - </div>
130 -<?php }
131 -
132 - /**
133 - * Add JavaScript to the bottom of the plugin page
134 - *
135 - * @access public
136 - * @return bool TRUE on reset confirmation
137 - */
138 - function add_admin_javascript()
139 - {
140 -?>
141 - <script type="text/javascript">
142 - /* <![CDATA[ */
143 - jQuery('#wp-reset-submit').click(function() {
144 - var message = "<?php _e('Clicking OK will result in your database being reset to its initial settings. Continue?', 'wp-reset') ?>";
145 - var reset = confirm(message);
146 -
147 - if ( reset ) {
148 - jQuery('#wp-reset-form').submit();
149 - } else {
150 - return false;
151 - }
152 - });
153 - /* ]]> */
154 - </script>
155 -<?php
156 - }
157 -
158 - /**
159 - * Adds our submenu item to the Tools menu
160 - *
161 - * @access public
162 - * @return void
163 - */
164 - function add_admin_menu()
165 - {
166 - if ( current_user_can( 'update_core' ) )
167 - {
168 - $this->_hook = add_submenu_page('tools.php', 'Database Reset', 'Database Reset', 'update_core', 'wp-reset', array($this, 'show_admin_page'));
169 - }
170 - }
171 -
172 - /**
173 - * Adds the contextual help for our plugin page
174 - *
175 - * @access public
176 - * @param $contextual_help Hook text to display
177 - * @param $screen_id ID of the current admin screen
178 - * @return $contextual_help String The help text
179 - */
180 - function add_contextual_help($contextual_help, $screen_id)
181 - {
182 - if ($screen_id == $this->_hook)
183 - {
184 - $contextual_help = '<p>' . __('Have any cool ideas for this plugin? Contact me either by <a href="http://twitter.com/#!/chrisberthe">Twitter</a> or by <a href="https://github.com/chrisberthe">GitHub</a>.', 'wp-reset') . '</p>';
185 - $contextual_help .= '<p>' . __('If this plugin becomes non-functional in any way due to WordPress upgrades, rest assured I will update it.', 'wp-reset') . '</p>';
186 - $contextual_help .= '<p>' . __('Goodbye for now.', 'wp-reset') . '</p>';
187 - }
188 -
189 - return $contextual_help;
190 - }
191 -
192 - /**
193 - * Load language path
194 - *
195 - * @access public
196 - * @return void
197 - */
198 - function init_language()
199 - {
200 - $language_dir = basename(dirname(__FILE__)) . '/languages';
201 - load_plugin_textdomain('wp-reset', FALSE, $language_dir);
202 - }
203 -
204 - /**
205 - * For activation hook
206 - *
207 - * @access public
208 - * @return void
209 - */
210 - function plugin_activate()
211 - {
212 - add_option('wp-reset-activated', true);
213 - }
214 -
215 - /**
216 - * Redirects the user after the plugin is activated
217 - *
218 - * @access private
219 - * @return void
220 - */
221 - function _redirect_user()
222 - {
223 - if ( get_option('wp-reset-activated', false) )
224 - {
225 - delete_option('wp-reset-activated');
226 - wp_redirect(admin_url('tools.php') . '?page=wp-reset');
227 - }
228 - }
229 -
230 - /**
231 - * Changes the password to a sentence rather than
232 - * an auto-generated password that is sent by email
233 - * right after the installation is complete
234 - *
235 - * @access private
236 - * @return $mail Version with password changed
237 - */
238 - function _fix_mail($mail)
239 - {
240 - $subject = __('WordPress Database Reset', 'wp-reset');
241 - $message = __('The WordPress database has been successfully reset to its default settings:', 'wp-reset');
242 - $password = __('Password: The password you chose during the install.', 'wp-reset');
243 -
244 - if ( stristr($mail['message'], 'Your new WordPress site has been successfully set up at:') )
245 - {
246 - $mail['subject'] = preg_replace('/New WordPress Site/', $subject, $mail['subject']);
247 - $mail['message'] = preg_replace('/Your new WordPress site has been successfully set up at:+/', $message, $mail['message']);
248 - $mail['message'] = preg_replace('/Password:\s.+/', $password, $mail['message']);
249 - }
250 -
251 - return $mail;
252 - }
253 -
254 - /**
255 - * Updates the user password and clears / sets
256 - * the authentication cookie for the user
257 - *
258 - * @access private
259 - * @param $user Current or admin user
260 - * @param $keys Array returned by wp_install()
261 - * @return TRUE on install success, FALSE otherwise
262 - */
263 - function _wp_update_user($user, $keys)
264 - {
265 - global $wpdb;
266 - extract($keys, EXTR_SKIP);
37 +require_once dirname(__FILE__) . '/wf-flyout/wf-flyout.php';
38 +new wf_flyout(__FILE__);
267 39
268 - // Set the old password back to the user
269 - $query = $wpdb->prepare("UPDATE $wpdb->users SET user_pass = '%s', user_activation_key = '' WHERE ID = '%d'", $user->user_pass, $user_id);
270 -
271 - if ( $wpdb->query($query) )
272 - {
273 - // Set the default_password_nag to nothing
274 - // so it doesn't pop up with the password reminder after installing
275 - if ( get_user_meta($user_id, 'default_password_nag') ) delete_user_meta($user_id, 'default_password_nag');
40 +register_activation_hook( __FILE__, 'db_reset_activate' );
276 41
277 - wp_clear_auth_cookie();
278 - wp_set_auth_cookie($user_id);
279 -
280 - return TRUE;
281 - }
282 -
283 - return FALSE;
284 - }
285 -
286 - /**
287 - * Generates a random value for our input box
288 - *
289 - * @access private
290 - * @param $length Length of the random string value
291 - * @return $random_string
292 - */
293 - function _rand_string($length = 5)
294 - {
295 - $random_string = '';
296 - $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
297 - $size = strlen($chars);
298 -
299 - for ($i = 0; $i < $length; $i++)
300 - {
301 - $random_string .= $chars[rand(0, $size-1)];
302 - }
303 -
304 - return $random_string;
305 - }
306 -
307 - }
42 +load_plugin_textdomain( 'wordpress-database-reset' );
308 43
309 - $cb_wp_reset = new cb_wp_reset();
310 -
311 - register_activation_hook( __FILE__, array('cb_wp_reset', 'plugin_activate') );
44 +if ( file_exists( AUTOLOADER ) ) {
45 + require_once( AUTOLOADER );
46 + new Plugin_Autoloader( DB_RESET_PATH );
312 47
313 -endif;
48 + add_action(
49 + 'wp_loaded',
50 + array ( new DB_Reset_Manager( DB_RESET_VERSION ), 'run' )
51 + );
52 +}
53 +
54 +if ( is_command_line() ) {
55 + require_once( __DIR__ . '/class-db-reset-command.php' );
56 +}