=")) /* 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. */
}
}
}
?>