/** * Deprecated in optimizeMember v3.5+. * * Needed by the optimizeMember Pro upgrader prior to optimizeMember Pro v1.5+. * * @package optimizeMember * @since 3.0 * * @deprecated Starting with optimizeMember v3.5+, please use: * ``c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice()`` * * @see optimizeMember\Admin_Notices\c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice() */ function ws_plugin__optimizemember_enqueue_admin_notice($notice = FALSE, $on_pages = FALSE, $error = FALSE, $time = FALSE, $dismiss = FALSE) { return c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, $on_pages, $error, $time, $dismiss); }
/** * Saves all options from any menu page. * * Can also be self-verified; and configured extensively with function parameters. * * @package optimizeMember\Menu_Pages * @since 3.5 * * @param array $new_options Optional. Force feed an array of new options. Defaults to ``$_POST`` vars. * If ``$new_options`` are passed in, be SURE that you've already applied ``stripslashes_deep()``. * @param bool $verified Optional. Defaults to false. If true, ``wp_verify_nonce()`` is skipped in this routine. * @param bool $update_other Optional. Defaults to true. If false, other option-dependent routines will not be processed. * @param bool|array $display_notices Optional. Defaults to true. Can be false, or an array of certain notices that can be displayed. * @param bool|array $enqueue_notices Optional. Defaults to false. Can be true, or an array of certain notices that should be enqueued. * @param bool $request_refresh Optional. Defaults to false. If true, resulting `success` notice will include a link to refresh the menu page. * @return bool True if all optimizeMember options were updated successfully, else false. */ public static function update_all_options($new_options = FALSE, $verified = FALSE, $update_other = TRUE, $display_notices = TRUE, $enqueue_notices = FALSE, $request_refresh = FALSE) { $updated_all_options = false; /* Initialize this to a value of false. Initializing this variable here makes it an available reference-variable to Hooks/Filters. */ /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__optimizemember_before_update_all_options", get_defined_vars()); /* If you use this Hook, be sure to use ``wp_verify_nonce()``. */ unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ if ($verified || !empty($_POST["ws_plugin__optimizemember_options_save"]) && ($nonce = $_POST["ws_plugin__optimizemember_options_save"]) && wp_verify_nonce($nonce, "ws-plugin--optimizemember-options-save")) { $options = $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]; /* Acquire the full existing configuration options array here. */ /**/ $new_options = is_array($new_options) ? $new_options : (!empty($_POST) && is_array($_POST) ? stripslashes_deep($_POST) : array()); $new_options = c_ws_plugin__optimizemember_utils_strings::trim_deep($new_options); /**/ foreach ($new_options as $key => $value) { /* Find all keys contained within ``$new_options`` matching `^ws_plugin__optimizemember_`. */ if (strpos($key, "ws_plugin__optimizemember_") === 0) { /* A relevant ``$new_options`` key matching `^ws_plugin__optimizemember_`? */ if ($key == 'ws_plugin__optimizemember_ccp') { $value = array_filter($new_options[$key]); } /**/ if ($key === "ws_plugin__optimizemember_configured") { /* optimizeMember is now configured ( according to these options )? */ ($GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["configured"] = $value) . update_option("ws_plugin__optimizemember_configured", $value); } else { if (!is_array($value) || is_array($value) && array_shift($value) === "update-signal") { $options[preg_replace("/^" . preg_quote("ws_plugin__optimizemember_", "/") . "/", "", $key)] = $value; } } /**/ } } unset($key, $value); /* Unset these utility variables now. This prevents bleeding vars into Hooks/Filters that are of no use. */ //die(print_r($options)); /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__optimizemember_during_update_all_options", get_defined_vars()); /* If you use this Hook, be sure to use ``wp_verify_nonce()``. */ unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ $options = ws_plugin__optimizemember_configure_options_and_their_defaults($options = array_merge($options, array("options_version" => (string) ($options["options_version"] + 0.001)))); update_option("ws_plugin__optimizemember_options", $options) . (is_multisite() && is_main_site() ? update_site_option("ws_plugin__optimizemember_options", $options) : null) . update_option("ws_plugin__optimizemember_cache", array()); /**/ if ($update_other === true || in_array("auto_eot_system", (array) $update_other)) { /* Handle the Auto-EOT System now ( enable/disable ). */ $options["auto_eot_system_enabled"] == 1 ? c_ws_plugin__optimizemember_auto_eots::add_auto_eot_system() : c_ws_plugin__optimizemember_auto_eots::delete_auto_eot_system(); } /**/ if (($display_notices === true || in_array("success", (array) $display_notices)) && ($notice = '<strong>Options saved.' . ($request_refresh ? ' Please <a href="' . esc_attr($_SERVER["REQUEST_URI"]) . '">refresh</a>.' : '') . '</strong>')) { $enqueue_notices === true || in_array("success", (array) $enqueue_notices) ? c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, "*:*") : c_ws_plugin__optimizemember_admin_notices::display_admin_notice($notice); } /**/ if (empty($_GET["page"]) || $_GET["page"] !== "ws-plugin--optimizemember-mms-ops") { if (!$options["membership_options_page"] && ($display_notices === true || in_array("page-conflict-warnings", (array) $display_notices)) && ($notice = '<strong>NOTE:</strong> optimizeMember security restrictions will NOT be enforced until you\'ve configured a Membership Options Page. See: <code>optimizeMember -> General Options -> Membership Options Page</code>.')) { $enqueue_notices === true || in_array("page-conflict-warnings", (array) $enqueue_notices) ? c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, "*:*", true) : c_ws_plugin__optimizemember_admin_notices::display_admin_notice($notice, true); } /**/ if ($options["login_welcome_page"] && $options["login_welcome_page"] === $options["membership_options_page"] && ($display_notices === true || in_array("page-conflict-warnings", (array) $display_notices)) && ($notice = '<strong>optimizeMember:</strong> Your Login Welcome Page is the same as your Membership Options Page. Please correct this. See: <code>optimizeMember -> General Options -> Login Welcome Page</code>.')) { $enqueue_notices === true || in_array("page-conflict-warnings", (array) $enqueue_notices) ? c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, "*:*", true) : c_ws_plugin__optimizemember_admin_notices::display_admin_notice($notice, true); } /**/ if ($options["membership_options_page"] && (string) get_option("page_on_front") === $options["membership_options_page"] && ($display_notices === true || in_array("page-conflict-warnings", (array) $display_notices)) && ($notice = '<strong>optimizeMember:</strong> Your Membership Options Page is currently configured as your Home Page ( i.e. static page ) for WordPress. This causes internal conflicts with optimizeMember. Your Membership Options Page MUST stand alone. Please correct this. See: <code>WordPress -> Reading Options</code>. Or change: <code>optimizeMember -> General Options -> Membership Options Page</code>.')) { $enqueue_notices === true || in_array("page-conflict-warnings", (array) $enqueue_notices) ? c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, "*:*", true) : c_ws_plugin__optimizemember_admin_notices::display_admin_notice($notice, true); } /**/ if ($options["login_welcome_page"] && (string) get_option("page_on_front") === $options["login_welcome_page"] && ($display_notices === true || in_array("page-conflict-warnings", (array) $display_notices)) && ($notice = '<strong>optimizeMember:</strong> Your Login Welcome Page is currently configured as your Home Page ( i.e. static page ) for WordPress. This causes internal conflicts with optimizeMember. Your Login Welcome Page MUST stand alone. Please correct this. See: <code>WordPress -> Reading Options</code>. Or change: <code>optimizeMember -> General Options -> Login Welcome Page</code>.')) { $enqueue_notices === true || in_array("page-conflict-warnings", (array) $enqueue_notices) ? c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, "*:*", true) : c_ws_plugin__optimizemember_admin_notices::display_admin_notice($notice, true); } /**/ if ($options["membership_options_page"] && (string) get_option("page_for_posts") === $options["membership_options_page"] && ($display_notices === true || in_array("page-conflict-warnings", (array) $display_notices)) && ($notice = '<strong>optimizeMember:</strong> Your Membership Options Page is currently configured as your Posts Page ( i.e. static page ) for WordPress. This causes internal conflicts with optimizeMember. Your Membership Options Page MUST stand alone. Please correct this. See: <code>WordPress -> Reading Options</code>. Or change: <code>optimizeMember -> General Options -> Membership Options Page</code>.')) { $enqueue_notices === true || in_array("page-conflict-warnings", (array) $enqueue_notices) ? c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, "*:*", true) : c_ws_plugin__optimizemember_admin_notices::display_admin_notice($notice, true); } /**/ if ($options["login_welcome_page"] && (string) get_option("page_for_posts") === $options["login_welcome_page"] && ($display_notices === true || in_array("page-conflict-warnings", (array) $display_notices)) && ($notice = '<strong>optimizeMember:</strong> Your Login Welcome Page is currently configured as your Posts Page ( i.e. static page ) for WordPress. This causes internal conflicts with optimizeMember. Your Login Welcome Page MUST stand alone. Please correct this. See: <code>WordPress -> Reading Options</code>. Or change: <code>optimizeMember -> General Options -> Login Welcome Page</code>.')) { $enqueue_notices === true || in_array("page-conflict-warnings", (array) $enqueue_notices) ? c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, "*:*", true) : c_ws_plugin__optimizemember_admin_notices::display_admin_notice($notice, true); } /**/ if ($options["file_download_limit_exceeded_page"] && $options["file_download_limit_exceeded_page"] === $options["membership_options_page"] && ($display_notices === true || in_array("page-conflict-warnings", (array) $display_notices)) && ($notice = '<strong>optimizeMember:</strong> Your Download Limit Exceeded Page is the same as your Membership Options Page. Please correct this. See: <code>optimizeMember -> Download Options</code>.')) { $enqueue_notices === true || in_array("page-conflict-warnings", (array) $enqueue_notices) ? c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, "*:*", true) : c_ws_plugin__optimizemember_admin_notices::display_admin_notice($notice, true); } } /**/ $updated_all_options = true; /* Flag indicating this routine was processed successfully; and that all optimizeMember options have been updated successfully.*/ } /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__optimizemember_after_update_all_options", get_defined_vars()); /* If you use this Hook, be sure to use ``wp_verify_nonce()``. */ unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ return apply_filters("ws_plugin__optimizemember_update_all_options", $updated_all_options ? true : false, get_defined_vars()); }
/** * 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. */ }
/** * Deals with Reading Option conflicts. * * @package optimizeMember\Option_Notices * @since 3.5 * * @attaches-to ``add_action("load-options-reading.php");`` * * @return null */ public static function reading_ops_notice() { global $pagenow; /* Need this global variable. */ /**/ do_action("ws_plugin__optimizemember_before_reading_ops_notice", get_defined_vars()); /**/ if (is_blog_admin() && $pagenow === "options-reading.php" && !isset($_GET["page"])) { do_action("ws_plugin__optimizemember_during_reading_ops_notice", get_defined_vars()); /* Now check for conflicts. */ /**/ if ($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["membership_options_page"] && (string) get_option("page_on_front") === $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["membership_options_page"] && ($notice = '<strong>NOTE:</strong> Your Membership Options Page for optimizeMember is currently configured as your Home Page ( i.e. static page ) for WordPress. This causes internal conflicts with optimizeMember. Your Membership Options Page MUST stand alone. Please correct this.')) { c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, "blog:" . $pagenow, true); } /**/ if ($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["login_welcome_page"] && (string) get_option("page_on_front") === $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["login_welcome_page"] && ($notice = '<strong>NOTE:</strong> Your Login Welcome Page for optimizeMember is currently configured as your Home Page ( i.e. static page ) for WordPress. This causes internal conflicts with optimizeMember. Your Login Welcome Page MUST stand alone. Please correct this.')) { c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, "blog:" . $pagenow, true); } /**/ if ($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["membership_options_page"] && (string) get_option("page_for_posts") === $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["membership_options_page"] && ($notice = '<strong>NOTE:</strong> Your Membership Options Page for optimizeMember is currently configured as your Posts Page ( i.e. static page ) for WordPress. This causes internal conflicts with optimizeMember. Your Membership Options Page MUST stand alone. Please correct this.')) { c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, "blog:" . $pagenow, true); } /**/ if ($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["login_welcome_page"] && (string) get_option("page_for_posts") === $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["login_welcome_page"] && ($notice = '<strong>NOTE:</strong> Your Login Welcome Page for optimizeMember is currently configured as your Posts Page ( i.e. static page ) for WordPress. This causes internal conflicts with optimizeMember. Your Login Welcome Page MUST stand alone. Please correct this.')) { c_ws_plugin__optimizemember_admin_notices::enqueue_admin_notice($notice, "blog:" . $pagenow, true); } } /**/ do_action("ws_plugin__optimizemember_after_reading_ops_notice", get_defined_vars()); /**/ return; /* Return for uniformity. */ }