/** * Builds the options panel for this Payment Gateway. * * @package optimizeMember\Menu_Pages * @since 140617 */ public static function stripe_ops_page() { c_ws_plugin__optimizemember_menu_pages::update_all_options(); // Updates options. $logs_dir = $GLOBALS['WS_PLUGIN__']['optimizemember']['c']['logs_dir']; if (!is_dir($logs_dir) && is_writable(dirname(c_ws_plugin__optimizemember_utils_dirs::strip_dir_app_data($logs_dir)))) { mkdir($logs_dir, 0777, TRUE) . clearstatcache(); } $htaccess = $GLOBALS['WS_PLUGIN__']['optimizemember']['c']['logs_dir'] . '/.htaccess'; $htaccess_contents = trim(c_ws_plugin__optimizemember_utilities::evl(file_get_contents($GLOBALS['WS_PLUGIN__']['optimizemember']['c']['logs_dir_htaccess']))); if (is_dir($logs_dir) && is_writable($logs_dir) && !file_exists($htaccess)) { file_put_contents($htaccess, $htaccess_contents) . clearstatcache(); } if ($GLOBALS['WS_PLUGIN__']['optimizemember']['o']['gateway_debug_logs']) { if (!is_dir($logs_dir)) { // If the security-enabled logs directory does not exist yet. c_ws_plugin__optimizemember_admin_notices::display_admin_notice('The security-enabled logs directory (<code>' . esc_html(c_ws_plugin__optimizemember_utils_dirs::doc_root_path($logs_dir)) . '</code>) does not exist. Please create this directory manually & make it writable (chmod 777).', TRUE); } else { if (!is_writable($logs_dir)) { // If the logs directory is not writable yet. c_ws_plugin__optimizemember_admin_notices::display_admin_notice('Permissions error. The security-enabled logs directory (<code>' . esc_html(c_ws_plugin__optimizemember_utils_dirs::doc_root_path($logs_dir)) . '</code>) is not writable. Please make this directory writable (chmod 777).', TRUE); } } if (!file_exists($htaccess)) { // If the .htaccess file has not been created yet. c_ws_plugin__optimizemember_admin_notices::display_admin_notice('The .htaccess protection file (<code>' . esc_html(c_ws_plugin__optimizemember_utils_dirs::doc_root_path($htaccess)) . '</code>) does not exist. Please create this file manually. Inside your .htaccess file, add this:<br /><pre>' . esc_html($htaccess_contents) . '</pre>', TRUE); } else { if (!preg_match('/deny from all/i', file_get_contents($htaccess))) { // Else if the .htaccess file does not offer the required protection. c_ws_plugin__optimizemember_admin_notices::display_admin_notice('Unprotected. The .htaccess protection file (<code>' . esc_html(c_ws_plugin__optimizemember_utils_dirs::doc_root_path($htaccess)) . '</code>) does not contain <code>deny from all</code>. Inside your .htaccess file, add this:<br /><pre>' . esc_html($htaccess_contents) . '</pre>', TRUE); } } } include_once dirname(dirname(dirname(dirname(__FILE__)))) . '/menu-pages/stripe-ops.inc.php'; }
/** * Builds the options panel for this Payment Gateway. * * @package optimizeMember\Menu_Pages * @since 1.5 * * @return null */ public static function ccbill_ops_page() { c_ws_plugin__optimizemember_menu_pages::update_all_options(); /**/ $logs_dir = $GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["logs_dir"]; /**/ if (!is_dir($logs_dir) && is_writable(dirname(c_ws_plugin__optimizemember_utils_dirs::strip_dir_app_data($logs_dir)))) { mkdir($logs_dir, 0777, true) . clearstatcache(); } /**/ $htaccess = $GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["logs_dir"] . "/.htaccess"; $htaccess_contents = trim(c_ws_plugin__optimizemember_utilities::evl(file_get_contents($GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["logs_dir_htaccess"]))); /**/ if (is_dir($logs_dir) && is_writable($logs_dir) && !file_exists($htaccess)) { file_put_contents($htaccess, $htaccess_contents) . clearstatcache(); } /**/ if ($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["gateway_debug_logs"]) { if (!is_dir($logs_dir)) { /* If the security-enabled logs directory does not exist yet. */ c_ws_plugin__optimizemember_admin_notices::display_admin_notice('The security-enabled logs directory ( <code>' . esc_html(c_ws_plugin__optimizemember_utils_dirs::doc_root_path($logs_dir)) . '</code> ) does not exist. Please create this directory manually & make it writable ( chmod 777 ).', true); } else { if (!is_writable($logs_dir)) { /* If the logs directory is not writable yet. */ c_ws_plugin__optimizemember_admin_notices::display_admin_notice('Permissions error. The security-enabled logs directory ( <code>' . esc_html(c_ws_plugin__optimizemember_utils_dirs::doc_root_path($logs_dir)) . '</code> ) is not writable. Please make this directory writable ( chmod 777 ).', true); } } /**/ if (!file_exists($htaccess)) { /* If the .htaccess file has not been created yet. */ c_ws_plugin__optimizemember_admin_notices::display_admin_notice('The .htaccess protection file ( <code>' . esc_html(c_ws_plugin__optimizemember_utils_dirs::doc_root_path($htaccess)) . '</code> ) does not exist. Please create this file manually. Inside your .htaccess file, add this:<br /><pre>' . esc_html($htaccess_contents) . '</pre>', true); } else { if (!preg_match("/deny from all/i", file_get_contents($htaccess))) { /* Else if the .htaccess file does not offer the required protection. */ c_ws_plugin__optimizemember_admin_notices::display_admin_notice('Unprotected. The .htaccess protection file ( <code>' . esc_html(c_ws_plugin__optimizemember_utils_dirs::doc_root_path($htaccess)) . '</code> ) does not contain <code>deny from all</code>. Inside your .htaccess file, add this:<br /><pre>' . esc_html($htaccess_contents) . '</pre>', true); } } } /**/ include_once dirname(dirname(dirname(dirname(__FILE__)))) . "/menu-pages/ccbill-ops.inc.php"; /**/ return; /* Return for uniformity. */ }
/** * Saves data entered into meta boxes on Post/Page editing stations. * * @package optimizeMember\Meta_Boxes * @since 3.5 * * @attaches-to ``add_action("save_post");`` * * @param int|str $post_id Numeric Post/Page ID. * @return null */ public static function save_meta_boxes($post_id = FALSE) { eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__optimizemember_before_save_meta_boxes", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ if ($post_id && !empty($_POST["ws_plugin__optimizemember_security_meta_box_save"]) && ($nonce = $_POST["ws_plugin__optimizemember_security_meta_box_save"]) && wp_verify_nonce($nonce, "ws-plugin--optimizemember-security-meta-box-save")) { if (!empty($_POST["ws_plugin__optimizemember_security_meta_box_save_id"]) && $post_id == $_POST["ws_plugin__optimizemember_security_meta_box_save_id"] && !empty($_POST["post_type"])) { $_p = c_ws_plugin__optimizemember_utils_strings::trim_deep(stripslashes_deep($_POST)); /* Clean and create a local copy. */ /**/ if ($_p["post_type"] === "page" && current_user_can("edit_page", $post_id) || current_user_can("edit_post", $post_id)) { if ($_p["post_type"] === "page" && ($page_id = $post_id)) { if (isset($_p["ws_plugin__optimizemember_security_meta_box_level"])) { for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["levels"]; $n++) { $pages[$n] = array_unique(preg_split("/[\r\n\t\\s;,]+/", $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["level" . $n . "_pages"])); } /**/ for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["levels"]; $n++) { $posts[$n] = array_unique(preg_split("/[\r\n\t\\s;,]+/", $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["level" . $n . "_posts"])); } /**/ for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["levels"]; $n++) { if (($i = array_search($page_id, $pages[$n])) !== false) { unset($pages[$n][$i]); } } /**/ if (isset($pages[$_p["ws_plugin__optimizemember_security_meta_box_level"]]) && is_array($pages[$_p["ws_plugin__optimizemember_security_meta_box_level"]])) { if ($pages[$_p["ws_plugin__optimizemember_security_meta_box_level"]] !== array("all") && !in_array("all-pages", $posts[$_p["ws_plugin__optimizemember_security_meta_box_level"]])) { array_push($pages[$_p["ws_plugin__optimizemember_security_meta_box_level"]], (string) $page_id); } } /**/ for ($n = 0, $new_options = array(); $n <= $GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["levels"]; $n++) { $new_options = array_merge($new_options, array("ws_plugin__optimizemember_level" . $n . "_pages" => trim(implode(",", $pages[$n])))); } /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__optimizemember_during_save_meta_boxes", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ c_ws_plugin__optimizemember_menu_pages::update_all_options($new_options, true, false, array("page-conflict-warnings"), true); } } else { if (isset($_p["ws_plugin__optimizemember_security_meta_box_level"])) { for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["levels"]; $n++) { $posts[$n] = array_unique(preg_split("/[\r\n\t\\s;,]+/", $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["level" . $n . "_posts"])); } /**/ for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["levels"]; $n++) { if (($i = array_search($post_id, $posts[$n])) !== false) { unset($posts[$n][$i]); } } /**/ if (isset($posts[$_p["ws_plugin__optimizemember_security_meta_box_level"]]) && is_array($posts[$_p["ws_plugin__optimizemember_security_meta_box_level"]])) { if ($posts[$_p["ws_plugin__optimizemember_security_meta_box_level"]] !== array("all") && !in_array("all-" . $_p["post_type"] . "s", $posts[$_p["ws_plugin__optimizemember_security_meta_box_level"]])) { array_push($posts[$_p["ws_plugin__optimizemember_security_meta_box_level"]], (string) $post_id); } } /**/ for ($n = 0, $new_options = array(); $n <= $GLOBALS["WS_PLUGIN__"]["optimizemember"]["c"]["levels"]; $n++) { $new_options = array_merge($new_options, array("ws_plugin__optimizemember_level" . $n . "_posts" => trim(implode(",", $posts[$n])))); } /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__optimizemember_during_save_meta_boxes", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ c_ws_plugin__optimizemember_menu_pages::update_all_options($new_options, true, false, array("page-conflict-warnings"), true); } } /**/ if ($_p["post_type"] === "page" && ($page_id = $post_id)) { if (isset($_p["ws_plugin__optimizemember_security_meta_box_ccaps"])) { $ccaps_req = trim(strtolower($_p["ws_plugin__optimizemember_security_meta_box_ccaps"]), ","); $ccaps_req = trim(preg_replace("/[^a-z_0-9,]/", "", $ccaps_req), ","); /**/ if (strlen($ccaps_req) && ($optimizemember_ccaps_req = preg_split("/[\r\n\t\\s;,]+/", $ccaps_req))) { update_post_meta($page_id, "optimizemember_ccaps_req", $optimizemember_ccaps_req); } else { /* Otherwise, the array is empty. Safe to delete. */ delete_post_meta($page_id, "optimizemember_ccaps_req"); } } if (isset($_p["ws_plugin__optimizemember_drip_days"])) { $drip_days = trim($_p["ws_plugin__optimizemember_drip_days"]); /**/ if (strlen($drip_days)) { update_post_meta($page_id, "optimizemember_drip_days", $drip_days); } else { /* Otherwise, the array is empty. Safe to delete. */ delete_post_meta($page_id, "optimizemember_drip_days"); } } if (isset($_p["ws_plugin__optimizemember_drip_redirect_url"])) { $drip_redirect_url = trim($_p["ws_plugin__optimizemember_drip_redirect_url"]); /**/ if (strlen($drip_redirect_url)) { update_post_meta($page_id, "optimizemember_drip_redirect_url", $drip_redirect_url); } else { /* Otherwise, the array is empty. Safe to delete. */ delete_post_meta($page_id, "optimizemember_drip_redirect_url"); } } if (isset($_p["ws_plugin__optimizemember_force_ssl"])) { $force_ssl = trim($_p["ws_plugin__optimizemember_force_ssl"]); /**/ if (strlen($force_ssl)) { update_post_meta($page_id, "optimizemember_force_ssl", $force_ssl); } else { /* Otherwise, the array is empty. Safe to delete. */ delete_post_meta($page_id, "optimizemember_force_ssl"); } } else { delete_post_meta($page_id, "optimizemember_force_ssl"); } } else { //die(print_r($_p)); if (isset($_p["ws_plugin__optimizemember_security_meta_box_ccaps"])) { $ccaps_req = trim(strtolower($_p["ws_plugin__optimizemember_security_meta_box_ccaps"]), ","); $ccaps_req = trim(preg_replace("/[^a-z_0-9,]/", "", $ccaps_req), ","); /**/ if (strlen($ccaps_req) && ($optimizemember_ccaps_req = preg_split("/[\r\n\t\\s;,]+/", $ccaps_req))) { update_post_meta($post_id, "optimizemember_ccaps_req", $optimizemember_ccaps_req); } else { /* Otherwise, the array is empty. Safe to delete. */ delete_post_meta($post_id, "optimizemember_ccaps_req"); } } if (isset($_p["ws_plugin__optimizemember_drip_days"])) { $drip_days = trim($_p["ws_plugin__optimizemember_drip_days"]); /**/ if (strlen($drip_days)) { update_post_meta($post_id, "optimizemember_drip_days", $drip_days); } else { /* Otherwise, the array is empty. Safe to delete. */ delete_post_meta($post_id, "optimizemember_drip_days"); } } if (isset($_p["ws_plugin__optimizemember_drip_redirect_url"])) { $drip_redirect_url = trim($_p["ws_plugin__optimizemember_drip_redirect_url"]); /**/ if (strlen($drip_redirect_url)) { update_post_meta($post_id, "optimizemember_drip_redirect_url", $drip_redirect_url); } else { /* Otherwise, the array is empty. Safe to delete. */ delete_post_meta($post_id, "optimizemember_drip_redirect_url"); } } if (isset($_p["ws_plugin__optimizemember_force_ssl"])) { $force_ssl = trim($_p["ws_plugin__optimizemember_force_ssl"]); /**/ if (strlen($force_ssl)) { update_post_meta($post_id, "optimizemember_force_ssl", $force_ssl); } else { /* Otherwise, the array is empty. Safe to delete. */ delete_post_meta($post_id, "optimizemember_force_ssl"); } } else { delete_post_meta($post_id, "optimizemember_force_ssl"); } } } } } /**/ do_action("ws_plugin__optimizemember_after_save_meta_boxes", get_defined_vars()); /**/ return; /* Return for uniformity. */ }
/** * Handles the importation of options. * * @package optimizeMember\Imports * @since 110815 * * @return null */ public static function import_ops() { if (!empty($_POST["ws_plugin__optimizemember_pro_import_ops"]) && ($nonce = $_POST["ws_plugin__optimizemember_pro_import_ops"]) && wp_verify_nonce($nonce, "ws-plugin--optimizemember-pro-import-ops") && current_user_can("create_users")) { @set_time_limit(0); /* Make time for processing large import files. */ @ini_set("memory_limit", apply_filters("admin_memory_limit", WP_MAX_MEMORY_LIMIT)); /**/ if (!empty($_FILES["ws_plugin__optimizemember_pro_import_ops_file"]) && empty($_FILES["ws_plugin__optimizemember_pro_import_ops_file"]["error"])) { $file = file_get_contents($_FILES["ws_plugin__optimizemember_pro_import_ops_file"]["tmp_name"], "r"); } /**/ if (!empty($file)) { if (is_array($import = c_ws_plugin__optimizemember_pro_utils_ops::op_replace(@unserialize($file), true)) && !empty($import) && ($import["configured"] = "1")) { unset($import["options_checksum"], $import["options_version"]); /**/ foreach ($import as $key => $value) { is_array($value) ? array_unshift($value, "update-signal") : null; $import["ws_plugin__optimizemember_" . $key] = $value; unset($import[$key]); } /**/ c_ws_plugin__optimizemember_menu_pages::update_all_options($import, true, true, false, false, false); } else { $errors[] = "Invalid data received. Please try again."; } /* Unserialization failed? */ } else { $errors[] = "No data was received. Please try again."; } /* The upload failed, or it was empty. */ /**/ if (!empty($errors)) { /* Here is where a detailed error log will be returned to the Site Owner; as a way of clarifying what just happened during importation. */ c_ws_plugin__optimizemember_admin_notices::display_admin_notice('<strong>The following errors were encountered during importation:</strong><ul style="font-size:80%; list-style:disc outside; margin-left:25px;"><li>' . implode("</li><li>", $errors) . '</li></ul>', true); } else { c_ws_plugin__optimizemember_admin_notices::display_admin_notice('Operation complete. Options imported.'); } } /**/ return; /* Return for uniformity. */ }
/** * Auto-configures Amazon S3/CloudFront distros. * * @package optimizeMember\Files * @since 110926 * * @return array Array containing a true `success` element on success, else a failure array. * Failure array will contain a failure `code`, and a failure `message`. */ public static function amazon_cf_auto_configure_distros() { foreach ($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"] as $option => $option_value) { if (preg_match("/^amazon_cf_files_/", $option) && ($option = preg_replace("/^amazon_cf_files_/", "", $option))) { $cfc[$option] = $option_value; } } /**/ $s3c["bucket"] = $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["amazon_s3_files_bucket"]; $cfc["access_key"] = $s3c["access_key"] = $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["amazon_s3_files_access_key"]; $cfc["secret_key"] = $s3c["secret_key"] = $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["amazon_s3_files_secret_key"]; /**/ if ($s3c["bucket"] && $s3c["access_key"] && $s3c["secret_key"]) { if ($cfc["private_key"] && $cfc["private_key_id"]) { if (!$cfc["distro_downloads_id"] || $cfc["distro_downloads_id"] && ($cf_get_response = c_ws_plugin__optimizemember_files_in::amazon_cf_get_distro($cfc["distro_downloads_id"], "downloads")) && ($cf_get_response["success"] || $cf_get_response["code"] === 404)) { if (!$cfc["distro_downloads_id"] || $cfc["distro_downloads_id"] && $cf_get_response && !$cf_get_response["success"] && $cf_get_response["code"] === 404) { $cf_distro_downloads_clear = true; } else { if ($cfc["distro_downloads_id"] && $cf_get_response && $cf_get_response["success"] && !$cf_get_response["deployed"]) { return array("success" => false, "code" => -86, "message" => _x("Unable to delete existing Amazon CloudFront Downloads Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that optimizeMember must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run optimizeMember's auto-configuration routine many times, because optimizeMember will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again.", "s2member-admin", "s2member")); } else { if ($cfc["distro_downloads_id"] && $cf_get_response && $cf_get_response["success"] && $cf_get_response["deployed"] && ($cf_del_response = c_ws_plugin__optimizemember_files_in::amazon_cf_del_distro($cfc["distro_downloads_id"], $cf_get_response["etag"], $cf_get_response["xml"])) && $cf_del_response["success"]) { $cf_distro_downloads_clear = true; } else { if (isset($cf_del_response["code"], $cf_del_response["message"])) { /* translators: In this translation, `%s` may be filled with an English message, which comes from the Amazon CloudFront API call. Feel free to exclude `%s` if you like. */ return array("success" => false, "code" => $cf_del_response["code"], "message" => sprintf(_x("Unable to delete existing Amazon CloudFront Downloads Distro. %s", "s2member-admin", "s2member"), $cf_del_response["message"])); } } } } /**/ if (isset($cf_distro_downloads_clear) && $cf_distro_downloads_clear) { unset($cf_get_response, $cf_del_response); /**/ if (!$cfc["distro_streaming_id"] || $cfc["distro_streaming_id"] && ($cf_get_response = c_ws_plugin__optimizemember_files_in::amazon_cf_get_distro($cfc["distro_streaming_id"], "streaming")) && ($cf_get_response["success"] || $cf_get_response["code"] === 404)) { if (!$cfc["distro_streaming_id"] || $cfc["distro_streaming_id"] && $cf_get_response && !$cf_get_response["success"] && $cf_get_response["code"] === 404) { $cf_distro_streaming_clear = true; } else { if ($cfc["distro_streaming_id"] && $cf_get_response && $cf_get_response["success"] && !$cf_get_response["deployed"]) { return array("success" => false, "code" => -87, "message" => _x("Unable to delete existing Amazon CloudFront Streaming Distro. Still in a `pending` state. Please wait 15 minutes, then try again. There is a certain process that optimizeMember must strictly adhere to when re-configuring your Amazon CloudFront Distros. You may have to tick the auto-configure checkbox again, and re-run optimizeMember's auto-configuration routine many times, because optimizeMember will likely run into several `pending` challenges, as it works to completely re-configure your Amazon CloudFront Distros for you. Thanks for your patience. Please wait 15 minutes, then try again.", "s2member-admin", "s2member")); } else { if ($cfc["distro_streaming_id"] && $cf_get_response && $cf_get_response["success"] && $cf_get_response["deployed"] && ($cf_del_response = c_ws_plugin__optimizemember_files_in::amazon_cf_del_distro($cfc["distro_streaming_id"], $cf_get_response["etag"], $cf_get_response["xml"])) && $cf_del_response["success"]) { $cf_distro_streaming_clear = true; } else { if (isset($cf_del_response["code"], $cf_del_response["message"])) { /* translators: In this translation, `%s` may be filled with an English message, which comes from the Amazon CloudFront API call. Feel free to exclude `%s` if you like. */ return array("success" => false, "code" => $cf_del_response["code"], "message" => sprintf(_x("Unable to delete existing Amazon CloudFront Streaming Distro. %s", "s2member-admin", "s2member"), $cf_del_response["message"])); } } } } /**/ if (isset($cf_distro_streaming_clear) && $cf_distro_streaming_clear) { unset($cf_get_response, $cf_del_response); /**/ if (!$cfc["distros_access_id"] || $cfc["distros_access_id"] && ($cf_get_response = c_ws_plugin__optimizemember_files_in::amazon_cf_get_access_origin_identity($cfc["distros_access_id"])) && ($cf_get_response["success"] || $cf_get_response["code"] === 404)) { if (!$cfc["distros_access_id"] || $cfc["distros_access_id"] && $cf_get_response && !$cf_get_response["success"] && $cf_get_response["code"] === 404) { $cf_distros_access_clear = true; } else { if ($cfc["distros_access_id"] && $cf_get_response && $cf_get_response["success"] && ($cf_del_response = c_ws_plugin__optimizemember_files_in::amazon_cf_del_access_origin_identity($cfc["distros_access_id"], $cf_get_response["etag"], $cf_get_response["xml"])) && $cf_del_response["success"]) { $cf_distros_access_clear = true; } else { if (isset($cf_del_response["code"], $cf_del_response["message"])) { /* translators: In this translation, `%s` may be filled with an English message, which comes from the Amazon CloudFront API call. Feel free to exclude `%s` if you like. */ return array("success" => false, "code" => $cf_del_response["code"], "message" => sprintf(_x("Unable to delete existing Amazon CloudFront Origin Access Identity. %s", "s2member-admin", "s2member"), $cf_del_response["message"])); } } } /**/ if (isset($cf_distros_access_clear) && $cf_distros_access_clear) { unset($cf_get_response, $cf_del_response); /**/ $cfc = array_merge($cfc, array("distros_access_id" => "", "distros_s3_access_id" => "", "distro_downloads_id" => "", "distro_downloads_dname" => "", "distro_streaming_id" => "", "distro_streaming_dname" => "", "distros_auto_config_status" => "")); $cf_options = array("ws_plugin__optimizemember_amazon_cf_files_distros_access_id" => "", "ws_plugin__optimizemember_amazon_cf_files_distros_s3_access_id" => "", "ws_plugin__optimizemember_amazon_cf_files_distro_downloads_id" => "", "ws_plugin__optimizemember_amazon_cf_files_distro_downloads_dname" => "", "ws_plugin__optimizemember_amazon_cf_files_distro_streaming_id" => "", "ws_plugin__optimizemember_amazon_cf_files_distro_streaming_dname" => "", "ws_plugin__optimizemember_amazon_cf_files_distros_auto_config_status" => ""); c_ws_plugin__optimizemember_menu_pages::update_all_options($cf_options, true, false, false, false, false); /**/ if (($cf_response = c_ws_plugin__optimizemember_files_in::amazon_cf_create_distros_access_origin_identity()) && $cf_response["success"]) { $cfc = array_merge($cfc, array("distros_access_id" => $cf_response["distros_access_id"], "distros_s3_access_id" => $cf_response["distros_s3_access_id"])); $cf_options = array("ws_plugin__optimizemember_amazon_cf_files_distros_access_id" => $cf_response["distros_access_id"], "ws_plugin__optimizemember_amazon_cf_files_distros_s3_access_id" => $cf_response["distros_s3_access_id"]); c_ws_plugin__optimizemember_menu_pages::update_all_options($cf_options, true, false, false, false, false); /**/ if (($cf_response = c_ws_plugin__optimizemember_files_in::amazon_cf_create_distro("downloads")) && $cf_response["success"]) { $cfc = array_merge($cfc, array("distro_downloads_id" => $cf_response["distro_downloads_id"], "distro_downloads_dname" => $cf_response["distro_downloads_dname"])); $cf_options = array("ws_plugin__optimizemember_amazon_cf_files_distro_downloads_id" => $cf_response["distro_downloads_id"], "ws_plugin__optimizemember_amazon_cf_files_distro_downloads_dname" => $cf_response["distro_downloads_dname"]); c_ws_plugin__optimizemember_menu_pages::update_all_options($cf_options, true, false, false, false, false); /**/ if (($cf_response = c_ws_plugin__optimizemember_files_in::amazon_cf_create_distro("streaming")) && $cf_response["success"]) { $cfc = array_merge($cfc, array("distro_streaming_id" => $cf_response["distro_streaming_id"], "distro_streaming_dname" => $cf_response["distro_streaming_dname"])); $cf_options = array("ws_plugin__optimizemember_amazon_cf_files_distro_streaming_id" => $cf_response["distro_streaming_id"], "ws_plugin__optimizemember_amazon_cf_files_distro_streaming_dname" => $cf_response["distro_streaming_dname"]); c_ws_plugin__optimizemember_menu_pages::update_all_options($cf_options, true, false, false, false, false); /**/ for ($a = 1, $attempts = 4, $sleep = 2, sleep($sleep); $a <= $attempts; $a++, $a <= $attempts ? sleep($sleep) : null) { /* Allow a generous propagation time here. Amazon's high-availability services do NOT guarantee real-time updates. Since we DO need a fully propagated Origin Access Identity now, we need to make several attempts at success. For further details, please see this thread: <https://forums.aws.amazon.com/message.jspa?messageID=42875>. */ if (($s3_response = c_ws_plugin__optimizemember_files_in::amazon_s3_auto_configure_acls()) && $s3_response["success"]) { $cfc = array_merge($cfc, array("distros_auto_config_status" => "configured")); $cf_options = array("ws_plugin__optimizemember_amazon_cf_files_distros_auto_config_status" => "configured"); c_ws_plugin__optimizemember_menu_pages::update_all_options($cf_options, true, false, false, false, false); return array("success" => true, "code" => null, "message" => null); } } if (isset($s3_response["code"], $s3_response["message"])) { /* translators: In this translation, `%s` may be filled with an English message, which comes from the Amazon S3 API call. Feel free to exclude `%s` if you like. */ return array("success" => false, "code" => $s3_response["code"], "message" => sprintf(_x("Unable to update existing Amazon S3 ACLs. %s", "s2member-admin", "s2member"), $s3_response["message"])); } else { /* Else, we use a default error code and message. */ return array("success" => false, "code" => -88, "message" => _x("Unable to update existing Amazon S3 ACLs. Connection failed.", "s2member-admin", "s2member")); } } else { if (isset($cf_response["code"], $cf_response["message"])) { /* translators: In this translation, `%s` may be filled with an English message, which comes from the Amazon CloudFront API call. Feel free to exclude `%s` if you like. */ return array("success" => false, "code" => $cf_response["code"], "message" => sprintf(_x("Unable to create Amazon CloudFront Streaming Distro. %s", "s2member-admin", "s2member"), $cf_response["message"])); } else { /* Else, we use a default error code and message. */ return array("success" => false, "code" => -89, "message" => _x("Unable to create Amazon CloudFront Streaming Distro. Connection failed.", "s2member-admin", "s2member")); } } } else { if (isset($cf_response["code"], $cf_response["message"])) { /* translators: In this translation, `%s` may be filled with an English message, which comes from the Amazon CloudFront API call. Feel free to exclude `%s` if you like. */ return array("success" => false, "code" => $cf_response["code"], "message" => sprintf(_x("Unable to create Amazon CloudFront Downloads Distro. %s", "s2member-admin", "s2member"), $cf_response["message"])); } else { /* Else, we use a default error code and message. */ return array("success" => false, "code" => -90, "message" => _x("Unable to create Amazon CloudFront Downloads Distro. Connection failed.", "s2member-admin", "s2member")); } } } else { if (isset($cf_response["code"], $cf_response["message"])) { /* translators: In this translation, `%s` may be filled with an English message, which comes from the Amazon CloudFront API call. Feel free to exclude `%s` if you like. */ return array("success" => false, "code" => $cf_response["code"], "message" => sprintf(_x("Unable to create Amazon CloudFront Origin Access Identity. %s", "s2member-admin", "s2member"), $cf_response["message"])); } else { /* Else, we use a default error code and message. */ return array("success" => false, "code" => -91, "message" => _x("Unable to create Amazon CloudFront Origin Access Identity. Connection failed.", "s2member-admin", "s2member")); } } } else { /* Else, we use a default error code and message. */ return array("success" => false, "code" => -92, "message" => _x("Unable to clear existing Amazon CloudFront Origin Access Identity.", "s2member-admin", "s2member")); } } else { if (isset($cf_get_response["code"], $cf_get_response["message"])) { /* translators: In this translation, `%s` may be filled with an English message, which comes from the Amazon CloudFront API call. Feel free to exclude `%s` if you like. */ return array("success" => false, "code" => $cf_get_response["code"], "message" => sprintf(_x("Unable to acquire existing Amazon CloudFront Origin Access Identity. %s", "s2member-admin", "s2member"), $cf_get_response["message"])); } else { /* Else, we use a default error code and message. */ return array("success" => false, "code" => -93, "message" => _x("Unable to acquire existing Amazon CloudFront Origin Access Identity. Connection failed.", "s2member-admin", "s2member")); } } } else { /* Else, we use a default error code and message. */ return array("success" => false, "code" => -94, "message" => _x("Unable to clear existing Amazon CloudFront Streaming Distro.", "s2member-admin", "s2member")); } } else { if (isset($cf_get_response["code"], $cf_get_response["message"])) { /* translators: In this translation, `%s` may be filled with an English message, which comes from the Amazon CloudFront API call. Feel free to exclude `%s` if you like. */ return array("success" => false, "code" => $cf_get_response["code"], "message" => sprintf(_x("Unable to acquire existing Amazon CloudFront Streaming Distro. %s", "s2member-admin", "s2member"), $cf_get_response["message"])); } else { /* Else, we use a default error code and message. */ return array("success" => false, "code" => -95, "message" => _x("Unable to acquire existing Amazon CloudFront Streaming Distro. Connection failed.", "s2member-admin", "s2member")); } } } else { /* Else, we use a default error code and message. */ return array("success" => false, "code" => -96, "message" => _x("Unable to clear existing Amazon CloudFront Downloads Distro.", "s2member-admin", "s2member")); } } else { if (isset($cf_get_response["code"], $cf_get_response["message"])) { /* translators: In this translation, `%s` may be filled with an English message, which comes from the Amazon CloudFront API call. Feel free to exclude `%s` if you like. */ return array("success" => false, "code" => $cf_get_response["code"], "message" => sprintf(_x("Unable to acquire existing Amazon CloudFront Downloads Distro. %s", "s2member-admin", "s2member"), $cf_get_response["message"])); } else { /* Else, we use a default error code and message. */ return array("success" => false, "code" => -97, "message" => _x("Unable to acquire existing Amazon CloudFront Downloads Distro. Connection failed.", "s2member-admin", "s2member")); } } } else { /* Else, we use a default error code and message. */ return array("success" => false, "code" => -98, "message" => _x("Unable to auto-configure Amazon CloudFront Distros. Incomplete Amazon CloudFront configuration options. Missing of one: Amazon CloudFront Private Key-Pair-ID, or Private Key file contents.", "s2member-admin", "s2member")); } } else { /* Else, we use a default error code and message. */ return array("success" => false, "code" => -99, "message" => _x("Unable to auto-configure Amazon S3/CloudFront Distros. Incomplete Amazon S3 configuration options. Missing one of: Amazon S3 Bucket, Access Key, or Secret Key. You must provide optimizeMember with an Amazon S3 configuration before enabling CloudFront.", "s2member-admin", "s2member")); } }
/** * Builds and handles the API Notifications page. * * @package optimizeMember\Menu_Pages * @since 3.5 * * @return null */ public static function api_ops_page() { do_action("ws_plugin__optimizemember_before_api_ops_page", get_defined_vars()); /**/ c_ws_plugin__optimizemember_menu_pages::update_all_options(); /**/ include_once dirname(dirname(__FILE__)) . "/menu-pages/api-ops.inc.php"; /**/ do_action("ws_plugin__optimizemember_after_api_ops_page", get_defined_vars()); /**/ return; /* Return for uniformity. */ }
/** * Builds the Coupon Codes page. * * @package optimizeMember\Menu_Pages * @since 1.5 * * @return null */ public static function coupon_codes_page() { c_ws_plugin__optimizemember_menu_pages::update_all_options(); /* Updates options. */ /**/ include_once dirname(dirname(__FILE__)) . "/menu-pages/coupon-codes.inc.php"; /**/ return; /* Return for uniformity. */ }