/** * Writes no GZIP rules into root `.htaccess` file. * * @package s2Member\Files * @since 120212 * * @return bool True if successfull, else false on any type of failure. */ public static function write_no_gzip_into_root_htaccess() { if (c_ws_plugin__s2member_files::remove_no_gzip_from_root_htaccess()) { $start_line = '# BEGIN s2Member GZIP exclusions'; // Beginning line for this entry. $end_line = '# END s2Member GZIP exclusions'; // Identifying end line for this entry. $htaccess = ABSPATH . '.htaccess'; // Location of this `.htaccess` file we need to write in. $ideally_position_before = '# BEGIN WordPress'; // Ideally, we can position before this entry. $no_gzip = $start_line . "\n" . trim(c_ws_plugin__s2member_utilities::evl(file_get_contents($GLOBALS['WS_PLUGIN__']['s2member']['c']['files_no_gzip_htaccess']))) . "\n" . $end_line; if (file_exists($htaccess) && is_readable($htaccess) && is_writable($htaccess) && ($htaccess_contents = file_get_contents($htaccess)) !== FALSE && is_string($htaccess_contents = trim($htaccess_contents))) { if (stripos($htaccess_contents, $ideally_position_before) !== FALSE) { $htaccess_contents = trim(str_ireplace($ideally_position_before, $no_gzip . "\n\n" . $ideally_position_before, $htaccess_contents)); } else { $htaccess_contents = trim($no_gzip . "\n\n" . $htaccess_contents); } // Else, let's put it at the very top of the file by default. return file_put_contents($htaccess, $htaccess_contents); } else { if (!file_exists($htaccess) && is_writable(dirname($htaccess))) { return file_put_contents($htaccess, $no_gzip); } } } return FALSE; // Default return `FALSE`. }
/** * Uninstall routines for s2Member. * * @package s2Member\Installation * @since 3.5 */ public static function uninstall() { global $wpdb; /** @var $wpdb wpdb */ global $current_site, $current_blog; // Multisite. do_action('ws_plugin__s2member_before_uninstall', get_defined_vars()); if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['run_uninstall_routines']) { c_ws_plugin__s2member_roles_caps::unlink_roles(); c_ws_plugin__s2member_files::remove_no_gzip_from_root_htaccess(); if (is_dir($files_dir = $GLOBALS['WS_PLUGIN__']['s2member']['c']['files_dir'])) { if (file_exists($htaccess = $files_dir . '/.htaccess')) { if (is_writable($htaccess)) { unlink($htaccess); } } @rmdir($files_dir) . @rmdir(c_ws_plugin__s2member_utils_dirs::strip_dir_app_data($files_dir)); } if (is_dir($logs_dir = $GLOBALS['WS_PLUGIN__']['s2member']['c']['logs_dir'])) { foreach (scandir($logs_dir) as $log_file) { if (is_file($log_file = $logs_dir . '/' . $log_file)) { if (is_writable($log_file)) { unlink($log_file); } } } @rmdir($logs_dir) . @rmdir(c_ws_plugin__s2member_utils_dirs::strip_dir_app_data($logs_dir)); } delete_option('ws_plugin__s2member_cache'); delete_option('ws_plugin__s2member_notices'); delete_option('ws_plugin__s2member_options'); delete_option('ws_plugin__s2member_configured'); delete_option('ws_plugin__s2member_activated_levels'); delete_option('ws_plugin__s2member_activated_version'); delete_option('ws_plugin__s2member_activated_mms_version'); if (is_multisite() && is_main_site()) { delete_site_option('ws_plugin__s2member_options'); } $wpdb->query("DELETE FROM `" . $wpdb->postmeta . "` WHERE `meta_key` LIKE '" . esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2m_')) . "%'"); $wpdb->query("DELETE FROM `" . $wpdb->postmeta . "` WHERE `meta_key` LIKE '%" . esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('_s2m_')) . "%'"); $wpdb->query("DELETE FROM `" . $wpdb->postmeta . "` WHERE `meta_key` LIKE '%" . esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2member_')) . "%'"); $wpdb->query("DELETE FROM `" . $wpdb->usermeta . "` WHERE `meta_key` LIKE '" . esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2m_')) . "%'"); $wpdb->query("DELETE FROM `" . $wpdb->usermeta . "` WHERE `meta_key` LIKE '%" . esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('_s2m_')) . "%'"); $wpdb->query("DELETE FROM `" . $wpdb->usermeta . "` WHERE `meta_key` LIKE '%" . esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2member_')) . "%'"); $wpdb->query("DELETE FROM `" . $wpdb->options . "` WHERE `option_name` LIKE '" . esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2m_')) . "%'"); $wpdb->query("DELETE FROM `" . $wpdb->options . "` WHERE `option_name` LIKE '%" . esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('_s2m_')) . "%'"); $wpdb->query("DELETE FROM `" . $wpdb->options . "` WHERE `option_name` LIKE '%" . esc_sql(c_ws_plugin__s2member_utils_strings::like_escape('s2member_')) . "%'"); do_action('ws_plugin__s2member_during_uninstall', get_defined_vars()); } do_action('ws_plugin__s2member_after_uninstall', get_defined_vars()); }
/** * Writes no GZIP rules into root `.htaccess` file. * * @package s2Member\Files * @since 120212 * * @return bool True if successfull, else false on any type of failure. */ public static function write_no_gzip_into_root_htaccess() { if (c_ws_plugin__s2member_files::remove_no_gzip_from_root_htaccess()) { $start_line = "# BEGIN s2Member GZIP exclusions"; $end_line = "# END s2Member GZIP exclusions"; $htaccess = ABSPATH . ".htaccess"; $ideally_position_before = "# BEGIN WordPress"; $no_gzip = $start_line . "\n" . trim(c_ws_plugin__s2member_utilities::evl(file_get_contents($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_no_gzip_htaccess"]))) . "\n" . $end_line; if (file_exists($htaccess) && is_readable($htaccess) && is_writable($htaccess) && ($htaccess_contents = file_get_contents($htaccess)) !== false && is_string($htaccess_contents = trim($htaccess_contents))) { if (stripos($htaccess_contents, $ideally_position_before) !== false) { $htaccess_contents = trim(str_ireplace($ideally_position_before, $no_gzip . "\n\n" . $ideally_position_before, $htaccess_contents)); } else { // Else, let's put it at the very top of the file by default. $htaccess_contents = trim($no_gzip . "\n\n" . $htaccess_contents); } return file_put_contents($htaccess, $htaccess_contents); } else { if (!file_exists($htaccess) && is_writable(dirname($htaccess))) { return file_put_contents($htaccess, $no_gzip); } } } return false; }
/** * Deactivation routines for s2Member. * * @package s2Member\Installation * @since 3.5 * * @return null */ public static function deactivate() { global $wpdb; global $current_site, $current_blog; do_action("ws_plugin__s2member_before_deactivation", get_defined_vars()); if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["run_deactivation_routines"]) { c_ws_plugin__s2member_roles_caps::unlink_roles(); c_ws_plugin__s2member_files::remove_no_gzip_from_root_htaccess(); if (is_dir($files_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])) { if (file_exists($htaccess = $files_dir . "/.htaccess")) { if (is_writable($htaccess)) { unlink($htaccess); } } @rmdir($files_dir) . @rmdir(c_ws_plugin__s2member_utils_dirs::strip_dir_app_data($files_dir)); } if (is_dir($logs_dir = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"])) { foreach (scandir($logs_dir) as $log_file) { if (is_file($log_file = $logs_dir . "/" . $log_file)) { if (is_writable($log_file)) { unlink($log_file); } } } @rmdir($logs_dir) . @rmdir(c_ws_plugin__s2member_utils_dirs::strip_dir_app_data($logs_dir)); } delete_option("ws_plugin__s2member_cache"); delete_option("ws_plugin__s2member_notices"); delete_option("ws_plugin__s2member_options"); delete_option("ws_plugin__s2member_configured"); delete_option("ws_plugin__s2member_activated_levels"); delete_option("ws_plugin__s2member_activated_version"); delete_option("ws_plugin__s2member_activated_mms_version"); if (is_multisite() && is_main_site()) { delete_site_option("ws_plugin__s2member_options"); } $wpdb->query("DELETE FROM `" . $wpdb->options . "` WHERE `option_name` LIKE '%" . esc_sql(like_escape("s2member_")) . "%'"); $wpdb->query("DELETE FROM `" . $wpdb->options . "` WHERE `option_name` LIKE '" . esc_sql(like_escape("_transient_s2m_")) . "%'"); $wpdb->query("DELETE FROM `" . $wpdb->options . "` WHERE `option_name` LIKE '" . esc_sql(like_escape("_transient_timeout_s2m_")) . "%'"); $wpdb->query("DELETE FROM `" . $wpdb->postmeta . "` WHERE `meta_key` LIKE '%" . esc_sql(like_escape("s2member_")) . "%'"); $wpdb->query("DELETE FROM `" . $wpdb->usermeta . "` WHERE `meta_key` LIKE '%" . esc_sql(like_escape("s2member_")) . "%'"); do_action("ws_plugin__s2member_during_deactivation", get_defined_vars()); } do_action("ws_plugin__s2member_after_deactivation", get_defined_vars()); return; }