/** * Handles optimizeMember option Replacement Codes. * * @package optimizeMember\Utilities * @since 110815 * * @param array $ops An array of optimizeMember options, or an option value array. * @param bool $fill Optional. If true, Replacement Codes are filled, else false. * @return mixed The end result, after handling Replacement Codes. */ public static function op_replace($ops = FALSE, $fill = FALSE) { global $current_site, $current_blog; /* Multisite. */ /**/ if (is_array($ops) && !empty($ops)) { foreach ($ops as &$op) { if (is_array($op) && !empty($op)) { /* Array? */ $op = c_ws_plugin__optimizemember_pro_utils_ops::op_replace($op, $fill); } else { if (is_string($op) && !$fill) { $op = is_multisite() ? preg_replace("/" . preg_quote(rtrim($current_site->domain . $current_site->path, "/") . "/", "/") . "/", "%%_op__current_site_domain_path/%%", $op) : $op; $op = is_multisite() ? preg_replace("/" . preg_quote(rtrim($current_site->domain . $current_site->path, "/"), "/") . "/", "%%_op__current_site_domain_path%%", $op) : $op; /**/ $op = is_multisite() ? preg_replace("/" . preg_quote(rtrim($current_blog->domain . $current_blog->path, "/") . "/", "/") . "/", "%%_op__current_blog_domain_path/%%", $op) : $op; $op = is_multisite() ? preg_replace("/" . preg_quote(rtrim($current_blog->domain . $current_blog->path, "/"), "/") . "/", "%%_op__current_blog_domain_path%%", $op) : $op; /**/ $op = preg_replace("/" . preg_quote(rtrim(site_url(), "/"), "/") . "/", "%%_op__site_url%%", preg_replace("/" . preg_quote(rtrim(site_url(), "/") . "/", "/") . "/", "%%_op__site_url/%%", $op)); $op = preg_replace("/" . preg_quote(rtrim(home_url(), "/"), "/") . "/", "%%_op__home_url%%", preg_replace("/" . preg_quote(rtrim(home_url(), "/") . "/", "/") . "/", "%%_op__home_url/%%", $op)); /**/ $op = preg_replace("/" . preg_quote($_SERVER["HTTP_HOST"], "/") . "/i", "%%_op__domain%%", preg_replace("/" . preg_quote(get_bloginfo("name"), "/") . "/", "%%_op__blog_name%%", $op)); } else { if (is_string($op) && $fill) { $op = is_multisite() ? preg_replace("/%%_op__current_site_domain_path\\/%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds(rtrim($current_site->domain . $current_site->path, "/") . "/"), $op) : preg_replace("/%%_op__current_site_domain_path\\/%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds(rtrim(site_url(), "/") . "/"), $op); $op = is_multisite() ? preg_replace("/%%_op__current_site_domain_path%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds(rtrim($current_site->domain . $current_site->path, "/")), $op) : preg_replace("/%%_op__current_site_domain_path%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds(rtrim(site_url(), "/")), $op); /**/ $op = is_multisite() ? preg_replace("/%%_op__current_blog_domain_path\\/%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds(rtrim($current_blog->domain . $current_blog->path, "/") . "/"), $op) : preg_replace("/%%_op__current_blog_domain_path\\/%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds(rtrim(site_url(), "/") . "/"), $op); $op = is_multisite() ? preg_replace("/%%_op__current_blog_domain_path%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds(rtrim($current_blog->domain . $current_blog->path, "/")), $op) : preg_replace("/%%_op__current_blog_domain_path%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds(rtrim(site_url(), "/")), $op); /**/ $op = preg_replace("/%%_op__site_url%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds(rtrim(site_url(), "/")), preg_replace("/%%_op__site_url\\/%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds(rtrim(site_url(), "/") . "/"), $op)); $op = preg_replace("/%%_op__home_url%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds(rtrim(home_url(), "/")), preg_replace("/%%_op__home_url\\/%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds(rtrim(home_url(), "/") . "/"), $op)); /**/ $op = preg_replace("/%%_op__domain%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds($_SERVER["HTTP_HOST"]), preg_replace("/%%_op__blog_name%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds(get_bloginfo("name")), $op)); } } } } } /**/ return $ops; /* Now return the $ops. */ }
/** * 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. */ }
/** * Handles the exportation of options. * * @package optimizeMember\Exports * @since 110815 * * @return null Or exits script execution after issuing file download prompt with TXT file. */ public static function export_ops() { if (!empty($_GET["ws_plugin__optimizemember_pro_export_ops"]) && ($nonce = $_GET["ws_plugin__optimizemember_pro_export_ops"]) && wp_verify_nonce($nonce, "ws-plugin--optimizemember-pro-export-ops") && current_user_can("create_users")) { $export = serialize(c_ws_plugin__optimizemember_pro_utils_ops::op_replace($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"])); /**/ @set_time_limit(0) . @ini_set("memory_limit", apply_filters("admin_memory_limit", WP_MAX_MEMORY_LIMIT)); @ini_set("zlib.output_compression", 0) . eval('while (@ob_end_clean ());'); /**/ status_header(200); /* 200 OK status header. */ /**/ header("Content-Encoding:"); header("Accept-Ranges: none"); header("Content-Type: text/plain; charset=utf-8"); header("Content-Length: " . strlen($export)); header("Expires: " . gmdate("D, d M Y H:i:s", strtotime("-1 week")) . " GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); /**/ header('Content-Disposition: attachment; filename="export.s2e"'); /**/ exit($export); /* Exportation file. */ } }