resetter = new DB_Resetter(); $this->version = $version; $this->set_request($_REQUEST); $this->set_view_variables(); } private function set_request(array $request) { $this->request = $request; } private function set_view_variables() { $this->set_code(); $this->set_user(); $this->set_wp_tables(); } private function set_code() { $this->code = $this->generate_code(); } private function set_user() { $this->user = $this->resetter->get_user(); } private function set_wp_tables() { $this->wp_tables = $this->resetter->get_wp_tables(); } private function generate_code($length = 5) { return strtoupper(substr(md5(time()), 1, $length)); } public function run() { add_action('admin_init', array($this, 'reset')); add_action('admin_menu', array($this, 'add_tools_menu')); add_action('admin_action_install_wpr', array($this, 'install_wpr')); add_filter('install_plugins_table_api_args_featured', array($this, 'featured_plugins_tab')); add_filter('install_plugins_table_api_args_recommended', array($this, 'featured_plugins_tab')); add_filter('plugin_action_links_' . plugin_basename(DB_RESET_FILE), array($this, 'plugin_action_links')); add_filter('plugin_row_meta', array($this, 'plugin_meta_links'), 10, 2); add_filter('admin_footer_text', array($this, 'admin_footer_text')); } // additional powered by text in admin footer; only on plugin's page static function admin_footer_text($text) { $current_screen = get_current_screen(); if ($current_screen->id != 'tools_page_database-reset') { return $text; } $text = 'WP Database Reset v' . DB_RESET_VERSION . ' by ' . __('WebFactory Ltd', 'wordpress-database-reset') . '. Please rate the plugin ★★★★★. Thank you! ' . $text; return $text; } // admin_footer_text // add settings link to plugins page function plugin_action_links($links) { $settings_link = '' . __('Reset Database', 'wordpress-database-reset') . ''; array_unshift($links, $settings_link); return $links; } // plugin_action_links // add links to plugin's description in plugins table function plugin_meta_links($links, $file) { $support_link = '' . __('Support', 'wordpress-database-reset') . ''; if ($file == plugin_basename(DB_RESET_FILE)) { $links[] = $support_link; } return $links; } // plugin_meta_links // helper function for adding plugins to fav list function featured_plugins_tab($args) { add_filter('plugins_api_result', array($this, 'plugins_api_result'), 10, 3); return $args; } // featured_plugins_tab // add our plugins to recommended list function plugins_api_result($res, $action, $args) { remove_filter('plugins_api_result', array($this, 'plugins_api_result'), 10, 3); $res = $this->add_plugin_favs('under-construction-page', $res); $res = $this->add_plugin_favs('simple-author-box', $res); $res = $this->add_plugin_favs('eps-301-redirects', $res); return $res; } // plugins_api_result function add_plugin_favs($plugin_slug, $res) { // check if plugin is already on the list if (!empty($res->plugins) && is_array($res->plugins)) { foreach ($res->plugins as $plugin) { if (is_object($plugin) && !empty($plugin->slug) && $plugin->slug == $plugin_slug) { return $res; } } // foreach } $plugin_info = get_transient('wf-plugin-info-' . $plugin_slug); if (!$plugin_info) { $plugin_info = plugins_api('plugin_information', array( 'slug' => $plugin_slug, 'is_ssl' => is_ssl(), 'fields' => array( 'banners' => true, 'reviews' => true, 'downloaded' => true, 'active_installs' => true, 'icons' => true, 'short_description' => true, ) )); if (!is_wp_error($plugin_info)) { set_transient('wf-plugin-info-' . $plugin_slug, $plugin_info, DAY_IN_SECONDS * 7); } } if (!empty($res->plugins) && is_array($res->plugins) && $plugin_info && is_object($plugin_info)) { array_unshift($res->plugins, $plugin_info); } return $res; } // add_plugin_featured // auto download / install / activate WPR plugin function install_wpr() { if (false === current_user_can('administrator')) { wp_die('Sorry, you have to be an admin to run this action.'); } $plugin_slug = 'wp-reset/wp-reset.php'; $plugin_zip = 'https://downloads.wordpress.org/plugin/wp-reset.latest-stable.zip'; @include_once ABSPATH . 'wp-admin/includes/plugin.php'; @include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; @include_once ABSPATH . 'wp-admin/includes/plugin-install.php'; @include_once ABSPATH . 'wp-admin/includes/file.php'; @include_once ABSPATH . 'wp-admin/includes/misc.php'; echo ''; echo '
',
);
}
}
endif;