=")) /* Needs to be upgraded? */ /* Version 3.2 is where `meta_key` names were changed. They're prefixed now. */ { $like = "`meta_key` LIKE 's2member\_%' AND `meta_key` NOT LIKE '%s2member\_originating\_blog%'"; $wpdb->query("UPDATE `".$wpdb->usermeta."` SET `meta_key` = CONCAT('".$wpdb->prefix."', `meta_key`) WHERE ".$like); } /**/ if(!$v || !version_compare($v, "3.2.5", ">=")) /* Needs to be upgraded? */ /* Version 3.2.5 is where transient names were changed. They're prefixed now. */ { $wpdb->query("DELETE FROM `".$wpdb->options."` WHERE `option_name` LIKE '\_transient\_%'"); } /**/ if(!$v || !version_compare($v, "3.2.6", ">=")) /* Needs to be upgraded? */ /* Version 3.2.6 fixed `s2member_ccaps_req` being stored empty and/or w/ one empty element in the array. */ { $wpdb->query("DELETE FROM `".$wpdb->postmeta."` WHERE `meta_key` = 's2member_ccaps_req' AND `meta_value` IN('','a:0:{}','a:1:{i:0;s:0:\"\";}')"); } /**/ if(!$v || !version_compare($v, "110912", ">=") && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["filter_wp_query"] === array("all")) /* s2Member v110912 changed the way the "all" option for Alternative Views was handled. */ { $notice = 'IMPORTANT: This version of s2Member® changes the way your Alternative View Protections work. Please review your options under: s2Member -> Restriction Options -> Alternative View Protections.
'; c_ws_plugin__s2member_admin_notices::enqueue_admin_notice($notice, array("blog|network:plugins.php", "blog|network:ws-plugin--s2member-start", "blog|network:ws-plugin--s2member-mms-ops", "blog|network:ws-plugin--s2member-gen-ops", "blog|network:ws-plugin--s2member-res-ops")); } /**/ $notice = 's2Member has been reactivated, with '.(($reactivation_reason === "levels") ? ''.esc_html($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]).' Membership Levels' : 'the latest version').'.
'; $notice .= 'You now have version '.esc_html(WS_PLUGIN__S2MEMBER_VERSION).'. Your existing configuration remains.'; /**/ if(!is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site()) /* No Changelog on a Multisite Blog Farm. */ $notice .= '
Have fun, read the Changelog, and make some money! :-)'; /**/ c_ws_plugin__s2member_admin_notices::enqueue_admin_notice($notice, array("blog|network:plugins.php", "blog|network:ws-plugin--s2member-start", "blog|network:ws-plugin--s2member-mms-ops", "blog|network:ws-plugin--s2member-gen-ops", "blog|network:ws-plugin--s2member-res-ops")); } else /* Otherwise (initial activation); we'll help the Site Owner out by giving them a link to the Quick Start Guide. */ { $notice = 'Note: s2Member adds some new data columns to your list of Users/Members. If your list gets overcrowded, please use the Screen Options tab ( upper right-hand corner ). With WordPress® Screen Options, you can add/remove specific data columns; thereby making the most important data easier to read. For example, if you create Custom Registration/Profile Fields with s2Member, those Custom Fields will result in new data columns; which can cause your list of Users/Members to become nearly unreadable. So just use the Screen Options tab to clean things up.'; /**/ c_ws_plugin__s2member_admin_notices::enqueue_admin_notice($notice, "blog:users.php", false, false, true); /**/ $notice = 's2Member v'.esc_html(WS_PLUGIN__S2MEMBER_VERSION).' has been activated. Nice work!
'; $notice .= 'Have fun, read the Quick Start Guide, and make some money! :-)'; /**/ c_ws_plugin__s2member_admin_notices::enqueue_admin_notice($notice, array("blog|network:plugins.php", "blog|network:ws-plugin--s2member-start", "blog|network:ws-plugin--s2member-mms-ops", "blog|network:ws-plugin--s2member-gen-ops", "blog|network:ws-plugin--s2member-res-ops")); } /**/ if(is_multisite() && is_main_site()) /* Network activation routines. */ { $wpdb->query("INSERT INTO `".$wpdb->usermeta."` (`user_id`, `meta_key`, `meta_value`) SELECT `ID`, 's2member_originating_blog', '".esc_sql($current_site->blog_id)."' FROM `".$wpdb->users."` WHERE `ID` NOT IN (SELECT `user_id` FROM `".$wpdb->usermeta."` WHERE `meta_key` = 's2member_originating_blog')"); /**/ $notice = 'Multisite Network updated automatically by s2Member v'.esc_html(WS_PLUGIN__S2MEMBER_VERSION).'.
'; $notice .= 'You\'ll want to configure s2Member\'s Multisite options now.
'; $notice .= 'In the Dashboard for your Main Site, see:
'; $notice .= 's2Member -> Multisite ( Config ).'; /**/ c_ws_plugin__s2member_admin_notices::enqueue_admin_notice($notice, array("blog|network:plugins.php", "blog|network:ws-plugin--s2member-start", "blog|network:ws-plugin--s2member-mms-ops", "blog|network:ws-plugin--s2member-gen-ops", "blog|network:ws-plugin--s2member-res-ops")); /**/ update_site_option("ws_plugin__s2member_options", (array)get_option("ws_plugin__s2member_options")); /**/ update_option("ws_plugin__s2member_activated_mms_version", WS_PLUGIN__S2MEMBER_VERSION); } /**/ update_option("ws_plugin__s2member_activated_version", WS_PLUGIN__S2MEMBER_VERSION); /**/ do_action("ws_plugin__s2member_after_activation", get_defined_vars()); /**/ return; /* Return for uniformity. */ } /** * Deactivation routines for s2Member. * * @package s2Member\Installation * @since 3.5 * * @return null */ public static function deactivate() { global $wpdb; /* Global database object reference. */ global $current_site, $current_blog; /* Multisite. */ /**/ 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(); /* Unlink Roles/Caps. */ /**/ c_ws_plugin__s2member_files::remove_no_gzip_from_root_htaccess /* Remove GZIP exclusions. */(); /**/ 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()) /* Site options? */ 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; /* Return for uniformity. */ } } } ?>