/** * Activation routines for optimizeMember. * * @package optimizeMember\Installation * @since 3.5 * * @return null */ public static function activate($reactivation_reason = FALSE) { global $wpdb; /* Global database object reference. */ global $current_site, $current_blog; /* Multisite. */ /**/ do_action("ws_plugin__optimizemember_before_activation", get_defined_vars()); /**/ c_ws_plugin__optimizemember_roles_caps::config_roles(); /* Config Roles/Caps. */ update_option("ws_plugin__optimizemember_activated_levels", $GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["levels"]); /**/ /*THIS LINE MOVE PRO FOLDER INTO RIGHT PLACE!*/ //@rename($GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["dir"].'/optimizeMember-pro', WP_PLUGIN_DIR.'/optimizeMember-pro'); if (!is_dir($files_dir = $GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["files_dir"])) { if (is_writable(dirname(c_ws_plugin__optimizemember_utils_dirs::strip_dir_app_data($files_dir)))) { mkdir($files_dir, 0777, true); } } /**/ if (is_dir($files_dir) && is_writable($files_dir)) { if (!file_exists($htaccess = $files_dir . "/.htaccess") || !apply_filters("ws_plugin__optimizemember_preserve_files_dir_htaccess", false, get_defined_vars())) { file_put_contents($htaccess, trim(c_ws_plugin__optimizemember_utilities::evl(file_get_contents($GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["files_dir_htaccess"])))); } } /**/ c_ws_plugin__optimizemember_files::write_no_gzip_into_root_htaccess(); /**/ if (!is_dir($logs_dir = $GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["logs_dir"])) { if (is_writable(dirname(c_ws_plugin__optimizemember_utils_dirs::strip_dir_app_data($logs_dir)))) { mkdir($logs_dir, 0777, true); } } /**/ if (is_dir($logs_dir) && is_writable($logs_dir)) { if (!file_exists($htaccess = $logs_dir . "/.htaccess") || !apply_filters("ws_plugin__optimizemember_preserve_logs_dir_htaccess", false, get_defined_vars())) { file_put_contents($htaccess, trim(c_ws_plugin__optimizemember_utilities::evl(file_get_contents($GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["logs_dir_htaccess"])))); } } /**/ !is_array(get_option("ws_plugin__optimizemember_cache")) ? update_option("ws_plugin__optimizemember_cache", array()) : null; !is_array(get_option("ws_plugin__optimizemember_notices")) ? update_option("ws_plugin__optimizemember_notices", array()) : null; !is_array(get_option("ws_plugin__optimizemember_options")) ? update_option("ws_plugin__optimizemember_options", array()) : null; !is_numeric(get_option("ws_plugin__optimizemember_configured")) ? update_option("ws_plugin__optimizemember_configured", "0") : null; /**/ if ($GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["configured"]) { $v = get_option("ws_plugin__optimizemember_activated_version"); /* Currently. */ /**/ if (!$v || !version_compare($v, "3.2", ">=")) { $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", ">=")) { $wpdb->query("DELETE FROM `" . $wpdb->options . "` WHERE `option_name` LIKE '\\_transient\\_%'"); } /**/ if (!$v || !version_compare($v, "3.2.6", ">=")) { $wpdb->query("DELETE FROM `" . $wpdb->postmeta . "` WHERE `meta_key` = 'optimizemember_ccaps_req' AND `meta_value` IN('','a:0:{}','a:1:{i:0;s:0:\"\";}')"); } /**/ if (!$v || !version_compare($v, "110912", ">=") && $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["filter_wp_query"] === array("all")) { //$notice = '<strong>IMPORTANT:</strong> This version of optimizeMember changes the way your <code>Alternative View Protections</code> work. Please review your options under: <code>optimizeMember -> Restriction Options -> Alternative View Protections</code>.<br />'; $notice = ''; c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, array("blog|network:plugins.php", "blog|network:ws-plugin--optimizemember-start", "blog|network:ws-plugin--optimizemember-mms-ops", "blog|network:ws-plugin--optimizemember-gen-ops", "blog|network:ws-plugin--optimizemember-res-ops")); } /**/ $notice = '<strong>optimizeMember</strong> has been <strong>reactivated</strong>, with ' . ($reactivation_reason === "levels" ? '<code>' . esc_html($GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["levels"]) . '</code> Membership Levels' : 'the latest version') . '.<br />'; $notice .= 'You now have version ' . esc_html(WS_PLUGIN__OPTIMIZEMEMBER_VERSION) . '. Your existing configuration remains.'; /**/ if (!is_multisite() || !c_ws_plugin__optimizemember_utils_conds::is_multisite_farm() || is_main_site()) { /* No Changelog on a Multisite Blog Farm. */ //$notice .= '<br />Have fun, <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--optimizemember-info#rm-changelog")).'">read the Changelog</a>, and make some money! :-)'; /**/ c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, array("blog|network:plugins.php", "blog|network:ws-plugin--optimizemember-start", "blog|network:ws-plugin--optimizemember-mms-ops", "blog|network:ws-plugin--optimizemember-gen-ops", "blog|network:ws-plugin--optimizemember-res-ops")); } } else { $notice = '<strong>Note:</strong> optimizeMember adds some new data columns to your list of Users/Members. If your list gets overcrowded, please use the <strong>Screen Options</strong> tab <em>( upper right-hand corner )</em>. 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 optimizeMember, 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__optimizemember_admin_notices::enqueue_admin_notice($notice, "blog:users.php", false, false, true); /**/ $notice = '<strong>optimizeMember</strong> v' . esc_html(WS_PLUGIN__OPTIMIZEMEMBER_VERSION) . ' has been <strong>activated</strong>. Nice work!<br />'; $notice .= 'Have fun, <a href="' . esc_attr(admin_url("/admin.php?page=ws-plugin--optimizemember-start")) . '">read the Quick Start Guide</a>, and make some money! :-)'; /**/ c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, array("blog|network:plugins.php", "blog|network:ws-plugin--optimizemember-start", "blog|network:ws-plugin--optimizemember-mms-ops", "blog|network:ws-plugin--optimizemember-gen-ops", "blog|network:ws-plugin--optimizemember-res-ops")); } /**/ if (is_multisite() && is_main_site()) { $wpdb->query("INSERT INTO `" . $wpdb->usermeta . "` (`user_id`, `meta_key`, `meta_value`) SELECT `ID`, 'optimizemember_originating_blog', '" . esc_sql($current_site->blog_id) . "' FROM `" . $wpdb->users . "` WHERE `ID` NOT IN (SELECT `user_id` FROM `" . $wpdb->usermeta . "` WHERE `meta_key` = 'optimizemember_originating_blog')"); /**/ $notice = '<strong>Multisite Network</strong> updated automatically by <strong>optimizeMember</strong> v' . esc_html(WS_PLUGIN__OPTIMIZEMEMBER_VERSION) . '.<br />'; $notice .= 'You\'ll want to configure optimizeMember\'s Multisite options now.<br />'; $notice .= 'In the Dashboard for your Main Site, see:<br />'; $notice .= '<code>optimizeMember -> Multisite ( Config )</code>.'; /**/ c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, array("blog|network:plugins.php", "blog|network:ws-plugin--optimizemember-start", "blog|network:ws-plugin--optimizemember-mms-ops", "blog|network:ws-plugin--optimizemember-gen-ops", "blog|network:ws-plugin--optimizemember-res-ops")); /**/ update_site_option("ws_plugin__optimizemember_options", (array) get_option("ws_plugin__optimizemember_options")); /**/ update_option("ws_plugin__optimizemember_activated_mms_version", WS_PLUGIN__OPTIMIZEMEMBER_VERSION); } /**/ update_option("ws_plugin__optimizemember_activated_version", WS_PLUGIN__OPTIMIZEMEMBER_VERSION); /**/ do_action("ws_plugin__optimizemember_after_activation", get_defined_vars()); /**/ return; /* Return for uniformity. */ }
/** * Updates Roles/Capabilities via AJAX. * * @package optimizeMember\Roles_Caps * @since 110524RC * * @attaches-to ``add_action("wp_ajax_ws_plugin__optimizemember_update_roles_via_ajax");`` * * @return null Exits script execution after output for AJAX caller. */ public static function update_roles_via_ajax() { do_action("ws_plugin__optimizemember_before_update_roles_via_ajax", get_defined_vars()); /**/ status_header(200); /* Send a 200 OK status header. */ header("Content-Type: text/plain; charset=utf-8"); /* Content-Type with UTF-8. */ eval('while (@ob_end_clean ());'); /* End/clean all output buffers that may exist. */ /**/ if (current_user_can("create_users")) { /* Check priveledges. Ability to create Users? */ /**/ if (!empty($_POST["ws_plugin__optimizemember_update_roles_via_ajax"])) { if ($nonce = $_POST["ws_plugin__optimizemember_update_roles_via_ajax"]) { if (wp_verify_nonce($nonce, "ws-plugin--optimizemember-update-roles-via-ajax")) { /**/ if (!apply_filters("ws_plugin__optimizemember_lock_roles_caps", false)) { c_ws_plugin__optimizemember_roles_caps::config_roles(); $success = true; /* Roles updated. */ } else { /* Else flag as having been locked here. */ $locked = true; } } } } } /**/ exit(apply_filters("ws_plugin__optimizemember_update_roles_via_ajax", isset($success) && $success ? "1" : (isset($locked) && $locked ? "l" : "0"), get_defined_vars())); }