/** * Handles s2Member option Replacement Codes. * * @package s2Member\Utilities * @since 110815 * * @param array $ops An array of s2Member 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; if (is_array($ops) && !empty($ops)) { foreach ($ops as &$op) { if (is_array($op) && !empty($op)) { // Array? $op = c_ws_plugin__s2member_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%%", get_bloginfo("name") ? preg_replace("/" . preg_quote(get_bloginfo("name"), "/") . "/", "%%_op__blog_name%%", $op) : $op); } else { if (is_string($op) && $fill) { $op = is_multisite() ? preg_replace("/%%_op__current_site_domain_path\\/%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(rtrim($current_site->domain . $current_site->path, "/") . "/"), $op) : preg_replace("/%%_op__current_site_domain_path\\/%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(rtrim(site_url(), "/") . "/"), $op); $op = is_multisite() ? preg_replace("/%%_op__current_site_domain_path%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(rtrim($current_site->domain . $current_site->path, "/")), $op) : preg_replace("/%%_op__current_site_domain_path%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(rtrim(site_url(), "/")), $op); $op = is_multisite() ? preg_replace("/%%_op__current_blog_domain_path\\/%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(rtrim($current_blog->domain . $current_blog->path, "/") . "/"), $op) : preg_replace("/%%_op__current_blog_domain_path\\/%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(rtrim(site_url(), "/") . "/"), $op); $op = is_multisite() ? preg_replace("/%%_op__current_blog_domain_path%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(rtrim($current_blog->domain . $current_blog->path, "/")), $op) : preg_replace("/%%_op__current_blog_domain_path%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(rtrim(site_url(), "/")), $op); $op = preg_replace("/%%_op__site_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(rtrim(site_url(), "/")), preg_replace("/%%_op__site_url\\/%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(rtrim(site_url(), "/") . "/"), $op)); $op = preg_replace("/%%_op__home_url%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(rtrim(home_url(), "/")), preg_replace("/%%_op__home_url\\/%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(rtrim(home_url(), "/") . "/"), $op)); $op = preg_replace("/%%_op__domain%%/i", c_ws_plugin__s2member_utils_strings::esc_ds($_SERVER["HTTP_HOST"]), preg_replace("/%%_op__blog_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds(get_bloginfo("name")), $op)); } } } } } return $ops; // Now return the $ops. }
/** * Handles s2Member option Replacement Codes. * * @package s2Member\Utilities * @since 110815 * * @param array $ops An array of s2Member 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 = array(), $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__s2member_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%%', get_bloginfo('name') ? preg_replace('/' . preg_quote(get_bloginfo('name'), '/') . '/', '%%_op__blog_name%%', $op) : $op); } else { if (is_string($op) && $fill) { $op = is_multisite() ? preg_replace('/%%_op__current_site_domain_path\\/%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(rtrim($current_site->domain . $current_site->path, '/') . '/'), $op) : preg_replace('/%%_op__current_site_domain_path\\/%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(rtrim(home_url(), '/') . '/'), $op); $op = is_multisite() ? preg_replace('/%%_op__current_site_domain_path%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(rtrim($current_site->domain . $current_site->path, '/')), $op) : preg_replace('/%%_op__current_site_domain_path%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(rtrim(home_url(), '/')), $op); $op = is_multisite() ? preg_replace('/%%_op__current_blog_domain_path\\/%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(rtrim($current_blog->domain . $current_blog->path, '/') . '/'), $op) : preg_replace('/%%_op__current_blog_domain_path\\/%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(rtrim(home_url(), '/') . '/'), $op); $op = is_multisite() ? preg_replace('/%%_op__current_blog_domain_path%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(rtrim($current_blog->domain . $current_blog->path, '/')), $op) : preg_replace('/%%_op__current_blog_domain_path%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(rtrim(home_url(), '/')), $op); $op = preg_replace('/%%_op__site_url%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(rtrim(site_url(), '/')), preg_replace('/%%_op__site_url\\/%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(rtrim(site_url(), '/') . '/'), $op)); $op = preg_replace('/%%_op__home_url%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(rtrim(home_url(), '/')), preg_replace('/%%_op__home_url\\/%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(rtrim(home_url(), '/') . '/'), $op)); $op = preg_replace('/%%_op__domain%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($_SERVER['HTTP_HOST']), preg_replace('/%%_op__blog_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(get_bloginfo('name')), $op)); } } } } } return $ops; // Now return the $ops. }
/** * Handles the exportation of options. * * @package s2Member\Exports * @since 110815 */ public static function export_ops() { if (!empty($_GET['ws_plugin__s2member_pro_export_ops']) && ($nonce = $_GET['ws_plugin__s2member_pro_export_ops']) && wp_verify_nonce($nonce, 'ws-plugin--s2member-pro-export-ops') && current_user_can('create_users')) { $export = serialize(c_ws_plugin__s2member_pro_utils_ops::op_replace($GLOBALS['WS_PLUGIN__']['s2member']['o'])); @set_time_limit(0); @ini_set('memory_limit', apply_filters('admin_memory_limit', WP_MAX_MEMORY_LIMIT)); @ini_set('zlib.output_compression', 0); if (function_exists('apache_setenv')) { @apache_setenv('no-gzip', '1'); } while (@ob_end_clean()) { } status_header(200); // 200 OK status header. header('Content-Encoding: none'); 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. } }
/** * Handles the importation of options. * * @package s2Member\Imports * @since 110815 * * @return null */ public static function import_ops() { if (!empty($_POST["ws_plugin__s2member_pro_import_ops"]) && ($nonce = $_POST["ws_plugin__s2member_pro_import_ops"]) && wp_verify_nonce($nonce, "ws-plugin--s2member-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__s2member_pro_import_ops_file"]) && empty($_FILES["ws_plugin__s2member_pro_import_ops_file"]["error"])) { $file = file_get_contents($_FILES["ws_plugin__s2member_pro_import_ops_file"]["tmp_name"], "r"); } if (!empty($file)) { if (is_array($import = c_ws_plugin__s2member_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__s2member_" . $key] = $value; unset($import[$key]); } c_ws_plugin__s2member_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__s2member_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__s2member_admin_notices::display_admin_notice('Operation complete. Options imported.'); } } return; }
/** * Handles the importation of options. * * @package s2Member\Imports * @since 110815 */ public static function import_ops() { if (!empty($_POST['ws_plugin__s2member_pro_import_ops']) && ($nonce = $_POST['ws_plugin__s2member_pro_import_ops']) && wp_verify_nonce($nonce, 'ws-plugin--s2member-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__s2member_pro_import_ops_file']) && empty($_FILES['ws_plugin__s2member_pro_import_ops_file']['error'])) { $file = file_get_contents($_FILES['ws_plugin__s2member_pro_import_ops_file']['tmp_name'], 'r'); } if (!empty($file)) { if (is_array($import = c_ws_plugin__s2member_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__s2member_' . $key] = $value; unset($import[$key]); } c_ws_plugin__s2member_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__s2member_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__s2member_admin_notices::display_admin_notice('Operation complete. Options imported.'); } } }
/** * Handles the exportation of options. * * @package s2Member\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__s2member_pro_export_ops"]) && ($nonce = $_GET["ws_plugin__s2member_pro_export_ops"]) && wp_verify_nonce($nonce, "ws-plugin--s2member-pro-export-ops") && current_user_can("create_users")) { $export = serialize(c_ws_plugin__s2member_pro_utils_ops::op_replace($GLOBALS["WS_PLUGIN__"]["s2member"]["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. */ } }