/** * Saves Custom Fields after an admin updates Profile. * * @package s2Member\Users_List * @since 3.5 * * @attaches-to ``add_action("edit_user_profile_update");`` * @attaches-to ``add_action("personal_options_update");`` * * @param int|str $user_id Expects a numeric WordPress User ID passed in by the Action Hook. * @return null */ public static function users_list_update_cols($user_id = FALSE) { global $current_site, $current_blog; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_before_users_list_update_cols", get_defined_vars()); unset($__refs, $__v); $user = new WP_User($user_id); $current_user = is_user_logged_in() ? wp_get_current_user() : false; if (is_object($user) && !empty($user->ID) && ($user_id = $user->ID) && is_object($current_user) && !empty($current_user->ID)) { if (current_user_can("edit_users") && (!is_multisite() || is_super_admin() || is_user_member_of_blog($user_id))) { if (!empty($_POST) && is_array($_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)))) { $old_user = unserialize(serialize($user)); $old_role = c_ws_plugin__s2member_user_access::user_access_role($old_user); $role = isset($_p["role"]) && $_p["role"] !== $old_role ? $_p["role"] : $old_role; $level = c_ws_plugin__s2member_user_access::user_access_role_to_level($role); $user->roles = isset($_p["role"]) && $_p["role"] !== $old_role ? array($_p["role"]) : $old_user->roles; $user->user_email = isset($_p["email"]) && is_email($_p["email"]) && $_p["email"] !== $old_user->user_email && !email_exists($_p["email"]) ? $_p["email"] : $old_user->user_email; $user->first_name = isset($_p["first_name"]) && $_p["first_name"] !== $old_user->first_name ? $_p["first_name"] : $old_user->first_name; $user->last_name = isset($_p["last_name"]) && $_p["last_name"] !== $old_user->last_name ? $_p["last_name"] : $old_user->last_name; $auto_eot_time = !empty($_p["ws_plugin__s2member_profile_s2member_auto_eot_time"]) ? strtotime($_p["ws_plugin__s2member_profile_s2member_auto_eot_time"]) : ""; if ($role !== $old_role) { // In this case, we need to fire Hook: `ws_plugin__s2member_during_collective_mods`. do_action("ws_plugin__s2member_during_collective_mods", $user_id, get_defined_vars(), "user-role-change", "modification", $role, $user, $old_user); } if (isset($_p["ws_plugin__s2member_profile_s2member_originating_blog"]) && is_multisite() && is_super_admin()) { update_user_meta($user_id, "s2member_originating_blog", $_p["ws_plugin__s2member_profile_s2member_originating_blog"]); } if (isset($_p["ws_plugin__s2member_profile_s2member_subscr_gateway"])) { update_user_option($user_id, "s2member_subscr_gateway", $_p["ws_plugin__s2member_profile_s2member_subscr_gateway"]); } if (isset($_p["ws_plugin__s2member_profile_s2member_subscr_id"])) { update_user_option($user_id, "s2member_subscr_id", $_p["ws_plugin__s2member_profile_s2member_subscr_id"]); } if (isset($_p["ws_plugin__s2member_profile_s2member_custom"])) { update_user_option($user_id, "s2member_custom", $_p["ws_plugin__s2member_profile_s2member_custom"]); } if (isset($_p["ws_plugin__s2member_profile_s2member_registration_ip"])) { update_user_option($user_id, "s2member_registration_ip", $_p["ws_plugin__s2member_profile_s2member_registration_ip"]); } if (isset($_p["ws_plugin__s2member_profile_s2member_notes"])) { update_user_option($user_id, "s2member_notes", $_p["ws_plugin__s2member_profile_s2member_notes"]); } if (isset($_p["ws_plugin__s2member_profile_s2member_auto_eot_time"]) && isset($auto_eot_time)) { update_user_option($user_id, "s2member_auto_eot_time", $auto_eot_time); } if (isset($_p["ws_plugin__s2member_profile_s2member_ccaps"])) { foreach ($user->allcaps as $cap => $cap_enabled) { if (preg_match("/^access_s2member_ccap_/", $cap)) { $user->remove_cap($ccap = $cap); } } if (!empty($_p["ws_plugin__s2member_profile_s2member_ccaps"])) { foreach (preg_split("/[\r\n\t\\s;,]+/", $_p["ws_plugin__s2member_profile_s2member_ccaps"]) as $ccap) { if (strlen($ccap = trim(strtolower(preg_replace("/[^a-z_0-9]/i", "", $ccap))))) { $user->add_cap("access_s2member_ccap_" . $ccap); } } } } if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field) { $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"])); $field_id_class = preg_replace("/_/", "-", $field_var); if (isset($_p["ws_plugin__s2member_profile_" . $field_var])) { if (is_array($_p["ws_plugin__s2member_profile_" . $field_var]) && !empty($_p["ws_plugin__s2member_profile_" . $field_var]) || is_string($_p["ws_plugin__s2member_profile_" . $field_var]) && strlen($_p["ws_plugin__s2member_profile_" . $field_var])) { $fields[$field_var] = $_p["ws_plugin__s2member_profile_" . $field_var]; } else { unset($fields[$field_var]); } } else { unset($fields[$field_var]); } } } if (!empty($fields)) { update_user_option($user_id, "s2member_custom_fields", $fields); } else { delete_user_option($user_id, "s2member_custom_fields"); } if ($level > 0) { $pr_times = get_user_option("s2member_paid_registration_times", $user_id); $pr_times["level"] = empty($pr_times["level"]) ? time() : $pr_times["level"]; $pr_times["level" . $level] = empty($pr_times["level" . $level]) ? time() : $pr_times["level" . $level]; update_user_option($user_id, "s2member_paid_registration_times", $pr_times); // Update now. } if (!empty($_p["ws_plugin__s2member_profile_opt_in"]) && !empty($role) && $level >= 0) { c_ws_plugin__s2member_list_servers::process_list_servers($role, $level, $user->user_login, !empty($_p["pass1"]) ? $_p["pass1"] : "", $user->user_email, $user->first_name, $user->last_name, false, true, true, $user_id); } if (!empty($_p["ws_plugin__s2member_profile_ip_restrictions"])) { c_ws_plugin__s2member_ip_restrictions::delete_reset_specific_ip_restrictions(strtolower($user->user_login)); } if (!empty($_p["ws_plugin__s2member_profile_reset_pass_resend"]) && c_ws_plugin__s2member_utils_conds::pro_is_installed()) { c_ws_plugin__s2member_email_configs::reset_pass_resend_new_user_notification($user_id, !empty($_p["pass1"]) ? $_p["pass1"] : "", array("user"), $user->user_email); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_users_list_update_cols", get_defined_vars()); unset($__refs, $__v); } } else { if ($current_user->ID === $user->ID) { if (!empty($_POST) && is_array($_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)))) { $role = c_ws_plugin__s2member_user_access::user_access_role($user); $level = c_ws_plugin__s2member_user_access::user_access_role_to_level($role); if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($level, "profile")) { $_existing_fields = get_user_option("s2member_custom_fields", $user_id); foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field) { $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"])); $field_id_class = preg_replace("/_/", "-", $field_var); if (!in_array($field["id"], $fields_applicable) || strpos($field["editable"], "no") === 0) { if (isset($_existing_fields[$field_var]) && (is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var]) || is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))) { $fields[$field_var] = $_existing_fields[$field_var]; } else { // Else ``unset()``. unset($fields[$field_var]); } } else { if ($field["required"] === "yes" && (!isset($_p["ws_plugin__s2member_profile_" . $field_var]) || !is_array($_p["ws_plugin__s2member_profile_" . $field_var]) && !is_string($_p["ws_plugin__s2member_profile_" . $field_var]) || is_array($_p["ws_plugin__s2member_profile_" . $field_var]) && empty($_p["ws_plugin__s2member_profile_" . $field_var]) || is_string($_p["ws_plugin__s2member_profile_" . $field_var]) && !strlen($_p["ws_plugin__s2member_profile_" . $field_var]))) { if (isset($_existing_fields[$field_var]) && (is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var]) || is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))) { $fields[$field_var] = $_existing_fields[$field_var]; } else { // Else ``unset()``. unset($fields[$field_var]); } } else { if (isset($_p["ws_plugin__s2member_profile_" . $field_var])) { if (is_array($_p["ws_plugin__s2member_profile_" . $field_var]) && !empty($_p["ws_plugin__s2member_profile_" . $field_var]) || is_string($_p["ws_plugin__s2member_profile_" . $field_var]) && strlen($_p["ws_plugin__s2member_profile_" . $field_var])) { $fields[$field_var] = $_p["ws_plugin__s2member_profile_" . $field_var]; } else { unset($fields[$field_var]); } } else { unset($fields[$field_var]); } } } } if (!empty($fields)) { update_user_option($user_id, "s2member_custom_fields", $fields); } else { delete_user_option($user_id, "s2member_custom_fields"); } } } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_users_list_update_cols", get_defined_vars()); unset($__refs, $__v); } } } } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_after_users_list_update_cols", get_defined_vars()); unset($__refs, $__v); return; }
/** * Shortcode `[s2Member-Pro-AuthNet-Form /]`. * * @package s2Member\AuthNet * @since 1.5 * * @attaches-to ``add_shortcode("s2Member-Pro-AuthNet-Form");`` * * @param array $attr An array of Attributes. * @param string $content Content inside the Shortcode. * @param string $shortcode The actual Shortcode name itself. * @return string The resulting Form Code, HTML markup. */ public static function sc_authnet_form($attr = FALSE, $content = FALSE, $shortcode = FALSE) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_pro_before_sc_authnet_form", get_defined_vars()); unset($__refs, $__v); c_ws_plugin__s2member_no_cache::no_cache_constants(true); $attr = c_ws_plugin__s2member_utils_strings::trim_qts_deep((array) $attr); $options = array(); // Initialize options to an empty array. $option_selections = ''; // Initialize w/ no options. if ($content && ($content = strip_tags($content))) { // This allows for nested Pro-Form Shortcodes as options. $content = str_replace('s2Member-Pro-AuthNet-Form ', 's2Member-Pro-AuthNet-xFormOption ', $content); } if ($content && ($content_options = do_shortcode($content))) { foreach (preg_split('/\\s*\\|\\:\\:\\|\\s*/', $content_options, NULL, PREG_SPLIT_NO_EMPTY) as $_content_option_key => $_content_option) { $_content_option_id = $_content_option_key + 1; $options[$_content_option_id] = maybe_unserialize(trim($_content_option)); if (!is_array($options[$_content_option_id])) { unset($options[$_content_option_id]); continue; } if (!empty($_REQUEST['s2p-option']) && (int) $_REQUEST['s2p-option'] === $_content_option_id) { $options[$_content_option_id]['selected'] = TRUE; } } unset($_content_option_key, $_content_option, $_content_option_id); // Housekeeping. foreach ($options as $_option_id => $_option) { if (!empty($_option['selected'])) { $attr = array_merge($attr, $_option); $_selected_option_id = $_option_id; } } unset($_option_id, $_option); // Housekeeping. if (empty($_selected_option_id)) { foreach ($options as $_option_id => $_option) { $attr = array_merge($attr, $_option); break; } } // Force a selected option (default). unset($_option_id, $_option, $_selected_option_id); // Housekeeping. foreach ($options as $_option_id => $_option) { // Build option selections. $option_selections .= '<option value="' . esc_attr($_option_id) . '"' . (!empty($_option['selected']) ? ' selected="selected"' : '') . '>' . esc_html($_option['desc']) . '</option>'; } unset($_option_id, $_option); // Housekeeping. } $attr = shortcode_atts(array("ids" => "0", "exp" => "72", "level" => @$attr["register"] ? "0" : "1", "ccaps" => "", "desc" => "", "cc" => "USD", "custom" => $_SERVER["HTTP_HOST"], "ta" => "0", "tp" => "0", "tt" => "D", "ra" => "0.01", "rp" => "1", "rt" => "M", "rr" => "1", "rrt" => "", "modify" => "0", "cancel" => "0", "unsub" => "0", "sp" => "0", "register" => "0", "update" => "0", "accept" => "visa,mastercard,amex,discover", "coupon" => "", "accept_coupons" => "0", "default_country_code" => "US", "captcha" => "", "template" => "", "success" => ""), $attr); $attr["tt"] = strtoupper($attr["tt"]); $attr["rt"] = strtoupper($attr["rt"]); $attr["rr"] = strtoupper($attr["rr"]); $attr["ccaps"] = strtolower($attr["ccaps"]); $attr["ccaps"] = str_replace(" ", "", $attr["ccaps"]); $attr["rr"] = $attr["rt"] === "L" ? "BN" : $attr["rr"]; $attr["rr"] = $attr["level"] === "*" ? "BN" : $attr["rr"]; $attr["rr"] = !$attr["tp"] && !$attr["rr"] ? "BN" : $attr["rr"]; $attr["default_country_code"] = strtoupper($attr["default_country_code"]); $attr["success"] = c_ws_plugin__s2member_utils_urls::n_amps($attr["success"]); $attr["accept"] = trim($attr["accept"]) ? preg_split("/[;,]+/", preg_replace("/[\r\n\t\\s]+/", "", strtolower($attr["accept"]))) : array(); $attr["accept"] = empty($attr["accept"]) ? array_merge($attr["accept"], array("visa")) : $attr["accept"]; $attr["coupon"] = !empty($_GET["s2p-coupon"]) ? trim(strip_tags(stripslashes($_GET["s2p-coupon"]))) : $attr["coupon"]; $attr["singular"] = get_the_ID(); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_pro_before_sc_authnet_form_after_shortcode_atts", get_defined_vars()); unset($__refs, $__v); if ($attr["cancel"]) { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); /* Obtain a possible response and/or validation error. */ $response = c_ws_plugin__s2member_pro_authnet_responses::authnet_cancellation_response($attr); /* Empty post vars on successful response. */ $_p = $response["response"] && !$response["error"] ? array() : $_p; /* Build the reCaptcha box via JavaScript. */ if ($attr["captcha"]) { $captcha = '<div id="s2member-pro-authnet-cancellation-form-captcha-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-cancellation-form-section s2member-pro-authnet-form-captcha-section s2member-pro-authnet-cancellation-form-captcha-section">' . "\n"; $captcha .= '<div id="s2member-pro-authnet-cancellation-form-captcha-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-cancellation-form-section-title s2member-pro-authnet-form-captcha-section-title s2member-pro-authnet-cancellation-form-captcha-section-title">' . "\n"; $captcha .= _x("Security Verification", "s2member-front", "s2member") . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '<div id="s2member-pro-authnet-cancellation-form-captcha-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-cancellation-form-div s2member-pro-authnet-form-captcha-div s2member-pro-authnet-cancellation-form-captcha-div">' . "\n"; $captcha .= '<label id="s2member-pro-authnet-cancellation-form-captcha-label" class="s2member-pro-authnet-form-captcha-label s2member-pro-authnet-cancellation-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr["captcha"], 10) . "\n"; $captcha .= '</label>' . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '</div>' . "\n"; } /* Build the hidden input variables. */ $hidden_inputs = '<input type="hidden" name="s2member_pro_authnet_cancellation[nonce]" id="s2member-pro-authnet-cancellation-nonce" value="' . esc_attr(wp_create_nonce("s2member-pro-authnet-cancellation")) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2member_pro_authnet_cancellation[attr]" id="s2member-pro-authnet-cancellation-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2p-option" value="' . esc_attr((string) @$_REQUEST['s2p-option']) . '" />'; /* Get the form template. */ $custom_template = is_file(TEMPLATEPATH . "/authnet-cancellation-form.php") ? TEMPLATEPATH . "/authnet-cancellation-form.php" : ''; $custom_template = is_file(get_stylesheet_directory() . "/authnet-cancellation-form.php") ? get_stylesheet_directory() . "/authnet-cancellation-form.php" : $custom_template; $custom_template = $attr["template"] && is_file(TEMPLATEPATH . "/" . $attr["template"]) ? TEMPLATEPATH . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && is_file(get_stylesheet_directory() . "/" . $attr["template"]) ? get_stylesheet_directory() . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && is_file(WP_CONTENT_DIR . "/" . $attr["template"]) ? WP_CONTENT_DIR . "/" . $attr["template"] : $custom_template; $code = trim(file_get_contents($custom_template ? $custom_template : dirname(dirname(dirname(dirname(__FILE__)))) . "/templates/forms/authnet-cancellation-form.php")); $code = trim(!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); /* Fill in the action. */ $code = preg_replace("/%%action%%/", c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr($_SERVER["REQUEST_URI"])), $code); /* Fill in the response. */ $code = preg_replace("/%%response%%/", c_ws_plugin__s2member_utils_strings::esc_refs($response["response"]), $code); /* Fill in the description. */ $code = preg_replace("/%%description%%/", c_ws_plugin__s2member_utils_strings::esc_refs($attr["desc"]), $code); /* Fill the captcha section. */ $code = preg_replace("/%%captcha%%/", c_ws_plugin__s2member_utils_strings::esc_refs(@$captcha), $code); /* Fill hidden inputs. */ $code = preg_replace("/%%hidden_inputs%%/", c_ws_plugin__s2member_utils_strings::esc_refs($hidden_inputs), $code); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_pro_during_sc_authnet_cancellation_form", get_defined_vars()); unset($__refs, $__v); } else { if ($attr["register"]) { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); /* Obtain a possible response and/or validation error. */ $response = c_ws_plugin__s2member_pro_authnet_responses::authnet_registration_response($attr); /* Empty post vars on successful response. */ $_p = $response["response"] && !$response["error"] ? array() : $_p; /* Build all of the custom fields. */ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { // Only display Custom Fields if configured. if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($attr["level"], "registration")) { $tabindex = 99; // Start tabindex at 99 ( +1 below = 100 ). $custom_fields = '<div id="s2member-pro-authnet-registration-form-custom-fields-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-registration-form-section s2member-pro-authnet-form-custom-fields-section s2member-pro-authnet-registration-form-custom-fields-section">' . "\n"; $custom_fields .= '<div id="s2member-pro-authnet-registration-form-custom-fields-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-registration-form-section-title s2member-pro-authnet-form-custom-fields-section-title s2member-pro-authnet-registration-form-custom-fields-section-title">' . "\n"; $custom_fields .= _x("Additional Info", "s2member-front", "s2member") . "\n"; $custom_fields .= '</div>' . "\n"; foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field) { if (in_array($field["id"], $fields_applicable)) { $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"])); $field_id_class = preg_replace("/_/", "-", $field_var); if (!empty($field["section"]) && $field["section"] === "yes") { // Starts a new section? $custom_fields .= '<div id="s2member-pro-authnet-registration-form-custom-reg-field-' . $field_id_class . '-divider-section" class="s2member-pro-authnet-form-div s2member-pro-authnet-registration-form-div s2member-pro-authnet-form-custom-reg-field-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . ' s2member-pro-authnet-form-custom-reg-field-' . $field_id_class . '-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . ' s2member-pro-authnet-registration-form-custom-reg-field-' . $field_id_class . '-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . '">' . (!empty($field["sectitle"]) ? $field["sectitle"] : '') . '</div>'; } $custom_fields .= '<div id="s2member-pro-authnet-registration-form-custom-reg-field-' . $field_id_class . '-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-registration-form-div s2member-pro-authnet-form-custom-reg-field-' . $field_id_class . '-div s2member-pro-authnet-registration-form-custom-reg-field-' . $field_id_class . '-div">' . "\n"; $custom_fields .= '<label for="s2member-pro-authnet-registration-custom-reg-field-' . esc_attr($field_id_class) . '" id="s2member-pro-authnet-registration-form-custom-reg-field-' . $field_id_class . '-label" class="s2member-pro-authnet-form-custom-reg-field-' . $field_id_class . '-label s2member-pro-authnet-registration-form-custom-reg-field-' . $field_id_class . '-label">' . "\n"; $custom_fields .= '<span' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? ' style="display:none;"' : '') . '>' . $field["label"] . ($field["required"] === "yes" ? ' *' : '') . '</span></label>' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? '' : '<br />') . "\n"; $custom_fields .= c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, "s2member_pro_authnet_registration[custom_fields][", "s2member-pro-authnet-registration-custom-reg-field-", "s2member-pro-authnet-custom-reg-field-" . $field_id_class . " s2member-pro-authnet-registration-custom-reg-field-" . $field_id_class, "", $tabindex = $tabindex + 1, "", @$_p["s2member_pro_authnet_registration"], @$_p["s2member_pro_authnet_registration"]["custom_fields"][$field_var], "registration"); $custom_fields .= '</div>' . "\n"; } } $custom_fields .= '</div>' . "\n"; } } /* Build the reCaptcha box via JavaScript. */ if ($attr["captcha"]) { $captcha = '<div id="s2member-pro-authnet-registration-form-captcha-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-registration-form-section s2member-pro-authnet-form-captcha-section s2member-pro-authnet-registration-form-captcha-section">' . "\n"; $captcha .= '<div id="s2member-pro-authnet-registration-form-captcha-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-registration-form-section-title s2member-pro-authnet-form-captcha-section-title s2member-pro-authnet-registration-form-captcha-section-title">' . "\n"; $captcha .= _x("Security Verification", "s2member-front", "s2member") . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '<div id="s2member-pro-authnet-registration-form-captcha-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-registration-form-div s2member-pro-authnet-form-captcha-div s2member-pro-authnet-registration-form-captcha-div">' . "\n"; $captcha .= '<label id="s2member-pro-authnet-registration-form-captcha-label" class="s2member-pro-authnet-form-captcha-label s2member-pro-authnet-registration-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr["captcha"], 200) . "\n"; $captcha .= '</label>' . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '</div>' . "\n"; } /* Build the opt-in checkbox. */ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] && c_ws_plugin__s2member_list_servers::list_servers_integrated()) { $opt_in = '<div id="s2member-pro-authnet-registration-form-custom-reg-field-opt-in-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-registration-form-div s2member-pro-authnet-form-custom-reg-field-opt-in-div s2member-pro-authnet-registration-form-custom-reg-field-opt-in-div">' . "\n"; $opt_in .= '<label for="s2member-pro-authnet-registration-form-custom-reg-field-opt-in" id="s2member-pro-authnet-registration-form-custom-reg-field-opt-in-label" class="s2member-pro-authnet-form-custom-reg-field-opt-in-label s2member-pro-authnet-registration-form-custom-reg-field-opt-in-label">' . "\n"; $opt_in .= '<input type="checkbox" name="s2member_pro_authnet_registration[custom_fields][opt_in]" id="s2member-pro-authnet-registration-form-custom-reg-field-opt-in" class="s2member-pro-authnet-form-custom-reg-field-opt-in s2member-pro-authnet-registration-form-custom-reg-field-opt-in" value="1"' . (empty($_p["s2member_pro_authnet_registration"]) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] == 1 || @$_p["s2member_pro_authnet_registration"]["custom_fields"]["opt_in"] ? ' checked="checked"' : '') . ' tabindex="300" />' . "\n"; $opt_in .= $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in_label"] . "\n"; $opt_in .= '</label>' . "\n"; $opt_in .= '</div>' . "\n"; } /* Build the hidden input variables. */ $hidden_inputs = '<input type="hidden" name="s2member_pro_authnet_registration[nonce]" id="s2member-pro-authnet-registration-nonce" value="' . esc_attr(wp_create_nonce("s2member-pro-authnet-registration")) . '" />'; $hidden_inputs .= !$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_names"] ? '<input type="hidden" id="s2member-pro-authnet-registration-names-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= !$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] ? '<input type="hidden" id="s2member-pro-authnet-registration-password-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= '<input type="hidden" name="s2member_pro_authnet_registration[attr]" id="s2member-pro-authnet-registration-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; /* Get the form template. */ $custom_template = is_file(TEMPLATEPATH . "/authnet-registration-form.php") ? TEMPLATEPATH . "/authnet-registration-form.php" : ''; $custom_template = is_file(get_stylesheet_directory() . "/authnet-registration-form.php") ? get_stylesheet_directory() . "/authnet-registration-form.php" : $custom_template; $custom_template = $attr["template"] && is_file(TEMPLATEPATH . "/" . $attr["template"]) ? TEMPLATEPATH . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && is_file(get_stylesheet_directory() . "/" . $attr["template"]) ? get_stylesheet_directory() . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && is_file(WP_CONTENT_DIR . "/" . $attr["template"]) ? WP_CONTENT_DIR . "/" . $attr["template"] : $custom_template; $code = trim(file_get_contents($custom_template ? $custom_template : dirname(dirname(dirname(dirname(__FILE__)))) . "/templates/forms/authnet-registration-form.php")); $code = trim(!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); /* Fill in the action. */ $code = preg_replace("/%%action%%/", c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr($_SERVER["REQUEST_URI"])), $code); /* Fill in the response. */ $code = preg_replace("/%%response%%/", c_ws_plugin__s2member_utils_strings::esc_refs($response["response"]), $code); /* Fill in the option selections. */ $code = preg_replace("/%%options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($option_selections), $code); /* Fill in the description. */ $code = preg_replace("/%%description%%/", c_ws_plugin__s2member_utils_strings::esc_refs($attr["desc"]), $code); /* Fill in the registration section. */ $code = preg_replace("/%%first_name_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr(@$_p["s2member_pro_authnet_registration"]["first_name"])), $code); $code = preg_replace("/%%last_name_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr(@$_p["s2member_pro_authnet_registration"]["last_name"])), $code); $code = preg_replace("/%%email_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_registration"]["email"])), $code); $code = preg_replace("/%%username_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_registration"]["username"])), $code); $code = preg_replace("/%%password1_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_registration"]["password1"])), $code); $code = preg_replace("/%%password2_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_registration"]["password2"])), $code); /* Fill in the custom fields section. */ $code = preg_replace("/%%custom_fields%%/", c_ws_plugin__s2member_utils_strings::esc_refs(@$custom_fields), $code); /* Fill the captcha section. */ $code = preg_replace("/%%captcha%%/", c_ws_plugin__s2member_utils_strings::esc_refs(@$captcha), $code); /* Fill the opt-in box. */ $code = preg_replace("/%%opt_in%%/", c_ws_plugin__s2member_utils_strings::esc_refs(@$opt_in), $code); /* Fill hidden inputs. */ $code = preg_replace("/%%hidden_inputs%%/", c_ws_plugin__s2member_utils_strings::esc_refs($hidden_inputs), $code); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_pro_during_sc_authnet_registration_form", get_defined_vars()); unset($__refs, $__v); } else { if ($attr["update"]) { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); /* Obtain a possible response and/or validation error. */ $response = c_ws_plugin__s2member_pro_authnet_responses::authnet_update_response($attr); /* Empty post vars on successful response. */ $_p = $response["response"] && !$response["error"] ? array() : $_p; /* Build the list of card type options. */ $card_type_options = ''; // Initialize. foreach (array("Visa" => _x("Visa", "s2member-front", "s2member"), "MasterCard" => _x("MasterCard", "s2member-front", "s2member"), "Discover" => _x("Discover", "s2member-front", "s2member"), "Amex" => _x("American Express", "s2member-front", "s2member")) as $card_type_v => $card_type_l) { $card_type_options .= '<label for="s2member-pro-authnet-update-card-type-' . esc_attr(strtolower($card_type_v)) . '" id="s2member-pro-authnet-update-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label" class="s2member-pro-authnet-form-card-type-label s2member-pro-authnet-update-form-card-type-label s2member-pro-authnet-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label s2member-pro-authnet-update-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label' . (!in_array(strtolower($card_type_v), $attr["accept"]) ? ' disabled' : '') . '">' . "\n" . '<input type="radio" aria-required="true" name="s2member_pro_authnet_update[card_type]" id="s2member-pro-authnet-update-card-type-' . esc_attr(strtolower($card_type_v)) . '" class="s2member-pro-authnet-card-type-' . esc_attr(strtolower($card_type_v)) . ' s2member-pro-authnet-update-card-type-' . esc_attr(strtolower($card_type_v)) . '" value="' . esc_attr($card_type_v) . '"' . (!empty($_p["s2member_pro_authnet_update"]["card_type"]) && in_array(strtolower($_p["s2member_pro_authnet_update"]["card_type"]), $attr["accept"]) && $_p["s2member_pro_authnet_update"]["card_type"] === $card_type_v ? ' checked="checked"' : '') . (!in_array(strtolower($card_type_v), $attr["accept"]) ? ' disabled="disabled"' : '') . ' tabindex="10" />' . "\n" . '</label>'; } /* Build the list of expiration date options. */ $card_expiration_month_options = '<option value=""></option>'; // Start with an empty option value. $card_expiration_year_options = '<option value=""></option>'; // Start with an empty option value. foreach (array("01" => _x("01 January", "s2member-front", "s2member"), "02" => _x("02 February", "s2member-front", "s2member"), "03" => _x("03 March", "s2member-front", "s2member"), "04" => _x("04 April", "s2member-front", "s2member"), "05" => _x("05 May", "s2member-front", "s2member"), "06" => _x("06 June", "s2member-front", "s2member"), "07" => _x("07 July", "s2member-front", "s2member"), "08" => _x("08 August", "s2member-front", "s2member"), "09" => _x("09 September", "s2member-front", "s2member"), "10" => _x("10 October", "s2member-front", "s2member"), "11" => _x("11 November", "s2member-front", "s2member"), "12" => _x("12 December", "s2member-front", "s2member")) as $month => $month_label) { $card_expiration_month_options .= '<option value="' . esc_attr($month) . '"' . (@$_p["s2member_pro_authnet_update"]["card_expiration_month"] === (string) $month ? ' selected="selected"' : '') . '>' . esc_html($month_label) . '</option>'; } unset($month, $month_label); // Housekeeping. for ($i = 0, $year = date("Y"); $i < 50; $i++) { // Current year; and then go 50 years into the future. $card_expiration_year_options .= '<option value="' . esc_attr($year + $i) . '"' . (@$_p["s2member_pro_authnet_update"]["card_expiration_year"] === (string) ($year + $i) ? ' selected="selected"' : '') . '>' . esc_html($year + $i) . '</option>'; } unset($i, $year); // Housekeeping. /* Build the list of country code options. */ $country_default_by_currency = !@$_p["s2member_pro_authnet_update"]["country"] && $attr["cc"] === "USD" ? "US" : ""; $country_default_by_currency = !@$_p["s2member_pro_authnet_update"]["country"] && $attr["cc"] === "CAD" ? "CA" : $country_default_by_currency; $country_default_by_currency = !@$_p["s2member_pro_authnet_update"]["country"] && $attr["cc"] === "GBP" ? "GB" : $country_default_by_currency; $country_default_by_currency = apply_filters("ws_plugin__s2member_pro_authnet_default_country", $country_default_by_currency, get_defined_vars()); $default_country_v = $attr["default_country_code"] ? $attr["default_country_code"] : $country_default_by_currency; $country_options = '<option value=""></option>'; // Start with an empty option value. foreach (preg_split("/[\r\n]+/", file_get_contents(dirname(dirname(dirname(dirname(__FILE__)))) . "/iso-3166-1.txt")) as $country) { list($country_l, $country_v) = preg_split("/;/", $country, 2); if ($country_l && $country_v) { // Here we also check on the default pre-selected country; as determined above; based on currency. $country_options .= '<option value="' . esc_attr(strtoupper($country_v)) . '"' . (@$_p["s2member_pro_authnet_update"]["country"] === $country_v || $default_country_v === $country_v ? ' selected="selected"' : '') . '>' . esc_html(ucwords(strtolower($country_l))) . '</option>'; } } /* Build the reCaptcha box via JavaScript. */ if ($attr["captcha"]) { $captcha = '<div id="s2member-pro-authnet-update-form-captcha-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-update-form-section s2member-pro-authnet-form-captcha-section s2member-pro-authnet-update-form-captcha-section">' . "\n"; $captcha .= '<div id="s2member-pro-authnet-update-form-captcha-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-update-form-section-title s2member-pro-authnet-form-captcha-section-title s2member-pro-authnet-update-form-captcha-section-title">' . "\n"; $captcha .= _x("Security Verification", "s2member-front", "s2member") . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '<div id="s2member-pro-authnet-update-form-captcha-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-update-form-div s2member-pro-authnet-form-captcha-div s2member-pro-authnet-update-form-captcha-div">' . "\n"; $captcha .= '<label id="s2member-pro-authnet-update-form-captcha-label" class="s2member-pro-authnet-form-captcha-label s2member-pro-authnet-update-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr["captcha"], 200) . "\n"; $captcha .= '</label>' . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '</div>' . "\n"; } /* Build the hidden input variables. */ $hidden_inputs = '<input type="hidden" name="s2member_pro_authnet_update[nonce]" id="s2member-pro-authnet-update-nonce" value="' . esc_attr(wp_create_nonce("s2member-pro-authnet-update")) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2member_pro_authnet_update[attr]" id="s2member-pro-authnet-update-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2p-option" value="' . esc_attr((string) @$_REQUEST['s2p-option']) . '" />'; /* Get the form template. */ $custom_template = is_file(TEMPLATEPATH . "/authnet-update-form.php") ? TEMPLATEPATH . "/authnet-update-form.php" : ''; $custom_template = is_file(get_stylesheet_directory() . "/authnet-update-form.php") ? get_stylesheet_directory() . "/authnet-update-form.php" : $custom_template; $custom_template = $attr["template"] && is_file(TEMPLATEPATH . "/" . $attr["template"]) ? TEMPLATEPATH . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && is_file(get_stylesheet_directory() . "/" . $attr["template"]) ? get_stylesheet_directory() . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && is_file(WP_CONTENT_DIR . "/" . $attr["template"]) ? WP_CONTENT_DIR . "/" . $attr["template"] : $custom_template; $code = trim(file_get_contents($custom_template ? $custom_template : dirname(dirname(dirname(dirname(__FILE__)))) . "/templates/forms/authnet-update-form.php")); $code = trim(!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); /* Fill in the action. */ $code = preg_replace("/%%action%%/", c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr($_SERVER["REQUEST_URI"])), $code); /* Fill in the response. */ $code = preg_replace("/%%response%%/", c_ws_plugin__s2member_utils_strings::esc_refs($response["response"]), $code); /* Fill in the description. */ $code = preg_replace("/%%description%%/", c_ws_plugin__s2member_utils_strings::esc_refs($attr["desc"]), $code); /* Fill in the billing method section. */ $code = preg_replace("/%%card_type_options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($card_type_options), $code); $code = preg_replace("/%%card_number_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_update"]["card_number"])), $code); $code = preg_replace("/%%card_expiration_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_update"]["card_expiration"])), $code); $code = preg_replace("/%%card_expiration_month_options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($card_expiration_month_options), $code); $code = preg_replace("/%%card_expiration_year_options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($card_expiration_year_options), $code); $code = preg_replace("/%%card_verification_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_update"]["card_verification"])), $code); $code = preg_replace("/%%card_start_date_issue_number_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_update"]["card_start_date_issue_number"])), $code); /* Fill in the billing address section. */ $code = preg_replace("/%%street_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_update"]["street"])), $code); $code = preg_replace("/%%city_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_update"]["city"])), $code); $code = preg_replace("/%%state_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_update"]["state"])), $code); $code = preg_replace("/%%country_options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($country_options), $code); $code = preg_replace("/%%zip_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_update"]["zip"])), $code); /* Fill the captcha section. */ $code = preg_replace("/%%captcha%%/", c_ws_plugin__s2member_utils_strings::esc_refs(@$captcha), $code); /* Fill hidden inputs. */ $code = preg_replace("/%%hidden_inputs%%/", c_ws_plugin__s2member_utils_strings::esc_refs($hidden_inputs), $code); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_pro_during_sc_authnet_update_form", get_defined_vars()); unset($__refs, $__v); } else { if ($attr["sp"]) { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); /* Configure internal attributes. */ $attr["sp_ids_exp"] = "sp:" . $attr["ids"] . ":" . $attr["exp"]; // Combined `sp:ids:expiration hours`. $attr["coupon"] = @$_p["s2member_pro_authnet_sp_checkout"]["coupon"] ? $_p["s2member_pro_authnet_sp_checkout"]["coupon"] : $attr["coupon"]; /* Obtain a possible response and/or validation error. */ $response = c_ws_plugin__s2member_pro_authnet_responses::authnet_sp_checkout_response($attr); /* Empty post vars on successful response. */ $_p = $response["response"] && !$response["error"] ? array() : $_p; /* Build the list of card type options. */ $card_type_options = '<input type="radio" name="s2member_pro_authnet_sp_checkout[card_type]" id="s2member-pro-authnet-sp-checkout-card-type-free" class="s2member-pro-authnet-card-type-free s2member-pro-authnet-sp-checkout-card-type-free" value="Free" tabindex="-1" style="display:none;" />' . "\n"; foreach (array("Visa" => _x("Visa", "s2member-front", "s2member"), "MasterCard" => _x("MasterCard", "s2member-front", "s2member"), "Discover" => _x("Discover", "s2member-front", "s2member"), "Amex" => _x("American Express", "s2member-front", "s2member")) as $card_type_v => $card_type_l) { $card_type_options .= '<label for="s2member-pro-authnet-sp-checkout-card-type-' . esc_attr(strtolower($card_type_v)) . '" id="s2member-pro-authnet-sp-checkout-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label" class="s2member-pro-authnet-form-card-type-label s2member-pro-authnet-sp-checkout-form-card-type-label s2member-pro-authnet-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label s2member-pro-authnet-sp-checkout-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label' . (!in_array(strtolower($card_type_v), $attr["accept"]) ? ' disabled' : '') . '">' . "\n" . '<input type="radio" aria-required="true" name="s2member_pro_authnet_sp_checkout[card_type]" id="s2member-pro-authnet-sp-checkout-card-type-' . esc_attr(strtolower($card_type_v)) . '" class="s2member-pro-authnet-card-type-' . esc_attr(strtolower($card_type_v)) . ' s2member-pro-authnet-sp-checkout-card-type-' . esc_attr(strtolower($card_type_v)) . '" value="' . esc_attr($card_type_v) . '"' . (!empty($_p["s2member_pro_authnet_sp_checkout"]["card_type"]) && in_array(strtolower($_p["s2member_pro_authnet_sp_checkout"]["card_type"]), $attr["accept"]) && $_p["s2member_pro_authnet_sp_checkout"]["card_type"] === $card_type_v ? ' checked="checked"' : '') . (!in_array(strtolower($card_type_v), $attr["accept"]) ? ' disabled="disabled"' : '') . ' tabindex="100" />' . "\n" . '</label>'; } /* Build the list of expiration date options. */ $card_expiration_month_options = '<option value=""></option>'; // Start with an empty option value. $card_expiration_year_options = '<option value=""></option>'; // Start with an empty option value. foreach (array("01" => _x("01 January", "s2member-front", "s2member"), "02" => _x("02 February", "s2member-front", "s2member"), "03" => _x("03 March", "s2member-front", "s2member"), "04" => _x("04 April", "s2member-front", "s2member"), "05" => _x("05 May", "s2member-front", "s2member"), "06" => _x("06 June", "s2member-front", "s2member"), "07" => _x("07 July", "s2member-front", "s2member"), "08" => _x("08 August", "s2member-front", "s2member"), "09" => _x("09 September", "s2member-front", "s2member"), "10" => _x("10 October", "s2member-front", "s2member"), "11" => _x("11 November", "s2member-front", "s2member"), "12" => _x("12 December", "s2member-front", "s2member")) as $month => $month_label) { $card_expiration_month_options .= '<option value="' . esc_attr($month) . '"' . (@$_p["s2member_pro_authnet_sp_checkout"]["card_expiration_month"] === (string) $month ? ' selected="selected"' : '') . '>' . esc_html($month_label) . '</option>'; } unset($month, $month_label); // Housekeeping. for ($i = 0, $year = date("Y"); $i < 50; $i++) { // Current year; and then go 50 years into the future. $card_expiration_year_options .= '<option value="' . esc_attr($year + $i) . '"' . (@$_p["s2member_pro_authnet_sp_checkout"]["card_expiration_year"] === (string) ($year + $i) ? ' selected="selected"' : '') . '>' . esc_html($year + $i) . '</option>'; } unset($i, $year); // Housekeeping. /* Build the list of country code options. */ $country_default_by_currency = !@$_p["s2member_pro_authnet_sp_checkout"]["country"] && $attr["cc"] === "USD" ? "US" : ""; $country_default_by_currency = !@$_p["s2member_pro_authnet_sp_checkout"]["country"] && $attr["cc"] === "CAD" ? "CA" : $country_default_by_currency; $country_default_by_currency = !@$_p["s2member_pro_authnet_sp_checkout"]["country"] && $attr["cc"] === "GBP" ? "GB" : $country_default_by_currency; $country_default_by_currency = apply_filters("ws_plugin__s2member_pro_authnet_default_country", $country_default_by_currency, get_defined_vars()); $default_country_v = $attr["default_country_code"] ? $attr["default_country_code"] : $country_default_by_currency; $country_options = '<option value=""></option>'; // Start with an empty option value. foreach (preg_split("/[\r\n]+/", file_get_contents(dirname(dirname(dirname(dirname(__FILE__)))) . "/iso-3166-1.txt")) as $country) { list($country_l, $country_v) = preg_split("/;/", $country, 2); if ($country_l && $country_v) { // Here we also check on the default pre-selected country; as determined above; based on currency. $country_options .= '<option value="' . esc_attr(strtoupper($country_v)) . '"' . (@$_p["s2member_pro_authnet_sp_checkout"]["country"] === $country_v || $default_country_v === $country_v ? ' selected="selected"' : '') . '>' . esc_html(ucwords(strtolower($country_l))) . '</option>'; } } /* Build the reCaptcha box via JavaScript. */ if ($attr["captcha"]) { $captcha = '<div id="s2member-pro-authnet-sp-checkout-form-captcha-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-sp-checkout-form-section s2member-pro-authnet-form-captcha-section s2member-pro-authnet-sp-checkout-form-captcha-section">' . "\n"; $captcha .= '<div id="s2member-pro-authnet-sp-checkout-form-captcha-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-sp-checkout-form-section-title s2member-pro-authnet-form-captcha-section-title s2member-pro-authnet-sp-checkout-form-captcha-section-title">' . "\n"; $captcha .= _x("Security Verification", "s2member-front", "s2member") . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '<div id="s2member-pro-authnet-sp-checkout-form-captcha-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-sp-checkout-form-div s2member-pro-authnet-form-captcha-div s2member-pro-authnet-sp-checkout-form-captcha-div">' . "\n"; $captcha .= '<label id="s2member-pro-authnet-sp-checkout-form-captcha-label" class="s2member-pro-authnet-form-captcha-label s2member-pro-authnet-sp-checkout-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr["captcha"], 300) . "\n"; $captcha .= '</label>' . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '</div>' . "\n"; } /* Build the opt-in checkbox. */ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] && c_ws_plugin__s2member_list_servers::list_servers_integrated()) { $opt_in = '<div id="s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-sp-checkout-form-div s2member-pro-authnet-form-custom-reg-field-opt-in-div s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in-div">' . "\n"; $opt_in .= '<label for="s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in" id="s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in-label" class="s2member-pro-authnet-form-custom-reg-field-opt-in-label s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in-label">' . "\n"; $opt_in .= '<input type="checkbox" name="s2member_pro_authnet_sp_checkout[custom_fields][opt_in]" id="s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in" class="s2member-pro-authnet-form-custom-reg-field-opt-in s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in" value="1"' . (empty($_p["s2member_pro_authnet_sp_checkout"]) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] == 1 || @$_p["s2member_pro_authnet_sp_checkout"]["custom_fields"]["opt_in"] ? ' checked="checked"' : '') . ' tabindex="400" />' . "\n"; $opt_in .= $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in_label"] . "\n"; $opt_in .= '</label>' . "\n"; $opt_in .= '</div>' . "\n"; } /* Build the hidden input variables. */ $hidden_inputs = '<input type="hidden" name="s2member_pro_authnet_sp_checkout[nonce]" id="s2member-pro-authnet-sp-checkout-nonce" value="' . esc_attr(wp_create_nonce("s2member-pro-authnet-sp-checkout")) . '" />'; $hidden_inputs .= !$attr["accept_coupons"] ? '<input type="hidden" id="s2member-pro-authnet-sp-checkout-coupons-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= !c_ws_plugin__s2member_pro_authnet_utilities::authnet_tax_may_apply() ? '<input type="hidden" id="s2member-pro-authnet-sp-checkout-tax-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= ($cp_attr = c_ws_plugin__s2member_pro_authnet_utilities::authnet_apply_coupon($attr, $attr["coupon"])) && $cp_attr["ta"] <= 0.0 && $cp_attr["ra"] <= 0.0 ? '<input type="hidden" id="s2member-pro-authnet-sp-checkout-payment-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= '<input type="hidden" name="s2member_pro_authnet_sp_checkout[attr]" id="s2member-pro-authnet-sp-checkout-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; /* Get the form template. */ $custom_template = is_file(TEMPLATEPATH . "/authnet-sp-checkout-form.php") ? TEMPLATEPATH . "/authnet-sp-checkout-form.php" : ''; $custom_template = is_file(get_stylesheet_directory() . "/authnet-sp-checkout-form.php") ? get_stylesheet_directory() . "/authnet-sp-checkout-form.php" : $custom_template; $custom_template = $attr["template"] && is_file(TEMPLATEPATH . "/" . $attr["template"]) ? TEMPLATEPATH . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && is_file(get_stylesheet_directory() . "/" . $attr["template"]) ? get_stylesheet_directory() . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && is_file(WP_CONTENT_DIR . "/" . $attr["template"]) ? WP_CONTENT_DIR . "/" . $attr["template"] : $custom_template; $code = trim(file_get_contents($custom_template ? $custom_template : dirname(dirname(dirname(dirname(__FILE__)))) . "/templates/forms/authnet-sp-checkout-form.php")); $code = trim(!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); /* Fill in the action. */ $code = preg_replace("/%%action%%/", c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr($_SERVER["REQUEST_URI"])), $code); /* Fill in the response. */ $code = preg_replace("/%%response%%/", c_ws_plugin__s2member_utils_strings::esc_refs($response["response"]), $code); /* Fill in the option selections. */ $code = preg_replace("/%%options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($option_selections), $code); /* Fill in the description. */ $code = preg_replace("/%%description%%/", c_ws_plugin__s2member_utils_strings::esc_refs($attr["desc"]), $code); /* Fill in the coupon value. */ $code = preg_replace("/%%coupon_response%%/", c_ws_plugin__s2member_utils_strings::esc_refs(c_ws_plugin__s2member_pro_authnet_utilities::authnet_apply_coupon($attr, $attr["coupon"], "response", array("affiliates-1px-response"))), $code); $code = preg_replace("/%%coupon_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit($attr["coupon"])), $code); /* Fill in the registration section. */ $code = preg_replace("/%%first_name_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr(@$_p["s2member_pro_authnet_sp_checkout"]["first_name"])), $code); $code = preg_replace("/%%last_name_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr(@$_p["s2member_pro_authnet_sp_checkout"]["last_name"])), $code); $code = preg_replace("/%%email_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_sp_checkout"]["email"])), $code); /* Fill in the billing method section. */ $code = preg_replace("/%%card_type_options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($card_type_options), $code); $code = preg_replace("/%%card_number_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_sp_checkout"]["card_number"])), $code); $code = preg_replace("/%%card_expiration_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_sp_checkout"]["card_expiration"])), $code); $code = preg_replace("/%%card_expiration_month_options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($card_expiration_month_options), $code); $code = preg_replace("/%%card_expiration_year_options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($card_expiration_year_options), $code); $code = preg_replace("/%%card_verification_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_sp_checkout"]["card_verification"])), $code); $code = preg_replace("/%%card_start_date_issue_number_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_sp_checkout"]["card_start_date_issue_number"])), $code); /* Fill in the billing address section. */ $code = preg_replace("/%%street_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_sp_checkout"]["street"])), $code); $code = preg_replace("/%%city_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_sp_checkout"]["city"])), $code); $code = preg_replace("/%%state_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_sp_checkout"]["state"])), $code); $code = preg_replace("/%%country_options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($country_options), $code); $code = preg_replace("/%%zip_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_sp_checkout"]["zip"])), $code); /* Fill the captcha section. */ $code = preg_replace("/%%captcha%%/", c_ws_plugin__s2member_utils_strings::esc_refs(@$captcha), $code); /* Fill the opt-in box. */ $code = preg_replace("/%%opt_in%%/", c_ws_plugin__s2member_utils_strings::esc_refs(@$opt_in), $code); /* Fill hidden inputs. */ $code = preg_replace("/%%hidden_inputs%%/", c_ws_plugin__s2member_utils_strings::esc_refs($hidden_inputs), $code); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_pro_during_sc_authnet_sp_form", get_defined_vars()); unset($__refs, $__v); } else { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); /* Configure internal attributes. */ $attr["level_ccaps_eotper"] = $attr["rr"] === "BN" && $attr["rt"] !== "L" ? $attr["level"] . ":" . $attr["ccaps"] . ":" . $attr["rp"] . " " . $attr["rt"] : $attr["level"] . ":" . $attr["ccaps"]; $attr["level_ccaps_eotper"] = rtrim($attr["level_ccaps_eotper"], ":"); // Clean any trailing separators from this string. $attr["coupon"] = @$_p["s2member_pro_authnet_checkout"]["coupon"] ? $_p["s2member_pro_authnet_checkout"]["coupon"] : $attr["coupon"]; /* Obtain a possible response and/or validation error. */ $response = c_ws_plugin__s2member_pro_authnet_responses::authnet_checkout_response($attr); /* Empty post vars on successful response. */ $_p = $response["response"] && !$response["error"] ? array() : $_p; /* Build the list of card type options. */ $card_type_options = '<input type="radio" name="s2member_pro_authnet_checkout[card_type]" id="s2member-pro-authnet-checkout-card-type-free" class="s2member-pro-authnet-card-type-free s2member-pro-authnet-checkout-card-type-free" value="Free" tabindex="-1" style="display:none;" />' . "\n"; foreach (array("Visa" => _x("Visa", "s2member-front", "s2member"), "MasterCard" => _x("MasterCard", "s2member-front", "s2member"), "Discover" => _x("Discover", "s2member-front", "s2member"), "Amex" => _x("American Express", "s2member-front", "s2member")) as $card_type_v => $card_type_l) { $card_type_options .= '<label for="s2member-pro-authnet-checkout-card-type-' . esc_attr(strtolower($card_type_v)) . '" id="s2member-pro-authnet-checkout-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label" class="s2member-pro-authnet-form-card-type-label s2member-pro-authnet-checkout-form-card-type-label s2member-pro-authnet-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label s2member-pro-authnet-checkout-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label' . (!in_array(strtolower($card_type_v), $attr["accept"]) ? ' disabled' : '') . '">' . "\n" . '<input type="radio" aria-required="true" name="s2member_pro_authnet_checkout[card_type]" id="s2member-pro-authnet-checkout-card-type-' . esc_attr(strtolower($card_type_v)) . '" class="s2member-pro-authnet-card-type-' . esc_attr(strtolower($card_type_v)) . ' s2member-pro-authnet-checkout-card-type-' . esc_attr(strtolower($card_type_v)) . '" value="' . esc_attr($card_type_v) . '"' . (!empty($_p["s2member_pro_authnet_checkout"]["card_type"]) && in_array(strtolower($_p["s2member_pro_authnet_checkout"]["card_type"]), $attr["accept"]) && $_p["s2member_pro_authnet_checkout"]["card_type"] === $card_type_v ? ' checked="checked"' : '') . (!in_array(strtolower($card_type_v), $attr["accept"]) ? ' disabled="disabled"' : '') . ' tabindex="200" />' . "\n" . '</label>'; } /* Build the list of expiration date options. */ $card_expiration_month_options = '<option value=""></option>'; // Start with an empty option value. $card_expiration_year_options = '<option value=""></option>'; // Start with an empty option value. foreach (array("01" => _x("01 January", "s2member-front", "s2member"), "02" => _x("02 February", "s2member-front", "s2member"), "03" => _x("03 March", "s2member-front", "s2member"), "04" => _x("04 April", "s2member-front", "s2member"), "05" => _x("05 May", "s2member-front", "s2member"), "06" => _x("06 June", "s2member-front", "s2member"), "07" => _x("07 July", "s2member-front", "s2member"), "08" => _x("08 August", "s2member-front", "s2member"), "09" => _x("09 September", "s2member-front", "s2member"), "10" => _x("10 October", "s2member-front", "s2member"), "11" => _x("11 November", "s2member-front", "s2member"), "12" => _x("12 December", "s2member-front", "s2member")) as $month => $month_label) { $card_expiration_month_options .= '<option value="' . esc_attr($month) . '"' . (@$_p["s2member_pro_authnet_checkout"]["card_expiration_month"] === (string) $month ? ' selected="selected"' : '') . '>' . esc_html($month_label) . '</option>'; } unset($month, $month_label); // Housekeeping. for ($i = 0, $year = date("Y"); $i < 50; $i++) { // Current year; and then go 50 years into the future. $card_expiration_year_options .= '<option value="' . esc_attr($year + $i) . '"' . (@$_p["s2member_pro_authnet_checkout"]["card_expiration_year"] === (string) ($year + $i) ? ' selected="selected"' : '') . '>' . esc_html($year + $i) . '</option>'; } unset($i, $year); // Housekeeping. /* Build the list of country code options. */ $country_default_by_currency = !@$_p["s2member_pro_authnet_checkout"]["country"] && $attr["cc"] === "USD" ? "US" : ""; $country_default_by_currency = !@$_p["s2member_pro_authnet_checkout"]["country"] && $attr["cc"] === "CAD" ? "CA" : $country_default_by_currency; $country_default_by_currency = !@$_p["s2member_pro_authnet_checkout"]["country"] && $attr["cc"] === "GBP" ? "GB" : $country_default_by_currency; $country_default_by_currency = apply_filters("ws_plugin__s2member_pro_authnet_default_country", $country_default_by_currency, get_defined_vars()); $default_country_v = $attr["default_country_code"] ? $attr["default_country_code"] : $country_default_by_currency; $country_options = '<option value=""></option>'; // Start with an empty option value. foreach (preg_split("/[\r\n]+/", file_get_contents(dirname(dirname(dirname(dirname(__FILE__)))) . "/iso-3166-1.txt")) as $country) { list($country_l, $country_v) = preg_split("/;/", $country, 2); if ($country_l && $country_v) { // Here we also check on the default pre-selected country; as determined above; based on currency. $country_options .= '<option value="' . esc_attr(strtoupper($country_v)) . '"' . (@$_p["s2member_pro_authnet_checkout"]["country"] === $country_v || $default_country_v === $country_v ? ' selected="selected"' : '') . '>' . esc_html(ucwords(strtolower($country_l))) . '</option>'; } } /* Build all of the custom fields. */ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { // Only display Custom Fields if configured. if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($attr["level"] === "*" ? "auto-detection" : $attr["level"], "registration")) { $tabindex = 99; // Start tabindex at 99 ( +1 below = 100 ). $custom_fields = '<div id="s2member-pro-authnet-checkout-form-custom-fields-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-checkout-form-section s2member-pro-authnet-form-custom-fields-section s2member-pro-authnet-checkout-form-custom-fields-section">' . "\n"; $custom_fields .= '<div id="s2member-pro-authnet-checkout-form-custom-fields-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-checkout-form-section-title s2member-pro-authnet-form-custom-fields-section-title s2member-pro-authnet-checkout-form-custom-fields-section-title">' . "\n"; $custom_fields .= _x("Additional Info", "s2member-front", "s2member") . "\n"; $custom_fields .= '</div>' . "\n"; foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field) { if (in_array($field["id"], $fields_applicable)) { $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"])); $field_id_class = preg_replace("/_/", "-", $field_var); if (!empty($field["section"]) && $field["section"] === "yes") { // Starts a new section? $custom_fields .= '<div id="s2member-pro-authnet-checkout-form-custom-reg-field-' . $field_id_class . '-divider-section" class="s2member-pro-authnet-form-div s2member-pro-authnet-checkout-form-div s2member-pro-authnet-form-custom-reg-field-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . ' s2member-pro-authnet-form-custom-reg-field-' . $field_id_class . '-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . ' s2member-pro-authnet-checkout-form-custom-reg-field-' . $field_id_class . '-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . '">' . (!empty($field["sectitle"]) ? $field["sectitle"] : '') . '</div>'; } $custom_fields .= '<div id="s2member-pro-authnet-checkout-form-custom-reg-field-' . $field_id_class . '-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-checkout-form-div s2member-pro-authnet-form-custom-reg-field-' . $field_id_class . '-div s2member-pro-authnet-checkout-form-custom-reg-field-' . $field_id_class . '-div">' . "\n"; $custom_fields .= '<label for="s2member-pro-authnet-checkout-custom-reg-field-' . esc_attr($field_id_class) . '" id="s2member-pro-authnet-checkout-form-custom-reg-field-' . $field_id_class . '-label" class="s2member-pro-authnet-form-custom-reg-field-' . $field_id_class . '-label s2member-pro-authnet-checkout-form-custom-reg-field-' . $field_id_class . '-label">' . "\n"; $custom_fields .= '<span' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? ' style="display:none;"' : '') . '>' . $field["label"] . ($field["required"] === "yes" ? ' *' : '') . '</span></label>' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? '' : '<br />') . "\n"; $custom_fields .= c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, "s2member_pro_authnet_checkout[custom_fields][", "s2member-pro-authnet-checkout-custom-reg-field-", "s2member-pro-authnet-custom-reg-field-" . $field_id_class . " s2member-pro-authnet-checkout-custom-reg-field-" . $field_id_class, "", $tabindex = $tabindex + 1, "", @$_p["s2member_pro_authnet_checkout"], @$_p["s2member_pro_authnet_checkout"]["custom_fields"][$field_var], "registration"); $custom_fields .= '</div>' . "\n"; } } $custom_fields .= '</div>' . "\n"; } } /* Build the reCaptcha box via JavaScript. */ if ($attr["captcha"]) { $captcha = '<div id="s2member-pro-authnet-checkout-form-captcha-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-checkout-form-section s2member-pro-authnet-form-captcha-section s2member-pro-authnet-checkout-form-captcha-section">' . "\n"; $captcha .= '<div id="s2member-pro-authnet-checkout-form-captcha-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-checkout-form-section-title s2member-pro-authnet-form-captcha-section-title s2member-pro-authnet-checkout-form-captcha-section-title">' . "\n"; $captcha .= _x("Security Verification", "s2member-front", "s2member") . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '<div id="s2member-pro-authnet-checkout-form-captcha-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-checkout-form-div s2member-pro-authnet-form-captcha-div s2member-pro-authnet-checkout-form-captcha-div">' . "\n"; $captcha .= '<label id="s2member-pro-authnet-checkout-form-captcha-label" class="s2member-pro-authnet-form-captcha-label s2member-pro-authnet-checkout-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr["captcha"], 400) . "\n"; $captcha .= '</label>' . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '</div>' . "\n"; } /* Build the opt-in checkbox. */ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] && c_ws_plugin__s2member_list_servers::list_servers_integrated()) { $opt_in = '<div id="s2member-pro-authnet-checkout-form-custom-reg-field-opt-in-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-checkout-form-div s2member-pro-authnet-form-custom-reg-field-opt-in-div s2member-pro-authnet-checkout-form-custom-reg-field-opt-in-div">' . "\n"; $opt_in .= '<label for="s2member-pro-authnet-checkout-form-custom-reg-field-opt-in" id="s2member-pro-authnet-checkout-form-custom-reg-field-opt-in-label" class="s2member-pro-authnet-form-custom-reg-field-opt-in-label s2member-pro-authnet-checkout-form-custom-reg-field-opt-in-label">' . "\n"; $opt_in .= '<input type="checkbox" name="s2member_pro_authnet_checkout[custom_fields][opt_in]" id="s2member-pro-authnet-checkout-form-custom-reg-field-opt-in" class="s2member-pro-authnet-form-custom-reg-field-opt-in s2member-pro-authnet-checkout-form-custom-reg-field-opt-in" value="1"' . (empty($_p["s2member_pro_authnet_checkout"]) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] == 1 || @$_p["s2member_pro_authnet_checkout"]["custom_fields"]["opt_in"] ? ' checked="checked"' : '') . ' tabindex="500" />' . "\n"; $opt_in .= $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in_label"] . "\n"; $opt_in .= '</label>' . "\n"; $opt_in .= '</div>' . "\n"; } /* Build the hidden input variables. */ $hidden_inputs = '<input type="hidden" name="s2member_pro_authnet_checkout[nonce]" id="s2member-pro-authnet-checkout-nonce" value="' . esc_attr(wp_create_nonce("s2member-pro-authnet-checkout")) . '" />'; $hidden_inputs .= !$attr["accept_coupons"] ? '<input type="hidden" id="s2member-pro-authnet-checkout-coupons-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= !$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] ? '<input type="hidden" id="s2member-pro-authnet-checkout-password-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= !c_ws_plugin__s2member_pro_authnet_utilities::authnet_tax_may_apply() ? '<input type="hidden" id="s2member-pro-authnet-checkout-tax-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= ($cp_attr = c_ws_plugin__s2member_pro_authnet_utilities::authnet_apply_coupon($attr, $attr["coupon"])) && $cp_attr["ta"] <= 0.0 && $cp_attr["ra"] <= 0.0 ? '<input type="hidden" id="s2member-pro-authnet-checkout-payment-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= '<input type="hidden" name="s2member_pro_authnet_checkout[attr]" id="s2member-pro-authnet-checkout-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; /* Get the form template. */ $custom_template = is_file(TEMPLATEPATH . "/authnet-checkout-form.php") ? TEMPLATEPATH . "/authnet-checkout-form.php" : ''; $custom_template = is_file(get_stylesheet_directory() . "/authnet-checkout-form.php") ? get_stylesheet_directory() . "/authnet-checkout-form.php" : $custom_template; $custom_template = $attr["template"] && is_file(TEMPLATEPATH . "/" . $attr["template"]) ? TEMPLATEPATH . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && is_file(get_stylesheet_directory() . "/" . $attr["template"]) ? get_stylesheet_directory() . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && is_file(WP_CONTENT_DIR . "/" . $attr["template"]) ? WP_CONTENT_DIR . "/" . $attr["template"] : $custom_template; $code = trim(file_get_contents($custom_template ? $custom_template : dirname(dirname(dirname(dirname(__FILE__)))) . "/templates/forms/authnet-checkout-form.php")); $code = trim(!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); /* Fill in the action. */ $code = preg_replace("/%%action%%/", c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr($_SERVER["REQUEST_URI"])), $code); /* Fill in the response. */ $code = preg_replace("/%%response%%/", c_ws_plugin__s2member_utils_strings::esc_refs($response["response"]), $code); /* Fill in the option selections. */ $code = preg_replace("/%%options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($option_selections), $code); /* Fill in the description. */ $code = preg_replace("/%%description%%/", c_ws_plugin__s2member_utils_strings::esc_refs($attr["desc"]), $code); /* Fill in the coupon value. */ $code = preg_replace("/%%coupon_response%%/", c_ws_plugin__s2member_utils_strings::esc_refs(c_ws_plugin__s2member_pro_authnet_utilities::authnet_apply_coupon($attr, $attr["coupon"], "response", array("affiliates-1px-response"))), $code); $code = preg_replace("/%%coupon_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit($attr["coupon"])), $code); /* Fill in the registration section. */ $code = preg_replace("/%%first_name_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr(@$_p["s2member_pro_authnet_checkout"]["first_name"])), $code); $code = preg_replace("/%%last_name_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr(@$_p["s2member_pro_authnet_checkout"]["last_name"])), $code); $code = preg_replace("/%%email_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_checkout"]["email"])), $code); $code = preg_replace("/%%username_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_checkout"]["username"])), $code); $code = preg_replace("/%%password1_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_checkout"]["password1"])), $code); $code = preg_replace("/%%password2_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_checkout"]["password2"])), $code); /* Fill in the custom fields section. */ $code = preg_replace("/%%custom_fields%%/", c_ws_plugin__s2member_utils_strings::esc_refs(@$custom_fields), $code); /* Fill in the billing method section. */ $code = preg_replace("/%%card_type_options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($card_type_options), $code); $code = preg_replace("/%%card_number_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_checkout"]["card_number"])), $code); $code = preg_replace("/%%card_expiration_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_checkout"]["card_expiration"])), $code); $code = preg_replace("/%%card_expiration_month_options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($card_expiration_month_options), $code); $code = preg_replace("/%%card_expiration_year_options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($card_expiration_year_options), $code); $code = preg_replace("/%%card_verification_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_checkout"]["card_verification"])), $code); $code = preg_replace("/%%card_start_date_issue_number_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_checkout"]["card_start_date_issue_number"])), $code); /* Fill in the billing address section. */ $code = preg_replace("/%%street_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_checkout"]["street"])), $code); $code = preg_replace("/%%city_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_checkout"]["city"])), $code); $code = preg_replace("/%%state_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_checkout"]["state"])), $code); $code = preg_replace("/%%country_options%%/", c_ws_plugin__s2member_utils_strings::esc_refs($country_options), $code); $code = preg_replace("/%%zip_value%%/", c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p["s2member_pro_authnet_checkout"]["zip"])), $code); /* Fill the captcha section. */ $code = preg_replace("/%%captcha%%/", c_ws_plugin__s2member_utils_strings::esc_refs(@$captcha), $code); /* Fill the opt-in box. */ $code = preg_replace("/%%opt_in%%/", c_ws_plugin__s2member_utils_strings::esc_refs(@$opt_in), $code); /* Fill hidden inputs. */ $code = preg_replace("/%%hidden_inputs%%/", c_ws_plugin__s2member_utils_strings::esc_refs($hidden_inputs), $code); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } $attr["modify"] ? do_action("ws_plugin__s2member_pro_during_sc_authnet_modification_form", get_defined_vars()) : do_action("ws_plugin__s2member_pro_during_sc_authnet_form", get_defined_vars()); unset($__refs, $__v); } } } } return apply_filters("ws_plugin__s2member_pro_sc_authnet_form", $code, get_defined_vars()); }
/** * Intersects with ``bp_core_screen_signup()`` in the BuddyPress core. * * This can ONLY be fired through `/register` via BuddyPress. * * @package s2Member\Registrations * @since 140518 * * @attaches-to ``add_action('bp_signup_validate');`` */ public static function custom_registration_field_errors_4bp() { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_before_custom_registration_field_errors_4bp', get_defined_vars()); unset($__refs, $__v); // Housekeeping. if (!is_admin() && c_ws_plugin__s2member_utils_conds::bp_is_installed() && bp_is_register_page()) { if (in_array('registration', $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields_4bp'])) { if (apply_filters('ws_plugin__s2member_custom_registration_fields_4bp_display', TRUE, get_defined_vars())) { if (!empty($GLOBALS['bp']->signup) && is_object($GLOBALS['bp']->signup) && !empty($_POST) && is_array($_POST)) { foreach (c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)) as $_key => $_value) { if (strpos($_key, 'ws_plugin__s2member_custom_reg_field_') === 0) { $input[str_replace('ws_plugin__s2member_custom_reg_field_', '', $_key)] = $_value; } } $fields_to_validate = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level('auto-detection', 'registration', TRUE); $validation_errors = c_ws_plugin__s2member_custom_reg_fields::validation_errors(!empty($input) ? $input : array(), $fields_to_validate); if ($validation_errors) { foreach ($validation_errors as $_field_var => $_error) { $GLOBALS['bp']->signup->errors['custom_reg_field_' . $_field_var] = $_error; } } unset($_field_var, $_error); } } } } }
/** * Handles the Shortcode for: `[s2Member-Profile /]`. * * @package s2Member\Profiles * @since 3.5 * * @attaches-to ``add_shortcode("s2Member-Profile");`` * * @param array $attr An array of Attributes. * @param str $content Content inside the Shortcode. * @param str $shortcode The actual Shortcode name itself. * @return str|null The resulting Profile Modifiation Form *( inline )*, or null if not logged-in. */ public static function sc_profile($attr = FALSE, $content = FALSE, $shortcode = FALSE) { eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_before_sc_profile", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ c_ws_plugin__s2member_no_cache::no_cache_constants(true); /* No caching. */ /**/ $tabindex = apply_filters("ws_plugin__s2member_sc_profile_tabindex", 0, get_defined_vars()); /**/ if (($user = is_user_logged_in() ? wp_get_current_user() : false) && ($user_id = $user->ID)) { $attr = c_ws_plugin__s2member_utils_strings::trim_qts_deep((array) $attr); /**/ $attr = shortcode_atts(array(), $attr); /* Possible Attributes. None. */ /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_before_sc_profile_after_shortcode_atts", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ ob_start(); /* Start buffering. Allows Hooks to echo output like: `/?s2member_profile=1`. */ /**/ echo '<form method="post" name="ws_plugin__s2member_profile" id="ws-plugin--s2member-profile">' . "\n"; /**/ if ($GLOBALS["ws_plugin__s2member_profile_saved"]) { echo '<div id="ws-plugin--s2member-profile-saved">' . "\n"; echo _x("Profile updated successfully.", "s2member-front", "s2member") . "\n"; echo '</div>' . "\n"; } /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_before_table", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ echo '<table cellpadding="0" cellspacing="0">' . "\n"; echo '<tbody>' . "\n"; /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_before_fields", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_username", true, get_defined_vars())) { eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_before_username", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-login">' . "\n"; echo '<strong>' . _x("Username", "s2member-front", "s2member") . ' *</strong> <small>' . _x("( cannot be changed )", "s2member-front", "s2member") . '</small><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="60" autocomplete="off" name="ws_plugin__s2member_profile_login" id="ws-plugin--s2member-profile-login" class="ws-plugin--s2member-profile-field" value="' . format_to_edit($user->user_login) . '" disabled="disabled" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_after_username", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ } /**/ if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_email", true, get_defined_vars())) { eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_before_email", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-email">' . "\n"; echo '<strong>' . _x("Email Address", "s2member-front", "s2member") . ' *</strong><br />' . "\n"; echo '<input type="text" aria-required="true" data-expected="email" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_email" id="ws-plugin--s2member-profile-email" class="ws-plugin--s2member-profile-field" value="' . format_to_edit($user->user_email) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_after_email", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ } /**/ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_names"]) { if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_first_name", true, get_defined_vars())) { eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_before_first_name", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-first-name">' . "\n"; echo '<strong>' . _x("First Name", "s2member-front", "s2member") . ' *</strong><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_first_name" id="ws-plugin--s2member-profile-first-name" class="ws-plugin--s2member-profile-field" value="' . esc_attr($user->first_name) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_after_first_name", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ } /**/ if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_last_name", true, get_defined_vars())) { eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_before_last_name", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-last-name">' . "\n"; echo '<strong>' . _x("Last Name", "s2member-front", "s2member") . ' *</strong><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_last_name" id="ws-plugin--s2member-profile-last-name" class="ws-plugin--s2member-profile-field" value="' . esc_attr($user->last_name) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_after_last_name", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ } /**/ if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_display_name", true, get_defined_vars())) { eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_before_display_name", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-display-name">' . "\n"; echo '<strong>' . _x("Display Name", "s2member-front", "s2member") . ' *</strong><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_display_name" id="ws-plugin--s2member-profile-display-name" class="ws-plugin--s2member-profile-field" value="' . esc_attr($user->display_name) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_after_display_name", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ } } /**/ if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_custom_fields", true, get_defined_vars())) { if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { /* Now, do we have Custom Fields? */ if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level("auto-detection", "profile")) { $fields = get_user_option("s2member_custom_fields", $user_id); /**/ $tabindex = $tabindex + 9; /* Start tabindex at +9 ( +1 below ). */ /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_before_custom_fields", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field) { eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_during_custom_fields_before", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ if (in_array($field["id"], $fields_applicable)) { $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"])); $field_id_class = preg_replace("/_/", "-", $field_var); /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); if (apply_filters("ws_plugin__s2member_during_profile_during_fields_during_custom_fields_display", true, get_defined_vars())) { if (!empty($field["section"]) && $field["section"] === "yes") { /* Starts a new section? */ echo '<tr><td><div class="ws-plugin--s2member-profile-field-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . '">' . (!empty($field["sectitle"]) ? $field["sectitle"] : '') . '</div></td></tr>'; } /**/ echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-' . esc_attr($field_id_class) . '">' . "\n"; echo '<strong' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? ' style="display:none;"' : '') . '>' . $field["label"] . ($field["required"] === "yes" ? ' *' : '') . '</strong></label>' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? '' : '<br />') . "\n"; echo c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, "ws_plugin__s2member_profile_", "ws-plugin--s2member-profile-", "ws-plugin--s2member-profile-field", "", $tabindex = $tabindex + 1, "", $fields, $fields[$field_var], "profile"); echo '</td>' . "\n"; echo '</tr>' . "\n"; } unset($__refs, $__v); /* Unset defined __refs, __v. */ } /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_during_custom_fields_after", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ } /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_after_custom_fields", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ } } } /**/ if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_password", true, get_defined_vars())) { eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_before_password", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ echo '<tr>' . "\n"; echo '<td>' . "\n"; /**/ echo '<label for="ws-plugin--s2member-profile-password1" title="' . esc_attr(_x("Please type your Password twice to confirm.", "s2member-front", "s2member")) . '">' . "\n"; echo '<strong>' . _x("New Password?", "s2member-front", "s2member") . '</strong> <em>' . _x("( please type it twice )", "s2member-front", "s2member") . '</em><br />' . "\n"; echo '<em>' . _x("Only if changing password, otherwise leave blank.", "s2member-front", "s2member") . '</em><br />' . "\n"; echo '<input type="password" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_password1" id="ws-plugin--s2member-profile-password1" class="ws-plugin--s2member-profile-field" value="" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '"' . ($user->user_login === "demo" ? ' disabled="disabled"' : '') . ' />' . "\n"; echo '</label>' . "\n"; /**/ echo '<label for="ws-plugin--s2member-profile-password2" title="' . esc_attr(_x("Please type your Password twice to confirm.", "s2member-front", "s2member")) . '">' . "\n"; echo '<input type="password" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_password2" id="ws-plugin--s2member-profile-password2" class="ws-plugin--s2member-profile-field" value="" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '"' . ($user->user_login === "demo" ? ' disabled="disabled"' : '') . ' />' . "\n"; echo '</label>' . "\n"; /**/ echo '<div id="ws-plugin--s2member-profile-password-strength" class="ws-plugin--s2member-password-strength"><em>' . _x("password strength indicator", "s2member-front", "s2member") . '</em></div>' . "\n"; /**/ echo '</td>' . "\n"; echo '</tr>' . "\n"; /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_during_fields_after_password", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ } /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_after_fields", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<input type="hidden" name="ws_plugin__s2member_sc_profile_save" id="ws-plugin--s2member-sc-profile-save" value="' . esc_attr(wp_create_nonce("ws-plugin--s2member-sc-profile-save")) . '" />' . "\n"; echo '<input type="hidden" name="ws_plugin__s2member_profile_save" id="ws-plugin--s2member-profile-save" value="' . esc_attr(wp_create_nonce("ws-plugin--s2member-profile-save")) . '" />' . "\n"; echo '<input type="submit" id="ws-plugin--s2member-profile-submit" value="' . esc_attr(_x("Save All Changes", "s2member-front", "s2member")) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; /**/ echo '</tbody>' . "\n"; echo '</table>' . "\n"; /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_profile_after_table", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ echo '</form>' . "\n"; /**/ $code = ob_get_clean(); } /**/ return apply_filters("ws_plugin__s2member_sc_profile", !empty($code) ? $code : null, get_defined_vars()); }
/** * Displays a Stand-Alone Profile Modification Form. * * @package s2Member\Profiles * @since 3.5 * * @attaches-to ``add_action("init");`` * * @return null Or exits script execution after display. */ public static function profile() { do_action("ws_plugin__s2member_before_profile", get_defined_vars()); if (!empty($_GET["s2member_profile"])) { c_ws_plugin__s2member_no_cache::no_cache_constants(true); // No caching. $tabindex = apply_filters("ws_plugin__s2member_sc_profile_tabindex", 0, get_defined_vars()); if (($user = is_user_logged_in() ? wp_get_current_user() : false) && ($user_id = $user->ID)) { echo c_ws_plugin__s2member_utils_html::doctype_html_head("My Profile", "ws_plugin__s2member_during_profile_head"); echo '<body style="' . esc_attr(apply_filters("ws_plugin__s2member_profile_body_styles", "background:#FFFFFF; color:#333333; font-family:'Verdana', sans-serif; font-size:13px;", get_defined_vars())) . '">' . "\n"; echo '<form method="post" name="ws_plugin__s2member_profile" id="ws-plugin--s2member-profile" action="' . esc_attr(site_url("/")) . '">' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_before_table", get_defined_vars()); unset($__refs, $__v); echo '<table cellpadding="0" cellspacing="0">' . "\n"; echo '<tbody>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_before_fields", get_defined_vars()); unset($__refs, $__v); if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_username", true, get_defined_vars())) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_before_username", get_defined_vars()); unset($__refs, $__v); echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-login">' . "\n"; echo '<strong>' . _x("Username", "s2member-front", "s2member") . ' *</strong> <small>' . _x("(cannot be changed)", "s2member-front", "s2member") . '</small><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="60" autocomplete="off" name="ws_plugin__s2member_profile_login" id="ws-plugin--s2member-profile-login" class="ws-plugin--s2member-profile-field form-control" value="' . format_to_edit($user->user_login) . '" disabled="disabled" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_after_username", get_defined_vars()); unset($__refs, $__v); } if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_email", true, get_defined_vars())) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_before_email", get_defined_vars()); unset($__refs, $__v); echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-email">' . "\n"; echo '<strong>' . _x("Email Address", "s2member-front", "s2member") . ' *</strong><br />' . "\n"; echo '<input type="email" aria-required="true" data-expected="email" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_email" id="ws-plugin--s2member-profile-email" class="ws-plugin--s2member-profile-field form-control" value="' . format_to_edit($user->user_email) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_after_email", get_defined_vars()); unset($__refs, $__v); } if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_names"]) { if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_first_name", true, get_defined_vars())) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_before_first_name", get_defined_vars()); unset($__refs, $__v); echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-first-name">' . "\n"; echo '<strong>' . _x("First Name", "s2member-front", "s2member") . ' *</strong><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_first_name" id="ws-plugin--s2member-profile-first-name" class="ws-plugin--s2member-profile-field form-control" value="' . esc_attr($user->first_name) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_after_first_name", get_defined_vars()); unset($__refs, $__v); } if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_last_name", true, get_defined_vars())) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_before_last_name", get_defined_vars()); unset($__refs, $__v); echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-last-name">' . "\n"; echo '<strong>' . _x("Last Name", "s2member-front", "s2member") . ' *</strong><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_last_name" id="ws-plugin--s2member-profile-last-name" class="ws-plugin--s2member-profile-field form-control" value="' . esc_attr($user->last_name) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_after_last_name", get_defined_vars()); unset($__refs, $__v); } if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_display_name", true, get_defined_vars())) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_before_display_name", get_defined_vars()); unset($__refs, $__v); echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-display-name">' . "\n"; echo '<strong>' . _x("Display Name", "s2member-front", "s2member") . ' *</strong><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_display_name" id="ws-plugin--s2member-profile-display-name" class="ws-plugin--s2member-profile-field form-control" value="' . esc_attr($user->display_name) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_after_display_name", get_defined_vars()); unset($__refs, $__v); } } if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_custom_fields", true, get_defined_vars())) { if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { // Now, do we have Custom Fields? if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level("auto-detection", "profile")) { $fields = get_user_option("s2member_custom_fields", $user_id); $tabindex = $tabindex + 9; // Start tabindex at +9 ( +1 below ). foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_before_custom_fields", get_defined_vars()); unset($__refs, $__v); foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_during_custom_fields_before", get_defined_vars()); unset($__refs, $__v); if (in_array($field["id"], $fields_applicable)) { $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"])); $field_id_class = preg_replace("/_/", "-", $field_var); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } if (apply_filters("ws_plugin__s2member_during_profile_during_fields_during_custom_fields_display", true, get_defined_vars())) { if (!empty($field["section"]) && $field["section"] === "yes") { // Starts a new section? echo '<tr><td><div class="ws-plugin--s2member-profile-field-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . '">' . (!empty($field["sectitle"]) ? $field["sectitle"] : '') . '</div></td></tr>'; } echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-' . esc_attr($field_id_class) . '">' . "\n"; echo '<strong' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? ' style="display:none;"' : '') . '>' . $field["label"] . ($field["required"] === "yes" ? ' *' : '') . '</strong></label>' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? '' : '<br />') . "\n"; echo c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, "ws_plugin__s2member_profile_", "ws-plugin--s2member-profile-", "ws-plugin--s2member-profile-field", "", $tabindex = $tabindex + 1, "", $fields, $fields[$field_var], "profile"); echo '</td>' . "\n"; echo '</tr>' . "\n"; } unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_during_custom_fields_after", get_defined_vars()); unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_after_custom_fields", get_defined_vars()); unset($__refs, $__v); } } } if (apply_filters("ws_plugin__s2member_during_profile_during_fields_display_password", true, get_defined_vars())) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_before_password", get_defined_vars()); unset($__refs, $__v); echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-password1" title="' . esc_attr(_x("Please type your Password twice to confirm.", "s2member-front", "s2member")) . '">' . "\n"; echo '<strong>' . _x("New Password?", "s2member-front", "s2member") . '</strong> <em>' . _x("(please type it twice)", "s2member-front", "s2member") . '</em><br />' . "\n"; echo '<em>' . _x("Only if changing password, otherwise leave blank.", "s2member-front", "s2member") . '</em><br />' . "\n"; echo '<input type="password" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_password1" id="ws-plugin--s2member-profile-password1" class="ws-plugin--s2member-profile-field form-control" value="" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '"' . ($user->user_login === "demo" ? ' disabled="disabled"' : '') . ' />' . "\n"; echo '</label>' . "\n"; echo '<label for="ws-plugin--s2member-profile-password2" title="' . esc_attr(_x("Please type your Password twice to confirm.", "s2member-front", "s2member")) . '">' . "\n"; echo '<input type="password" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_password2" id="ws-plugin--s2member-profile-password2" class="ws-plugin--s2member-profile-field form-control" value="" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '"' . ($user->user_login === "demo" ? ' disabled="disabled"' : '') . ' />' . "\n"; echo '</label>' . "\n"; echo '<div id="ws-plugin--s2member-profile-password-strength" class="ws-plugin--s2member-password-strength"><em>' . _x("password strength indicator", "s2member-front", "s2member") . '</em></div>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_during_fields_after_password", get_defined_vars()); unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_after_fields", get_defined_vars()); unset($__refs, $__v); echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<input type="hidden" name="ws_plugin__s2member_profile_save" id="ws-plugin--s2member-profile-save" value="' . esc_attr(wp_create_nonce("ws-plugin--s2member-profile-save")) . '" />' . "\n"; echo '<input type="submit" id="ws-plugin--s2member-profile-submit" class="btn btn-primary" value="' . esc_attr(_x("Save All Changes", "s2member-front", "s2member")) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; echo '</tbody>' . "\n"; echo '</table>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_profile_after_table", get_defined_vars()); unset($__refs, $__v); echo '</form>' . "\n"; echo '</body>' . "\n"; echo '</html>'; } exit; } do_action("ws_plugin__s2member_after_profile", get_defined_vars()); }
/** * Adds Custom Fields to: `/wp-login.php?action=register`. * * @package s2Member\Custom_Reg_Fields * @since 3.5 * * @attaches-to ``add_action("register_form");`` * * @todo Optimize with ``empty()``. */ public static function custom_registration_fields() { do_action("ws_plugin__s2member_before_custom_registration_fields", get_defined_vars()); $_p = !empty($_POST) ? c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)) : array(); echo '<input type="hidden" name="ws_plugin__s2member_registration" value="' . esc_attr(wp_create_nonce("ws-plugin--s2member-registration")) . '" />' . "\n"; $tabindex = 20; // Incremented tabindex starting with 20. foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_registration_fields_before", get_defined_vars()); unset($__refs, $__v); if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"]) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_registration_fields_before_user_pass", get_defined_vars()); unset($__refs, $__v); echo '<p>' . "\n"; echo '<label for="ws-plugin--s2member-custom-reg-field-user-pass1" title="' . esc_attr(_x("Please type your Password twice to confirm.", "s2member-front", "s2member")) . '">' . "\n"; echo '<span>' . _x("Password (please type it twice)", "s2member-front", "s2member") . ' *</span><br />' . "\n"; echo '<input type="password" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_custom_reg_field_user_pass1" id="ws-plugin--s2member-custom-reg-field-user-pass1" class="ws-plugin--s2member-custom-reg-field form-control" value="' . format_to_edit(@$_p["ws_plugin__s2member_custom_reg_field_user_pass1"]) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '<label for="ws-plugin--s2member-custom-reg-field-user-pass2" title="' . esc_attr(_x("Please type your Password twice to confirm.", "s2member-front", "s2member")) . '">' . "\n"; echo '<input type="password" maxlength="100" autocomplete="off" name="ws_plugin__s2member_custom_reg_field_user_pass2" id="ws-plugin--s2member-custom-reg-field-user-pass2" class="ws-plugin--s2member-custom-reg-field form-control" value="' . format_to_edit(@$_p["ws_plugin__s2member_custom_reg_field_user_pass2"]) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '<div id="ws-plugin--s2member-custom-reg-field-user-pass-strength" class="ws-plugin--s2member-password-strength"><em>' . _x("password strength indicator", "s2member-front", "s2member") . '</em></div>' . "\n"; echo '</p>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_registration_fields_after_user_pass", get_defined_vars()); unset($__refs, $__v); } if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_names"]) { echo '<div class="ws-plugin--s2member-custom-reg-field-divider-section"></div>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_registration_fields_before_first_name", get_defined_vars()); unset($__refs, $__v); echo '<p>' . "\n"; echo '<label for="ws-plugin--s2member-custom-reg-field-first-name">' . "\n"; echo '<span>' . _x("First Name", "s2member-front", "s2member") . ' *</span><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_custom_reg_field_first_name" id="ws-plugin--s2member-custom-reg-field-first-name" class="ws-plugin--s2member-custom-reg-field form-control" value="' . esc_attr(@$_p["ws_plugin__s2member_custom_reg_field_first_name"]) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</p>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_registration_fields_after_first_name", get_defined_vars()); unset($__refs, $__v); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_registration_fields_before_last_name", get_defined_vars()); unset($__refs, $__v); echo '<p>' . "\n"; echo '<label for="ws-plugin--s2member-custom-reg-field-last-name">' . "\n"; echo '<span>' . _x("Last Name", "s2member-front", "s2member") . ' *</span><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_custom_reg_field_last_name" id="ws-plugin--s2member-custom-reg-field-last-name" class="ws-plugin--s2member-custom-reg-field form-control" value="' . esc_attr(@$_p["ws_plugin__s2member_custom_reg_field_last_name"]) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</p>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_registration_fields_after_last_name", get_defined_vars()); unset($__refs, $__v); } if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level("auto-detection", "registration")) { $tabindex = $tabindex + 9; foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_registration_fields_before_custom_fields", get_defined_vars()); unset($__refs, $__v); if (in_array($field["id"], $fields_applicable)) { $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"])); $field_id_class = preg_replace("/_/", "-", $field_var); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } if (apply_filters("ws_plugin__s2member_during_custom_registration_fields_during_custom_fields_display", true, get_defined_vars())) { if (!empty($field["section"]) && $field["section"] === "yes") { echo '<div class="ws-plugin--s2member-custom-reg-field-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . '">' . (!empty($field["sectitle"]) ? $field["sectitle"] : '') . '</div>'; } echo '<p>' . "\n"; echo '<label for="ws-plugin--s2member-custom-reg-field-' . esc_attr($field_id_class) . '">' . "\n"; echo '<span' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? ' style="display:none;"' : '') . '>' . $field["label"] . ($field["required"] === "yes" ? ' *' : '') . '</span></label>' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? '' : '<br />') . "\n"; echo c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, "ws_plugin__s2member_custom_reg_field_", "ws-plugin--s2member-custom-reg-field-", "ws-plugin--s2member-custom-reg-field", "", $tabindex = $tabindex + 1, "", $_p, @$_p["ws_plugin__s2member_custom_reg_field_" . $field_var], "registration"); echo '</p>' . "\n"; } unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_registration_fields_after_custom_fields", get_defined_vars()); unset($__refs, $__v); } } } if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] && c_ws_plugin__s2member_list_servers::list_servers_integrated()) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_registration_fields_before_opt_in", get_defined_vars()); unset($__refs, $__v); echo '<p>' . "\n"; echo '<label for="ws-plugin--s2member-custom-reg-field-opt-in">' . "\n"; echo '<input type="checkbox" name="ws_plugin__s2member_custom_reg_field_opt_in" id="ws-plugin--s2member-custom-reg-field-opt-in" class="ws-plugin--s2member-custom-reg-field" value="1"' . (empty($_p) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] == 1 || @$_p["ws_plugin__s2member_custom_reg_field_opt_in"] ? ' checked="checked"' : '') . ' tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in_label"] . "\n"; echo '</label>' . "\n"; echo '</p>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_registration_fields_after_opt_in", get_defined_vars()); unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_registration_fields_after", get_defined_vars()); unset($__refs, $__v); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_after_custom_registration_fields", get_defined_vars()); unset($__refs, $__v); }
/** * Handles Profile modifications. * * @package s2Member\Profiles * @since 3.5 * * @attaches-to ``add_action("init");`` * * @return null After re-configuring the ``$current_user`` object. * May also exit script execution when handling the Stand-Alone Profile Modification Form. */ public static function handle_profile_modifications() { global $current_user; /* We'll need to update this global object. */ /**/ $user =& $current_user; /* Shorter reference to the $current_user object. */ /**/ do_action("ws_plugin__s2member_before_handle_profile_modifications", get_defined_vars()); /**/ if (!empty($_POST["ws_plugin__s2member_profile_save"]) && is_user_logged_in() && is_object($user) && !empty($user->ID) && ($user_id = $user->ID)) { if (($nonce = $_POST["ws_plugin__s2member_profile_save"]) && wp_verify_nonce($nonce, "ws-plugin--s2member-profile-save")) { $GLOBALS["ws_plugin__s2member_profile_saved"] = true; /* Global flag as having been saved/updated successfully. */ /**/ $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); /* Clean ``$_POST`` vars. */ /**/ $userdata["ID"] = $user_id; /* Needed for database update. */ /**/ if (!empty($_p["ws_plugin__s2member_profile_email"])) { if (is_email($_p["ws_plugin__s2member_profile_email"])) { if (!email_exists($_p["ws_plugin__s2member_profile_email"])) { $userdata["user_email"] = $_p["ws_plugin__s2member_profile_email"]; } } } /**/ if (!empty($_p["ws_plugin__s2member_profile_password1"])) { if ($user->user_login !== "demo") { /* No pass change on demo! */ $userdata["user_pass"] = $_p["ws_plugin__s2member_profile_password1"]; } } /**/ if (!empty($_p["ws_plugin__s2member_profile_first_name"])) { $userdata["first_name"] = $_p["ws_plugin__s2member_profile_first_name"]; } /**/ if (!empty($_p["ws_plugin__s2member_profile_display_name"])) { $userdata["display_name"] = $_p["ws_plugin__s2member_profile_display_name"]; } /**/ if (!empty($_p["ws_plugin__s2member_profile_last_name"])) { $userdata["last_name"] = $_p["ws_plugin__s2member_profile_last_name"]; } /**/ wp_update_user($userdata); /* OK. Now send this array for an update. */ /**/ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level("auto-detection", "profile")) { $_existing_fields = get_user_option("s2member_custom_fields", $user_id); /**/ foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field) { $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"])); $field_id_class = preg_replace("/_/", "-", $field_var); /**/ if (!in_array($field["id"], $fields_applicable) || strpos($field["editable"], "no") === 0) { if (isset($_existing_fields[$field_var]) && (is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var]) || is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))) { $fields[$field_var] = $_existing_fields[$field_var]; } else { /* Else ``unset()``. */ unset($fields[$field_var]); } } else { if ($field["required"] === "yes" && (!isset($_p["ws_plugin__s2member_profile_" . $field_var]) || !is_array($_p["ws_plugin__s2member_profile_" . $field_var]) && !is_string($_p["ws_plugin__s2member_profile_" . $field_var]) || is_array($_p["ws_plugin__s2member_profile_" . $field_var]) && empty($_p["ws_plugin__s2member_profile_" . $field_var]) || is_string($_p["ws_plugin__s2member_profile_" . $field_var]) && !strlen($_p["ws_plugin__s2member_profile_" . $field_var]))) { if (isset($_existing_fields[$field_var]) && (is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var]) || is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))) { $fields[$field_var] = $_existing_fields[$field_var]; } else { /* Else ``unset()``. */ unset($fields[$field_var]); } } else { if (isset($_p["ws_plugin__s2member_profile_" . $field_var])) { if (is_array($_p["ws_plugin__s2member_profile_" . $field_var]) && !empty($_p["ws_plugin__s2member_profile_" . $field_var]) || is_string($_p["ws_plugin__s2member_profile_" . $field_var]) && strlen($_p["ws_plugin__s2member_profile_" . $field_var])) { $fields[$field_var] = $_p["ws_plugin__s2member_profile_" . $field_var]; } else { /* Else ``unset()``. */ unset($fields[$field_var]); } } else { /* Else ``unset()``. */ unset($fields[$field_var]); } } } } /**/ if (!empty($fields)) { update_user_option($user_id, "s2member_custom_fields", $fields); } else { /* Else delete their Custom Fields? */ delete_user_option($user_id, "s2member_custom_fields"); } } } /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_during_handle_profile_modifications", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ $user = new WP_User($user_id); /* Update the ``WP_User`` object for the current User/Member. */ function_exists("setup_userdata") ? setup_userdata() : null; /* Update global vars. */ /**/ $lwp = c_ws_plugin__s2member_login_redirects::login_redirection_url($user); $lwp = !$lwp ? get_page_link($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"]) : $lwp; /**/ if (empty($_p["ws_plugin__s2member_sc_profile_save"])) { echo '<script type="text/javascript">' . "\n"; echo "if(window.parent && window.parent != window) { window.parent.alert('" . c_ws_plugin__s2member_utils_strings::esc_js_sq(_x("Profile updated successfully.", "s2member-front", "s2member")) . "'); window.parent.location = '" . c_ws_plugin__s2member_utils_strings::esc_js_sq($lwp) . "'; }"; echo "else if(window.opener) { window.alert('" . c_ws_plugin__s2member_utils_strings::esc_js_sq(_x("Profile updated successfully.", "s2member-front", "s2member")) . "'); window.opener.location = '" . c_ws_plugin__s2member_utils_strings::esc_js_sq($lwp) . "'; window.close(); }"; echo "else { alert('" . c_ws_plugin__s2member_utils_strings::esc_js_sq(_x("Profile updated successfully.", "s2member-front", "s2member")) . "'); window.location = '" . c_ws_plugin__s2member_utils_strings::esc_js_sq($lwp) . "'; }"; echo '</script>' . "\n"; /**/ exit; /* Clean exit. */ } } } /**/ do_action("ws_plugin__s2member_after_handle_profile_modifications", get_defined_vars()); /**/ return; /* Return for uniformity. */ }
/** * Callback adds Custom Fields to `/wp-admin/user-new.php`. * * We have to buffer because `/user-new.php` has NO Hooks. * * @package s2Member\New_Users * @since 3.5 * * @attaches-to ``ob_start("c_ws_plugin__s2member_user_new_in::_admin_user_new_fields");`` * * @return string Output buffer. */ public static function _admin_user_new_fields($buffer = FALSE) { global $pagenow; // The current admin page file name. foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_before_admin_user_new_fields", get_defined_vars()); unset($__refs, $__v); if (is_blog_admin() && $pagenow === "user-new.php" && current_user_can("create_users")) { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); $unfs = '<div style="margin:25px 0 25px 0; height:1px; line-height:1px; background:#CCCCCC;"></div>' . "\n"; $unfs .= '<h3 style="position:relative;"><img src="' . esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/large-icon.png" title="s2Member (a Membership management system for WordPress)" alt="" style="position:absolute; top:-15px; right:0; border:0;" />s2Member Configuration & Profile Fields' . (is_multisite() ? ' (for this Blog)' : '') . '</h3>' . "\n"; $unfs .= '<table class="form-table">' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_before", get_defined_vars()); unset($__refs, $__v); if (is_multisite()) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_before_first_name", get_defined_vars()); unset($__refs, $__v); $unfs .= '<tr>' . "\n"; $unfs .= '<th><label for="ws-plugin--s2member-user-new-first-name">First Name:</label></th>' . "\n"; $unfs .= '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_user_new_first_name" id="ws-plugin--s2member-user-new-first-name" value="' . esc_attr($_p["ws_plugin__s2member_user_new_first_name"]) . '" class="regular-text" /></td>' . "\n"; $unfs .= '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_after_first_name", get_defined_vars()); unset($__refs, $__v); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_before_last_name", get_defined_vars()); unset($__refs, $__v); $unfs .= '<tr>' . "\n"; $unfs .= '<th><label for="ws-plugin--s2member-user-new-last-name">Last Name:</label></th>' . "\n"; $unfs .= '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_user_new_last_name" id="ws-plugin--s2member-user-new-last-name" value="' . esc_attr($_p["ws_plugin__s2member_user_new_last_name"]) . '" class="regular-text" /></td>' . "\n"; $unfs .= '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_after_last_name", get_defined_vars()); unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_before_subscr_gateway", get_defined_vars()); unset($__refs, $__v); $unfs .= '<tr>' . "\n"; $unfs .= '<th><label for="ws-plugin--s2member-user-new-s2member-subscr-gateway">Paid Subscr. Gateway:</label> <a href="#" onclick="alert(\'A Payment Gateway code is associated with the Paid Subscr. ID below. A Paid Subscription ID (or a Buy Now Transaction ID) is only valid for paid Members. Also known as (a Recurring Profile ID, a ClickBank Receipt #, a Google Order ID, an AliPay Trade No.). Under normal circumstances, this is filled automatically by s2Member. This field is ONLY here for Customer Service purposes; just in case you ever need to enter a Paid Subscr. Gateway/ID manually. This field will be empty for Free Subscribers, and/or anyone who is NOT paying you.\\n\\nThe value of Paid Subscr. ID, can be a PayPal Standard `Subscription ID`, or a PayPal Pro `Recurring Profile ID`, or a PayPal `Transaction ID`; depending on the type of sale. Your PayPal account will supply this information. If you\\\'re using Google Wallet, use the Google Order ID. ClickBank provides a Receipt #, ccBill provides a Subscription ID, Authorize.Net provides a Subscription ID, and AliPay provides a Transaction ID. The general rule is... IF there\\\'s a Subscription ID, use that! If there\\\'s NOT, use the Transaction ID.\'); return false;" tabindex="-1">[?]</a></th>' . "\n"; $unfs .= '<td><select name="ws_plugin__s2member_user_new_s2member_subscr_gateway" id="ws-plugin--s2member-user-new-s2member-subscr-gateway" style="width:25em;"><option value=""></option>' . "\n"; foreach (apply_filters("ws_plugin__s2member_profile_s2member_subscr_gateways", array("paypal" => "PayPal (code: paypal)"), get_defined_vars()) as $gateway => $gateway_name) { $unfs .= '<option value="' . esc_attr($gateway) . '"' . ($gateway === $_p["ws_plugin__s2member_user_new_s2member_subscr_gateway"] ? ' selected="selected"' : '') . '>' . esc_html($gateway_name) . '</option>' . "\n"; } $unfs .= '</select>' . "\n"; $unfs .= '</td>' . "\n"; $unfs .= '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_after_subscr_gateway", get_defined_vars()); unset($__refs, $__v); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_before_subscr_id", get_defined_vars()); unset($__refs, $__v); $unfs .= '<tr>' . "\n"; $unfs .= '<th><label for="ws-plugin--s2member-user-new-s2member-subscr-id">Paid Subscr. ID:</label> <a href="#" onclick="alert(\'A Paid Subscription ID (or a Buy Now Transaction ID) is only valid for paid Members. Also known as (a Recurring Profile ID, a ClickBank Receipt #, a Google Order ID, an AliPay Trade No.). Under normal circumstances, this is filled automatically by s2Member. This field is ONLY here for Customer Service purposes; just in case you ever need to enter a Paid Subscr. Gateway/ID manually. This field will be empty for Free Subscribers, and/or anyone who is NOT paying you.\\n\\nThe value of Paid Subscr. ID, can be a PayPal Standard `Subscription ID`, or a PayPal Pro `Recurring Profile ID`, or a PayPal `Transaction ID`; depending on the type of sale. Your PayPal account will supply this information. If you\\\'re using Google Wallet, use the Google Order ID. ClickBank provides a Receipt #, ccBill provides a Subscription ID, Authorize.Net provides a Subscription ID, and AliPay provides a Transaction ID. The general rule is... if there\\\'s a Subscription ID, use that! If there\\\'s NOT, use the Transaction ID.\'); return false;" tabindex="-1">[?]</a></th>' . "\n"; $unfs .= '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_user_new_s2member_subscr_id" id="ws-plugin--s2member-user-new-s2member-subscr-id" value="' . format_to_edit($_p["ws_plugin__s2member_user_new_s2member_subscr_id"]) . '" class="regular-text" /></td>' . "\n"; $unfs .= '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_after_subscr_id", get_defined_vars()); unset($__refs, $__v); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_before_custom", get_defined_vars()); unset($__refs, $__v); $unfs .= '<tr>' . "\n"; $unfs .= '<th><label for="ws-plugin--s2member-user-new-s2member-custom">Custom Value:</label> <a href="#" onclick="alert(\'A Paid Subscription is always associated with a Custom String that is passed through the custom=\\\'\\\'' . c_ws_plugin__s2member_utils_strings::esc_js_sq(esc_attr($_SERVER["HTTP_HOST"]), 3) . '\\\'\\\' attribute of your Shortcode. This Custom Value, MUST always start with your domain name. However, you can also pipe delimit additional values after your domain, if you need to.\\n\\nFor example:\\n' . c_ws_plugin__s2member_utils_strings::esc_js_sq(esc_attr($_SERVER["HTTP_HOST"]), 3) . '|cv1|cv2|cv3\'); return false;" tabindex="-1">[?]</a></th>' . "\n"; $unfs .= '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_user_new_s2member_custom" id="ws-plugin--s2member-user-new-s2member-custom" value="' . format_to_edit($_p["ws_plugin__s2member_user_new_s2member_custom"]) . '" class="regular-text" /></td>' . "\n"; $unfs .= '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_after_custom", get_defined_vars()); unset($__refs, $__v); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_before_registration_ip", get_defined_vars()); unset($__refs, $__v); $unfs .= '<tr>' . "\n"; $unfs .= '<th><label for="ws-plugin--s2member-user-new-s2member-registration-ip">Registration IP:</label> <a href="#" onclick="alert(\'This is the IP Address the User had at the time of registration. If you don\\\'t know the User\\\'s IP Address, just leave this blank. If this is left empty, s2Member will make attempts in the future to grab the User\\\'s IP Address.\'); return false;" tabindex="-1">[?]</a></th>' . "\n"; $unfs .= '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_user_new_s2member_registration_ip" id="ws-plugin--s2member-user-new-s2member-registration-ip" value="' . format_to_edit($_p["ws_plugin__s2member_user_new_s2member_registration_ip"]) . '" class="regular-text" /></td>' . "\n"; $unfs .= '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_after_registration_ip", get_defined_vars()); unset($__refs, $__v); if (!is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site()) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_before_ccaps", get_defined_vars()); unset($__refs, $__v); $unfs .= '<tr>' . "\n"; $unfs .= '<th><label for="ws-plugin--s2member-user-new-s2member-ccaps">Custom Capabilities:</label> <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member → API Scripting → Custom Capabilities.' . (is_multisite() ? '\\n\\nCustom Capabilities are assigned on a per-Blog basis. So having a set of Custom Capabilities for one Blog, and having NO Custom Capabilities on another Blog - is very common. This is how permissions are designed to work.' : '') . '\'); return false;" tabindex="-1">[?]</a></th>' . "\n"; $unfs .= '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_user_new_s2member_ccaps" id="ws-plugin--s2member-user-new-s2member-ccaps" value="' . format_to_edit($_p["ws_plugin__s2member_user_new_s2member_ccaps"]) . '" class="regular-text" onkeyup="if(this.value.match(/[^a-z_0-9,]/)) this.value = jQuery.trim (jQuery.trim (this.value).replace (/[ \\-]/g, \'_\').replace (/[^a-z_0-9,]/gi, \'\').toLowerCase ());" /></td>' . "\n"; $unfs .= '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_after_ccaps", get_defined_vars()); unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_before_auto_eot_time", get_defined_vars()); unset($__refs, $__v); $unfs .= '<tr>' . "\n"; $unfs .= '<th><label for="ws-plugin--s2member-user-new-auto-eot-time">Automatic EOT Time:</label> <a href="#" onclick="alert(\'EOT = End Of Term. ( i.e., Account Expiration / Termination. ).\\n\\nIf you leave this empty, s2Member will configure an EOT Time automatically, based on the paid Subscription associated with this account. In other words, if a paid Subscription expires, is cancelled, terminated, refunded, reversed, or charged back to you; s2Member will deal with the EOT automatically.\\n\\nThat being said, if you would rather take control over this, you can. If you type in a date manually, s2Member will obey the Auto-EOT Time that you\\\'ve given, no matter what. In other words, you can force certain Members to expire automatically, at a time that you specify. s2Member will obey.\\n\\nValid formats for Automatic EOT Time:\\n\\nmm/dd/yyyy\\nyyyy-mm-dd\\n+1 year\\n+2 weeks\\n+2 months\\n+10 minutes\\nnext thursday\\ntomorrow\\ntoday\\n\\n* anything compatible with PHP\\\'s strtotime() function.\'); return false;" tabindex="-1">[?]</a>' . ($auto_eot_time ? '<br /><small>(<a href="http://www.world-time-zones.org/zones/greenwich-mean-time.htm" target="_blank" rel="external">Universal Time / GMT</a>)</small>' : '') . '</th>' . "\n"; $unfs .= '<td><input type="text" autocomplete="off" name="ws_plugin__s2member_user_new_s2member_auto_eot_time" id="ws-plugin--s2member-user-new-auto-eot-time" value="' . format_to_edit($_p["ws_plugin__s2member_user_new_s2member_auto_eot_time"]) . '" class="regular-text" /></td>' . "\n"; $unfs .= '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_after_auto_eot_time", get_defined_vars()); unset($__refs, $__v); if (c_ws_plugin__s2member_list_servers::list_servers_integrated()) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_before_opt_in", get_defined_vars()); unset($__refs, $__v); $unfs .= '<tr>' . "\n"; $unfs .= '<th><label for="ws-plugin--s2member-user-new-opt-in">Process List Servers:</label> <a href="#" onclick="alert(\'You have at least one List Server integrated with s2Member. Would you like to process a confirmation request for this new User? If not, just leave the box unchecked.\'); return false;" tabindex="-1">[?]</a></th>' . "\n"; $unfs .= '<td><label><input type="checkbox" name="ws_plugin__s2member_user_new_opt_in" id="ws-plugin--s2member-user-new-opt-in" value="1"' . ($_p["ws_plugin__s2member_user_new_opt_in"] ? ' checked="checked"' : '') . ' /> Yes, send a mailing list confirmation email to this new User.</label></td>' . "\n"; $unfs .= '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_after_opt_in", get_defined_vars()); unset($__refs, $__v); } if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { // Now, do we have Custom Fields? if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level("any", "administrative")) { $unfs .= '<tr>' . "\n"; $unfs .= '<td colspan="2">' . "\n"; $unfs .= '<div style="height:1px; line-height:1px; background:#CCCCCC;"></div>' . "\n"; $unfs .= '</td>' . "\n"; $unfs .= '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_before_custom_fields", get_defined_vars()); unset($__refs, $__v); foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_during_custom_fields_before", get_defined_vars()); unset($__refs, $__v); if (in_array($field["id"], $fields_applicable)) { $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"])); $field_id_class = preg_replace("/_/", "-", $field_var); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } if (apply_filters("_ws_plugin__s2member_during_admin_user_new_fields_during_custom_fields_display", true, get_defined_vars())) { if (!empty($field["section"]) && $field["section"] === "yes") { // Starts a new section? $unfs .= '<tr><td colspan="2"><div class="ws-plugin--s2member-user-new-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . '">' . (!empty($field["sectitle"]) ? $field["sectitle"] : '') . '</div></td></tr>'; } $unfs .= '<tr>' . "\n"; $unfs .= '<th><label for="ws-plugin--s2member-user-new-' . esc_attr($field_id_class) . '">' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? ucwords(preg_replace("/_/", " ", $field_var)) : $field["label"]) . ':</label></th>' . "\n"; $unfs .= '<td>' . c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, "ws_plugin__s2member_user_new_", "ws-plugin--s2member-user-new-", "", preg_match("/^(text|textarea|select|selects)\$/", $field["type"]) ? "width:99%;" : "", "", "", $_p, $_p["ws_plugin__s2member_user_new_" . $field_var], "administrative") . '</td>' . "\n"; $unfs .= '</tr>' . "\n"; } unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_during_custom_fields_after", get_defined_vars()); unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_after_custom_fields", get_defined_vars()); unset($__refs, $__v); $unfs .= '<tr>' . "\n"; $unfs .= '<td colspan="2">' . "\n"; $unfs .= '<div style="height:1px; line-height:1px; background:#CCCCCC;"></div>' . "\n"; $unfs .= '</td>' . "\n"; $unfs .= '</tr>' . "\n"; } } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_before_notes", get_defined_vars()); unset($__refs, $__v); $unfs .= '<tr>' . "\n"; $unfs .= '<th><label for="ws-plugin--s2member-user-new-s2member-notes">Administrative Notes:</label> <a href="#" onclick="alert(\'This is for Administrative purposes. You can keep a list of Notations about this account. These Notations are private; Users/Members will never see these.\\n\\n*Note* The s2Member software may `append` Notes to this field occasionally, under special circumstances. For example, when/if s2Member demotes a paid Member to a Free Subscriber, s2Member will leave a Note in this field.\'); return false;" tabindex="-1">[?]</a><br /><br /><small>These Notations are private; Users/Members will never see any of these notes.</small></th>' . "\n"; $unfs .= '<td><textarea name="ws_plugin__s2member_user_new_s2member_notes" id="ws-plugin--s2member-user-new-s2member-notes" rows="5" wrap="off" spellcheck="false" style="width:99%;">' . format_to_edit($_p["ws_plugin__s2member_user_new_s2member_notes"]) . '</textarea></td>' . "\n"; $unfs .= '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_after_notes", get_defined_vars()); unset($__refs, $__v); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_during_admin_user_new_fields_after", get_defined_vars()); unset($__refs, $__v); $unfs .= '</table>' . "\n"; $unfs .= '<div style="margin:25px 0 25px 0; height:1px; line-height:1px; background:#CCCCCC;"></div>' . "\n"; $buffer = preg_replace("/(\\<\\/table\\>)(\\s*)(\\<p\\s+class\\s*\\=\\s*['\"]submit['\"]\\s*\\>)(\\s*)(\\<input\\s+type\\s*\\=\\s*['\"]submit['\"]\\s+name\\s*\\=\\s*['\"]createuser['\"])/", "\$1\$2\n" . $unfs . "\$3\$4\$5", $buffer); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("_ws_plugin__s2member_after_admin_user_new_fields", get_defined_vars()); unset($__refs, $__v); return apply_filters("_ws_plugin__s2member_admin_user_new_fields", $buffer, get_defined_vars()); }
/** * Handles the Shortcode for: `[s2Member-Profile /]`. * * @package s2Member\Profiles * @since 3.5 * * @attaches-to ``add_shortcode('s2Member-Profile');`` * * @param array $attr An array of Attributes. * @param string $content Content inside the Shortcode. * @param string $shortcode The actual Shortcode name itself. * * @return string|null The resulting Profile Modifiation Form *(inline)*, or null if not logged-in. */ public static function sc_profile($attr = FALSE, $content = FALSE, $shortcode = FALSE) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_before_sc_profile', get_defined_vars()); unset($__refs, $__v); c_ws_plugin__s2member_no_cache::no_cache_constants(true); $tabindex = apply_filters('ws_plugin__s2member_sc_profile_tabindex', 0, get_defined_vars()); if (($user = is_user_logged_in() ? wp_get_current_user() : FALSE) && ($user_id = $user->ID)) { $attr = c_ws_plugin__s2member_utils_strings::trim_qts_deep((array) $attr); $attr = shortcode_atts(array(), $attr); // Possible Attributes. None. foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_before_sc_profile_after_shortcode_atts', get_defined_vars()); unset($__refs, $__v); ob_start(); // Start buffering. Allows Hooks to echo output like: `/?s2member_profile=1`. echo '<form method="post" name="ws_plugin__s2member_profile" id="ws-plugin--s2member-profile" autocomplete="off">' . "\n"; if (!empty($GLOBALS['ws_plugin__s2member_profile_saved'])) { echo '<div id="ws-plugin--s2member-profile-saved" class="alert alert-success">' . "\n"; echo _x('Profile updated successfully.', 's2member-front', 's2member') . "\n"; echo '</div>' . "\n"; } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_before_table', get_defined_vars()); unset($__refs, $__v); echo '<table cellpadding="0" cellspacing="0">' . "\n"; echo '<tbody>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_before_fields', get_defined_vars()); unset($__refs, $__v); if (apply_filters('ws_plugin__s2member_during_profile_during_fields_display_username', TRUE, get_defined_vars())) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_before_username', get_defined_vars()); unset($__refs, $__v); echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-login">' . "\n"; echo '<strong>' . _x('Username', 's2member-front', 's2member') . ' *</strong> <small>' . _x('(cannot be changed)', 's2member-front', 's2member') . '</small><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="60" autocomplete="off" name="ws_plugin__s2member_profile_login" id="ws-plugin--s2member-profile-login" class="ws-plugin--s2member-profile-field form-control" value="' . format_to_edit($user->user_login) . '" disabled="disabled" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_after_username', get_defined_vars()); unset($__refs, $__v); } if (apply_filters('ws_plugin__s2member_during_profile_during_fields_display_email', TRUE, get_defined_vars())) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_before_email', get_defined_vars()); unset($__refs, $__v); echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-email">' . "\n"; echo '<strong>' . _x('Email Address', 's2member-front', 's2member') . ' *</strong><br />' . "\n"; echo '<input type="email" aria-required="true" data-expected="email" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_email" id="ws-plugin--s2member-profile-email" class="ws-plugin--s2member-profile-field form-control" value="' . format_to_edit($user->user_email) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_after_email', get_defined_vars()); unset($__refs, $__v); } if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_names']) { if (apply_filters('ws_plugin__s2member_during_profile_during_fields_display_first_name', TRUE, get_defined_vars())) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_before_first_name', get_defined_vars()); unset($__refs, $__v); echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-first-name">' . "\n"; echo '<strong>' . _x('First Name', 's2member-front', 's2member') . ' *</strong><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_first_name" id="ws-plugin--s2member-profile-first-name" class="ws-plugin--s2member-profile-field form-control" value="' . esc_attr($user->first_name) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_after_first_name', get_defined_vars()); unset($__refs, $__v); } if (apply_filters('ws_plugin__s2member_during_profile_during_fields_display_last_name', TRUE, get_defined_vars())) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_before_last_name', get_defined_vars()); unset($__refs, $__v); echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-last-name">' . "\n"; echo '<strong>' . _x('Last Name', 's2member-front', 's2member') . ' *</strong><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_last_name" id="ws-plugin--s2member-profile-last-name" class="ws-plugin--s2member-profile-field form-control" value="' . esc_attr($user->last_name) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_after_last_name', get_defined_vars()); unset($__refs, $__v); } if (apply_filters('ws_plugin__s2member_during_profile_during_fields_display_display_name', TRUE, get_defined_vars())) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_before_display_name', get_defined_vars()); unset($__refs, $__v); echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-display-name">' . "\n"; echo '<strong>' . _x('Display Name', 's2member-front', 's2member') . ' *</strong><br />' . "\n"; echo '<input type="text" aria-required="true" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_display_name" id="ws-plugin--s2member-profile-display-name" class="ws-plugin--s2member-profile-field form-control" value="' . esc_attr($user->display_name) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_after_display_name', get_defined_vars()); unset($__refs, $__v); } } if (apply_filters('ws_plugin__s2member_during_profile_during_fields_display_custom_fields', TRUE, get_defined_vars())) { if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields']) { // Now, do we have Custom Fields? if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level('auto-detection', 'profile')) { $fields = get_user_option('s2member_custom_fields', $user_id); $tabindex = $tabindex + 9; // Start tabindex at +9 ( +1 below ). foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_before_custom_fields', get_defined_vars()); unset($__refs, $__v); foreach (json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], TRUE) as $field) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_during_custom_fields_before', get_defined_vars()); unset($__refs, $__v); if (in_array($field['id'], $fields_applicable)) { $field_var = preg_replace('/[^a-z0-9]/i', '_', strtolower($field['id'])); $field_id_class = preg_replace('/_/', '-', $field_var); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } if (apply_filters('ws_plugin__s2member_during_profile_during_fields_during_custom_fields_display', TRUE, get_defined_vars())) { if (!empty($field['section']) && $field['section'] === 'yes') { // Starts a new section? echo '<tr><td><div class="ws-plugin--s2member-profile-field-divider-section' . (!empty($field['sectitle']) ? '-title' : '') . '">' . (!empty($field['sectitle']) ? $field['sectitle'] : '') . '</div></td></tr>'; } echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-' . esc_attr($field_id_class) . '">' . "\n"; echo '<strong' . (preg_match('/^(checkbox|pre_checkbox)$/', $field['type']) ? ' style="display:none;"' : '') . '>' . $field['label'] . ($field['required'] === 'yes' ? ' *' : '') . '</strong></label>' . (preg_match('/^(checkbox|pre_checkbox)$/', $field['type']) ? '' : '<br />') . "\n"; echo c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, 'ws_plugin__s2member_profile_', 'ws-plugin--s2member-profile-', 'ws-plugin--s2member-profile-field', '', $tabindex = $tabindex + 1, '', $fields, @$fields[$field_var], 'profile'); echo '</td>' . "\n"; echo '</tr>' . "\n"; } unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_during_custom_fields_after', get_defined_vars()); unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_after_custom_fields', get_defined_vars()); unset($__refs, $__v); } } } if (apply_filters('ws_plugin__s2member_during_profile_during_fields_display_password', TRUE, get_defined_vars())) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_before_password', get_defined_vars()); unset($__refs, $__v); echo '<tr><td><div class="ws-plugin--s2member-profile-field-divider-section"></div></td></tr>'; echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-password1" title="' . esc_attr(_x('Please type your Password twice to confirm.', 's2member-front', 's2member')) . '">' . "\n"; echo '<strong>' . _x('New Password?', 's2member-front', 's2member') . '</strong> <em>' . _x('(please type it twice)', 's2member-front', 's2member') . '</em><br />' . "\n"; echo '<em>' . _x('Only if changing password, otherwise leave blank.', 's2member-front', 's2member') . '</em><br />' . "\n"; echo '<input type="password" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_password1" id="ws-plugin--s2member-profile-password1" class="ws-plugin--s2member-profile-field form-control" value="" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '"' . ($user->user_login === 'demo' ? ' disabled="disabled"' : '') . ' />' . "\n"; echo '</label>' . "\n"; echo '<label for="ws-plugin--s2member-profile-password2" title="' . esc_attr(_x('Please type your Password twice to confirm.', 's2member-front', 's2member')) . '">' . "\n"; echo '<input type="password" maxlength="100" autocomplete="off" name="ws_plugin__s2member_profile_password2" id="ws-plugin--s2member-profile-password2" class="ws-plugin--s2member-profile-field form-control" value="" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '"' . ($user->user_login === 'demo' ? ' disabled="disabled"' : '') . ' />' . "\n"; echo '</label>' . "\n"; echo '<div id="ws-plugin--s2member-profile-password-strength" class="ws-plugin--s2member-password-strength"><em>' . _x('password strength indicator', 's2member-front', 's2member') . '</em></div>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_after_password', get_defined_vars()); unset($__refs, $__v); } if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in'] && c_ws_plugin__s2member_list_servers::list_servers_integrated()) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_before_opt_in', get_defined_vars()); unset($__refs, $__v); echo '<tr><td><div class="ws-plugin--s2member-profile-field-divider-section"></div></td></tr>'; echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<label for="ws-plugin--s2member-profile-opt-in">' . "\n"; echo '<input type="checkbox" name="ws_plugin__s2member_profile_opt_in" id="ws-plugin--s2member-profile-opt-in" class="ws-plugin--s2member-profile-field" value="1"' . (get_user_option('s2member_opt_in', $user_id) ? ' checked="checked"' : '') . ' tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in_label'] . "\n"; echo '</label>' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_during_fields_after_opt_in', get_defined_vars()); unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_after_fields', get_defined_vars()); unset($__refs, $__v); echo '<tr>' . "\n"; echo '<td>' . "\n"; echo '<input type="hidden" name="ws_plugin__s2member_sc_profile_save" id="ws-plugin--s2member-sc-profile-save" value="' . esc_attr(wp_create_nonce('ws-plugin--s2member-sc-profile-save')) . '" />' . "\n"; echo '<input type="hidden" name="ws_plugin__s2member_profile_save" id="ws-plugin--s2member-profile-save" value="' . esc_attr(wp_create_nonce('ws-plugin--s2member-profile-save')) . '" />' . "\n"; echo '<input type="submit" id="ws-plugin--s2member-profile-submit" class="btn btn-primary" value="' . esc_attr(_x('Save All Changes', 's2member-front', 's2member')) . '" tabindex="' . esc_attr($tabindex = $tabindex + 10) . '" />' . "\n"; echo '</td>' . "\n"; echo '</tr>' . "\n"; echo '</tbody>' . "\n"; echo '</table>' . "\n"; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_profile_after_table', get_defined_vars()); unset($__refs, $__v); echo '</form>' . "\n"; $code = ob_get_clean(); } return apply_filters('ws_plugin__s2member_sc_profile', !empty($code) ? $code : NULL, get_defined_vars()); }
/** * Handles Profile modifications for Custom Fields *(created with s2Member)*; integrated with BuddyPress. * * @package s2Member\Profiles * @since 3.5 * * @attaches-to ``add_action("init");`` * * @return null After re-configuring the ``$current_user`` object. */ public static function handle_profile_modifications_4bp() { global $current_user; // We'll need to update this global object. $user =& $current_user; // Shorter reference to the ``$current_user`` object. do_action("ws_plugin__s2member_before_handle_profile_modifications_4bp", get_defined_vars()); if (!empty($_POST["ws_plugin__s2member_profile_4bp_save"]) && is_user_logged_in() && is_object($user) && !empty($user->ID) && ($user_id = $user->ID)) { if (($nonce = $_POST["ws_plugin__s2member_profile_4bp_save"]) && wp_verify_nonce($nonce, "ws-plugin--s2member-profile-4bp-save")) { $GLOBALS["ws_plugin__s2member_profile_4bp_saved"] = true; // Global flag as having been saved/updated successfully. $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); // Clean ``$_POST`` vars. if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level("auto-detection", "profile")) { $_existing_fields = get_user_option("s2member_custom_fields", $user_id); foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field) { $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"])); $field_id_class = preg_replace("/_/", "-", $field_var); if (!in_array($field["id"], $fields_applicable) || strpos($field["editable"], "no") === 0) { if (isset($_existing_fields[$field_var]) && (is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var]) || is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))) { $fields[$field_var] = $_existing_fields[$field_var]; } else { // Else ``unset()``. unset($fields[$field_var]); } } else { if ($field["required"] === "yes" && (!isset($_p["ws_plugin__s2member_profile_4bp_" . $field_var]) || !is_array($_p["ws_plugin__s2member_profile_4bp_" . $field_var]) && !is_string($_p["ws_plugin__s2member_profile_4bp_" . $field_var]) || is_array($_p["ws_plugin__s2member_profile_4bp_" . $field_var]) && empty($_p["ws_plugin__s2member_profile_4bp_" . $field_var]) || is_string($_p["ws_plugin__s2member_profile_4bp_" . $field_var]) && !strlen($_p["ws_plugin__s2member_profile_4bp_" . $field_var]))) { if (isset($_existing_fields[$field_var]) && (is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var]) || is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))) { $fields[$field_var] = $_existing_fields[$field_var]; } else { // Else ``unset()``. unset($fields[$field_var]); } } else { if (isset($_p["ws_plugin__s2member_profile_4bp_" . $field_var])) { if (is_array($_p["ws_plugin__s2member_profile_4bp_" . $field_var]) && !empty($_p["ws_plugin__s2member_profile_4bp_" . $field_var]) || is_string($_p["ws_plugin__s2member_profile_4bp_" . $field_var]) && strlen($_p["ws_plugin__s2member_profile_4bp_" . $field_var])) { $fields[$field_var] = $_p["ws_plugin__s2member_profile_4bp_" . $field_var]; } else { // Else ``unset()``. unset($fields[$field_var]); } } else { // Else ``unset()``. unset($fields[$field_var]); } } } } if (!empty($fields)) { update_user_option($user_id, "s2member_custom_fields", $fields); } else { // Else delete their Custom Fields? delete_user_option($user_id, "s2member_custom_fields"); } } } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_handle_profile_modifications_4bp", get_defined_vars()); unset($__refs, $__v); $user = new WP_User($user_id); // Update the ``WP_User`` object for the current User/Member. function_exists("setup_userdata") ? setup_userdata() : null; // Update global vars. } } do_action("ws_plugin__s2member_after_handle_profile_modifications_4bp", get_defined_vars()); return; }
/** * Intersects with ``bp_core_screen_signup()`` in the BuddyPress core. * * This can ONLY be fired through `/register` via BuddyPress. * * @package s2Member\Registrations * @since 140518 * * @attaches-to ``add_action("bp_signup_validate");`` */ public static function custom_registration_field_errors_4bp() { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_before_custom_registration_field_errors_4bp", get_defined_vars()); unset($__refs, $__v); if (!is_admin() && c_ws_plugin__s2member_utils_conds::bp_is_installed() && bp_is_register_page()) { if (in_array("registration", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields_4bp"])) { if (apply_filters("ws_plugin__s2member_custom_registration_fields_4bp_display", true, get_defined_vars())) { if (!empty($GLOBALS["bp"]->signup) && is_object($GLOBALS["bp"]->signup) && !empty($_POST) && is_array($_POST)) { foreach (c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)) as $_key => $_value) { if (strpos($_key, "ws_plugin__s2member_custom_reg_field_") === 0) { $input[str_replace("ws_plugin__s2member_custom_reg_field_", "", $_key)] = $_value; } } $fields_to_validate = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level("auto-detection", "registration", TRUE); $validation_errors = c_ws_plugin__s2member_custom_reg_fields::validation_errors(!empty($input) ? $input : array(), $fields_to_validate); if ($validation_errors) { foreach ($validation_errors as $_field_var => $_error) { $GLOBALS["bp"]->signup->errors["custom_reg_field_" . $_field_var] = $_error; } } unset($_field_var, $_error); } } } } }
/** * Shortcode `[s2Member-Pro-AuthNet-Form /]`. * * @package s2Member\AuthNet * @since 1.5 * * @attaches-to ``add_shortcode("s2Member-Pro-AuthNet-Form");`` * * @param array $attr An array of Attributes. * @param str $content Content inside the Shortcode. * @param str $shortcode The actual Shortcode name itself. * @return str The resulting Form Code, HTML markup. */ public static function sc_authnet_form($attr = FALSE, $content = FALSE, $shortcode = FALSE) { eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_pro_before_sc_authnet_form", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ c_ws_plugin__s2member_no_cache::no_cache_constants(true); /**/ $attr = c_ws_plugin__s2member_utils_strings::trim_qts_deep((array) $attr); /**/ $attr = shortcode_atts(array("ids" => "0", "exp" => "72", "level" => $attr["register"] ? "0" : "1", "ccaps" => "", "desc" => "", "cc" => "USD", "custom" => $_SERVER["HTTP_HOST"], "ta" => "0", "tp" => "0", "tt" => "D", "ra" => "0.01", "rp" => "1", "rt" => "M", "rr" => "1", "modify" => "0", "cancel" => "0", "sp" => "0", "register" => "0", "update" => "0", "accept" => "visa,mastercard,amex,discover", "coupon" => "", "accept_coupons" => "0", "default_country_code" => "US", "captcha" => "", "template" => "", "success" => ""), $attr); /**/ $attr["tt"] = strtoupper($attr["tt"]); $attr["rt"] = strtoupper($attr["rt"]); $attr["rr"] = strtoupper($attr["rr"]); $attr["ccaps"] = strtolower($attr["ccaps"]); $attr["rr"] = $attr["rt"] === "L" ? "BN" : $attr["rr"]; $attr["rr"] = $attr["level"] === "*" ? "BN" : $attr["rr"]; $attr["rr"] = !$attr["tp"] && !$attr["rr"] ? "BN" : $attr["rr"]; $attr["cc"] = "USD"; $attr["default_country_code"] = strtoupper($attr["default_country_code"]); $attr["success"] = c_ws_plugin__s2member_utils_urls::n_amps($attr["success"]); /**/ $attr["accept"] = trim($attr["accept"]) ? preg_split("/[;,]+/", preg_replace("/[\r\n\t\\s]+/", "", strtolower($attr["accept"]))) : array(); $attr["accept"] = empty($attr["accept"]) ? array_merge($attr["accept"], array("visa")) : $attr["accept"]; /**/ $attr["coupon"] = $_GET["s2p-coupon"] ? trim(strip_tags(stripslashes($_GET["s2p-coupon"]))) : $attr["coupon"]; /**/ $attr["singular"] = get_the_ID(); /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_pro_before_sc_authnet_form_after_shortcode_atts", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ if ($attr["cancel"]) { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); /* Obtain a possible response and/or validation error. */ $response = c_ws_plugin__s2member_pro_authnet_responses::authnet_cancellation_response($attr); /* Empty post vars on successful response. */ $_p = $response["response"] && !$response["error"] ? array() : $_p; /* Build the reCaptcha box via JavaScript. */ if ($attr["captcha"]) { $captcha = '<div id="s2member-pro-authnet-cancellation-form-captcha-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-cancellation-form-section s2member-pro-authnet-form-captcha-section s2member-pro-authnet-cancellation-form-captcha-section">' . "\n"; /**/ $captcha .= '<div id="s2member-pro-authnet-cancellation-form-captcha-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-cancellation-form-section-title s2member-pro-authnet-form-captcha-section-title s2member-pro-authnet-cancellation-form-captcha-section-title">' . "\n"; $captcha .= _x("Security Code", "s2member-front", "s2member") . "\n"; $captcha .= '</div>' . "\n"; /**/ $captcha .= '<div id="s2member-pro-authnet-cancellation-form-captcha-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-cancellation-form-div s2member-pro-authnet-form-captcha-div s2member-pro-authnet-cancellation-form-captcha-div">' . "\n"; /**/ $captcha .= '<label id="s2member-pro-authnet-cancellation-form-captcha-label" class="s2member-pro-authnet-form-captcha-label s2member-pro-authnet-cancellation-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr["captcha"], 10) . "\n"; $captcha .= '</label>' . "\n"; /**/ $captcha .= '</div>' . "\n"; /**/ $captcha .= '</div>' . "\n"; } /* Build the hidden input variables. */ $hidden_inputs = '<input type="hidden" name="s2member_pro_authnet_cancellation[nonce]" id="s2member-pro-authnet-cancellation-nonce" value="' . esc_attr(wp_create_nonce("s2member-pro-authnet-cancellation")) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2member_pro_authnet_cancellation[attr]" id="s2member-pro-authnet-cancellation-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; /* Get the form template. */ $custom_template = file_exists(TEMPLATEPATH . "/authnet-cancellation-form.php") ? TEMPLATEPATH . "/authnet-cancellation-form.php" : false; $custom_template = file_exists(TEMPLATEPATH . "/authnet-cancellation-form.html") ? TEMPLATEPATH . "/authnet-cancellation-form.html" : $custom_template; $custom_template = $attr["template"] && file_exists(TEMPLATEPATH . "/" . $attr["template"]) ? TEMPLATEPATH . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && file_exists(WP_CONTENT_DIR . "/" . $attr["template"]) ? WP_CONTENT_DIR . "/" . $attr["template"] : $custom_template; /**/ $code = trim(file_get_contents($custom_template ? $custom_template : dirname(dirname(dirname(dirname(__FILE__)))) . "/templates/forms/authnet-cancellation-form.php")); $code = trim(!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); /* Fill in the action. */ $code = preg_replace("/%%action%%/", c_ws_plugin__s2member_utils_strings::esc_ds(esc_attr($_SERVER["REQUEST_URI"])), $code); /* Fill in the response. */ $code = preg_replace("/%%response%%/", c_ws_plugin__s2member_utils_strings::esc_ds($response["response"]), $code); /* Fill in the description. */ $code = preg_replace("/%%description%%/", c_ws_plugin__s2member_utils_strings::esc_ds($attr["desc"]), $code); /* Fill the captcha section. */ $code = preg_replace("/%%captcha%%/", c_ws_plugin__s2member_utils_strings::esc_ds($captcha), $code); /* Fill hidden inputs. */ $code = preg_replace("/%%hidden_inputs%%/", c_ws_plugin__s2member_utils_strings::esc_ds($hidden_inputs), $code); /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_pro_during_sc_authnet_cancellation_form", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ } else { if ($attr["register"]) { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); /* Obtain a possible response and/or validation error. */ $response = c_ws_plugin__s2member_pro_authnet_responses::authnet_registration_response($attr); /* Empty post vars on successful response. */ $_p = $response["response"] && !$response["error"] ? array() : $_p; /* Build all of the custom fields. */ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { /* Only display Custom Fields if configured. */ if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($attr["level"], "registration")) { $tabindex = 99; /* Start tabindex at 99 ( +1 below = 100 ). */ /**/ $custom_fields = '<div id="s2member-pro-authnet-registration-form-custom-fields-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-registration-form-section s2member-pro-authnet-form-custom-fields-section s2member-pro-authnet-registration-form-custom-fields-section">' . "\n"; /**/ $custom_fields .= '<div id="s2member-pro-authnet-registration-form-custom-fields-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-registration-form-section-title s2member-pro-authnet-form-custom-fields-section-title s2member-pro-authnet-registration-form-custom-fields-section-title">' . "\n"; $custom_fields .= _x("Additional Info", "s2member-front", "s2member") . "\n"; $custom_fields .= '</div>' . "\n"; /**/ foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field) { if (in_array($field["id"], $fields_applicable)) { $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"])); $field_id_class = preg_replace("/_/", "-", $field_var); /**/ if (!empty($field["section"]) && $field["section"] === "yes") { /* Starts a new section? */ $custom_fields .= '<div id="s2member-pro-authnet-registration-form-custom-reg-field-' . $field_id_class . '-divider-section" class="s2member-pro-authnet-form-div s2member-pro-authnet-registration-form-div s2member-pro-authnet-form-custom-reg-field-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . ' s2member-pro-authnet-form-custom-reg-field-' . $field_id_class . '-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . ' s2member-pro-authnet-registration-form-custom-reg-field-' . $field_id_class . '-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . '">' . (!empty($field["sectitle"]) ? $field["sectitle"] : '') . '</div>'; } /**/ $custom_fields .= '<div id="s2member-pro-authnet-registration-form-custom-reg-field-' . $field_id_class . '-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-registration-form-div s2member-pro-authnet-form-custom-reg-field-' . $field_id_class . '-div s2member-pro-authnet-registration-form-custom-reg-field-' . $field_id_class . '-div">' . "\n"; /**/ $custom_fields .= '<label for="s2member-pro-authnet-registration-custom-reg-field-' . esc_attr($field_id_class) . '" id="s2member-pro-authnet-registration-form-custom-reg-field-' . $field_id_class . '-label" class="s2member-pro-authnet-form-custom-reg-field-' . $field_id_class . '-label s2member-pro-authnet-registration-form-custom-reg-field-' . $field_id_class . '-label">' . "\n"; $custom_fields .= '<span' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? ' style="display:none;"' : '') . '>' . $field["label"] . ($field["required"] === "yes" ? ' *' : '') . '</span></label>' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? '' : '<br />') . "\n"; $custom_fields .= c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, "s2member_pro_authnet_registration[custom_fields][", "s2member-pro-authnet-registration-custom-reg-field-", "s2member-pro-authnet-custom-reg-field-" . $field_id_class . " s2member-pro-authnet-registration-custom-reg-field-" . $field_id_class, "", $tabindex = $tabindex + 1, "", $_p, $_p["s2member_pro_authnet_registration"]["custom_fields"][$field_var], "registration"); /**/ $custom_fields .= '</div>' . "\n"; } } /**/ $custom_fields .= '</div>' . "\n"; } } /* Build the reCaptcha box via JavaScript. */ if ($attr["captcha"]) { $captcha = '<div id="s2member-pro-authnet-registration-form-captcha-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-registration-form-section s2member-pro-authnet-form-captcha-section s2member-pro-authnet-registration-form-captcha-section">' . "\n"; /**/ $captcha .= '<div id="s2member-pro-authnet-registration-form-captcha-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-registration-form-section-title s2member-pro-authnet-form-captcha-section-title s2member-pro-authnet-registration-form-captcha-section-title">' . "\n"; $captcha .= _x("Security Code", "s2member-front", "s2member") . "\n"; $captcha .= '</div>' . "\n"; /**/ $captcha .= '<div id="s2member-pro-authnet-registration-form-captcha-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-registration-form-div s2member-pro-authnet-form-captcha-div s2member-pro-authnet-registration-form-captcha-div">' . "\n"; /**/ $captcha .= '<label id="s2member-pro-authnet-registration-form-captcha-label" class="s2member-pro-authnet-form-captcha-label s2member-pro-authnet-registration-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr["captcha"], 200) . "\n"; $captcha .= '</label>' . "\n"; /**/ $captcha .= '</div>' . "\n"; /**/ $captcha .= '</div>' . "\n"; } /* Build the opt-in checkbox. */ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] && c_ws_plugin__s2member_list_servers::list_servers_integrated()) { $opt_in = '<div id="s2member-pro-authnet-registration-form-custom-reg-field-opt-in-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-registration-form-div s2member-pro-authnet-form-custom-reg-field-opt-in-div s2member-pro-authnet-registration-form-custom-reg-field-opt-in-div">' . "\n"; /**/ $opt_in .= '<label for="s2member-pro-authnet-registration-form-custom-reg-field-opt-in" id="s2member-pro-authnet-registration-form-custom-reg-field-opt-in-label" class="s2member-pro-authnet-form-custom-reg-field-opt-in-label s2member-pro-authnet-registration-form-custom-reg-field-opt-in-label">' . "\n"; $opt_in .= '<input type="checkbox" name="s2member_pro_authnet_registration[custom_fields][opt_in]" id="s2member-pro-authnet-registration-form-custom-reg-field-opt-in" class="s2member-pro-authnet-form-custom-reg-field-opt-in s2member-pro-authnet-registration-form-custom-reg-field-opt-in" value="1"' . (empty($_p) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] == 1 || $_p["s2member_pro_authnet_registration"]["custom_fields"]["opt_in"] ? ' checked="checked"' : '') . ' tabindex="300" />' . "\n"; $opt_in .= $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in_label"] . "\n"; $opt_in .= '</label>' . "\n"; /**/ $opt_in .= '</div>' . "\n"; } /* Build the hidden input variables. */ $hidden_inputs = '<input type="hidden" name="s2member_pro_authnet_registration[nonce]" id="s2member-pro-authnet-registration-nonce" value="' . esc_attr(wp_create_nonce("s2member-pro-authnet-registration")) . '" />'; $hidden_inputs .= !$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_names"] ? '<input type="hidden" id="s2member-pro-authnet-registration-names-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= !$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] ? '<input type="hidden" id="s2member-pro-authnet-registration-password-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= '<input type="hidden" name="s2member_pro_authnet_registration[attr]" id="s2member-pro-authnet-registration-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; /* Get the form template. */ $custom_template = file_exists(TEMPLATEPATH . "/authnet-registration-form.php") ? TEMPLATEPATH . "/authnet-registration-form.php" : false; $custom_template = file_exists(TEMPLATEPATH . "/authnet-registration-form.html") ? TEMPLATEPATH . "/authnet-registration-form.html" : $custom_template; $custom_template = $attr["template"] && file_exists(TEMPLATEPATH . "/" . $attr["template"]) ? TEMPLATEPATH . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && file_exists(WP_CONTENT_DIR . "/" . $attr["template"]) ? WP_CONTENT_DIR . "/" . $attr["template"] : $custom_template; /**/ $code = trim(file_get_contents($custom_template ? $custom_template : dirname(dirname(dirname(dirname(__FILE__)))) . "/templates/forms/authnet-registration-form.php")); $code = trim(!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); /* Fill in the action. */ $code = preg_replace("/%%action%%/", c_ws_plugin__s2member_utils_strings::esc_ds(esc_attr($_SERVER["REQUEST_URI"])), $code); /* Fill in the response. */ $code = preg_replace("/%%response%%/", c_ws_plugin__s2member_utils_strings::esc_ds($response["response"]), $code); /* Fill in the description. */ $code = preg_replace("/%%description%%/", c_ws_plugin__s2member_utils_strings::esc_ds($attr["desc"]), $code); /* Fill in the registration section. */ $code = preg_replace("/%%first_name_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(esc_attr($_p["s2member_pro_authnet_registration"]["first_name"])), $code); $code = preg_replace("/%%last_name_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(esc_attr($_p["s2member_pro_authnet_registration"]["last_name"])), $code); $code = preg_replace("/%%email_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_registration"]["email"])), $code); $code = preg_replace("/%%username_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_registration"]["username"])), $code); $code = preg_replace("/%%password1_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_registration"]["password1"])), $code); $code = preg_replace("/%%password2_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_registration"]["password2"])), $code); /* Fill in the custom fields section. */ $code = preg_replace("/%%custom_fields%%/", c_ws_plugin__s2member_utils_strings::esc_ds($custom_fields), $code); /* Fill the captcha section. */ $code = preg_replace("/%%captcha%%/", c_ws_plugin__s2member_utils_strings::esc_ds($captcha), $code); /* Fill the opt-in box. */ $code = preg_replace("/%%opt_in%%/", c_ws_plugin__s2member_utils_strings::esc_ds($opt_in), $code); /* Fill hidden inputs. */ $code = preg_replace("/%%hidden_inputs%%/", c_ws_plugin__s2member_utils_strings::esc_ds($hidden_inputs), $code); /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_pro_during_sc_authnet_registration_form", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ } else { if ($attr["update"]) { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); /* Obtain a possible response and/or validation error. */ $response = c_ws_plugin__s2member_pro_authnet_responses::authnet_update_response($attr); /* Empty post vars on successful response. */ $_p = $response["response"] && !$response["error"] ? array() : $_p; /* Build the list of card type options. */ foreach (array("Visa" => _x("Visa®", "s2member-front", "s2member"), "MasterCard" => _x("MasterCard®", "s2member-front", "s2member"), "Discover" => _x("Discover®", "s2member-front", "s2member"), "Amex" => _x("American Express®", "s2member-front", "s2member")) as $card_type_v => $card_type_l) { $card_type_options .= '<label for="s2member-pro-authnet-update-card-type-' . esc_attr(strtolower($card_type_v)) . '" id="s2member-pro-authnet-update-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label" class="s2member-pro-authnet-form-card-type-label s2member-pro-authnet-update-form-card-type-label s2member-pro-authnet-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label s2member-pro-authnet-update-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label' . (!in_array(strtolower($card_type_v), $attr["accept"]) ? ' disabled' : '') . '">' . "\n" . '<input type="radio" aria-required="true" name="s2member_pro_authnet_update[card_type]" id="s2member-pro-authnet-update-card-type-' . esc_attr(strtolower($card_type_v)) . '" class="s2member-pro-authnet-card-type-' . esc_attr(strtolower($card_type_v)) . ' s2member-pro-authnet-update-card-type-' . esc_attr(strtolower($card_type_v)) . '" value="' . esc_attr($card_type_v) . '"' . (!empty($_p["s2member_pro_authnet_update"]["card_type"]) && in_array(strtolower($_p["s2member_pro_authnet_update"]["card_type"]), $attr["accept"]) && $_p["s2member_pro_authnet_update"]["card_type"] === $card_type_v ? ' checked="checked"' : '') . (!in_array(strtolower($card_type_v), $attr["accept"]) ? ' disabled="disabled"' : '') . ' tabindex="10" />' . "\n" . '</label>'; } /* Build the list of country code options. $country_default_by_currency = false. Authorize.Net® always processes in USD, so the country is empty by default. Authorize.Net® always processes in USD. International transactions are converted automatically through banking institutions. */ $country_default_by_currency = !$_p["s2member_pro_authnet_update"]["country"] && $attr["cc"] === "USD" ? "US" : $country_default_by_currency; $country_default_by_currency = !$_p["s2member_pro_authnet_update"]["country"] && $attr["cc"] === "CAD" ? "CA" : $country_default_by_currency; $country_default_by_currency = !$_p["s2member_pro_authnet_update"]["country"] && $attr["cc"] === "GBP" ? "GB" : $country_default_by_currency; $country_default_by_currency = apply_filters("ws_plugin__s2member_pro_authnet_default_country", false, get_defined_vars()); /**/ $default_country_v = $attr["default_country_code"] ? $attr["default_country_code"] : $country_default_by_currency; /**/ $country_options = '<option value=""></option>'; /* Start with an empty option value. */ /**/ foreach (preg_split("/[\r\n]+/", file_get_contents(dirname(dirname(dirname(dirname(__FILE__)))) . "/iso-3166-1.txt")) as $country) { list($country_l, $country_v) = preg_split("/;/", $country, 2); /**/ if ($country_l && $country_v) { /* Here we also check on the default pre-selected country; as determined above; based on currency. */ $country_options .= '<option value="' . esc_attr(strtoupper($country_v)) . '"' . ($_p["s2member_pro_authnet_update"]["country"] === $country_v || $default_country_v === $country_v ? ' selected="selected"' : '') . '>' . esc_html(ucwords(strtolower($country_l))) . '</option>'; } } /* Build the reCaptcha box via JavaScript. */ if ($attr["captcha"]) { $captcha = '<div id="s2member-pro-authnet-update-form-captcha-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-update-form-section s2member-pro-authnet-form-captcha-section s2member-pro-authnet-update-form-captcha-section">' . "\n"; /**/ $captcha .= '<div id="s2member-pro-authnet-update-form-captcha-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-update-form-section-title s2member-pro-authnet-form-captcha-section-title s2member-pro-authnet-update-form-captcha-section-title">' . "\n"; $captcha .= _x("Security Code", "s2member-front", "s2member") . "\n"; $captcha .= '</div>' . "\n"; /**/ $captcha .= '<div id="s2member-pro-authnet-update-form-captcha-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-update-form-div s2member-pro-authnet-form-captcha-div s2member-pro-authnet-update-form-captcha-div">' . "\n"; /**/ $captcha .= '<label id="s2member-pro-authnet-update-form-captcha-label" class="s2member-pro-authnet-form-captcha-label s2member-pro-authnet-update-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr["captcha"], 200) . "\n"; $captcha .= '</label>' . "\n"; /**/ $captcha .= '</div>' . "\n"; /**/ $captcha .= '</div>' . "\n"; } /* Build the hidden input variables. */ $hidden_inputs = '<input type="hidden" name="s2member_pro_authnet_update[nonce]" id="s2member-pro-authnet-update-nonce" value="' . esc_attr(wp_create_nonce("s2member-pro-authnet-update")) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2member_pro_authnet_update[attr]" id="s2member-pro-authnet-update-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; /* Get the form template. */ $custom_template = file_exists(TEMPLATEPATH . "/authnet-update-form.php") ? TEMPLATEPATH . "/authnet-update-form.php" : false; $custom_template = file_exists(TEMPLATEPATH . "/authnet-update-form.html") ? TEMPLATEPATH . "/authnet-update-form.html" : $custom_template; $custom_template = $attr["template"] && file_exists(TEMPLATEPATH . "/" . $attr["template"]) ? TEMPLATEPATH . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && file_exists(WP_CONTENT_DIR . "/" . $attr["template"]) ? WP_CONTENT_DIR . "/" . $attr["template"] : $custom_template; /**/ $code = trim(file_get_contents($custom_template ? $custom_template : dirname(dirname(dirname(dirname(__FILE__)))) . "/templates/forms/authnet-update-form.php")); $code = trim(!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); /* Fill in the action. */ $code = preg_replace("/%%action%%/", c_ws_plugin__s2member_utils_strings::esc_ds(esc_attr($_SERVER["REQUEST_URI"])), $code); /* Fill in the response. */ $code = preg_replace("/%%response%%/", c_ws_plugin__s2member_utils_strings::esc_ds($response["response"]), $code); /* Fill in the description. */ $code = preg_replace("/%%description%%/", c_ws_plugin__s2member_utils_strings::esc_ds($attr["desc"]), $code); /* Fill in the billing method section. */ $code = preg_replace("/%%card_type_options%%/", c_ws_plugin__s2member_utils_strings::esc_ds($card_type_options), $code); $code = preg_replace("/%%card_number_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_update"]["card_number"])), $code); $code = preg_replace("/%%card_expiration_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_update"]["card_expiration"])), $code); $code = preg_replace("/%%card_verification_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_update"]["card_verification"])), $code); $code = preg_replace("/%%card_start_date_issue_number_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_update"]["card_start_date_issue_number"])), $code); /* Fill in the billing address section. */ $code = preg_replace("/%%street_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_update"]["street"])), $code); $code = preg_replace("/%%city_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_update"]["city"])), $code); $code = preg_replace("/%%state_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_update"]["state"])), $code); $code = preg_replace("/%%country_options%%/", c_ws_plugin__s2member_utils_strings::esc_ds($country_options), $code); $code = preg_replace("/%%zip_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_update"]["zip"])), $code); /* Fill the captcha section. */ $code = preg_replace("/%%captcha%%/", c_ws_plugin__s2member_utils_strings::esc_ds($captcha), $code); /* Fill hidden inputs. */ $code = preg_replace("/%%hidden_inputs%%/", c_ws_plugin__s2member_utils_strings::esc_ds($hidden_inputs), $code); /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_pro_during_sc_authnet_update_form", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ } else { if ($attr["sp"]) { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); /* Configure internal attributes. */ $attr["sp_ids_exp"] = "sp:" . $attr["ids"] . ":" . $attr["exp"]; /* Combined `sp:ids:expiration hours`. */ $attr["coupon"] = $_p["s2member_pro_authnet_sp_checkout"]["coupon"] ? $_p["s2member_pro_authnet_sp_checkout"]["coupon"] : $attr["coupon"]; /* Obtain a possible response and/or validation error. */ $response = c_ws_plugin__s2member_pro_authnet_responses::authnet_sp_checkout_response($attr); /* Empty post vars on successful response. */ $_p = $response["response"] && !$response["error"] ? array() : $_p; /* Build the list of card type options. */ foreach (array("Visa" => _x("Visa®", "s2member-front", "s2member"), "MasterCard" => _x("MasterCard®", "s2member-front", "s2member"), "Discover" => _x("Discover®", "s2member-front", "s2member"), "Amex" => _x("American Express®", "s2member-front", "s2member")) as $card_type_v => $card_type_l) { $card_type_options .= '<label for="s2member-pro-authnet-sp-checkout-card-type-' . esc_attr(strtolower($card_type_v)) . '" id="s2member-pro-authnet-sp-checkout-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label" class="s2member-pro-authnet-form-card-type-label s2member-pro-authnet-sp-checkout-form-card-type-label s2member-pro-authnet-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label s2member-pro-authnet-sp-checkout-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label' . (!in_array(strtolower($card_type_v), $attr["accept"]) ? ' disabled' : '') . '">' . "\n" . '<input type="radio" aria-required="true" name="s2member_pro_authnet_sp_checkout[card_type]" id="s2member-pro-authnet-sp-checkout-card-type-' . esc_attr(strtolower($card_type_v)) . '" class="s2member-pro-authnet-card-type-' . esc_attr(strtolower($card_type_v)) . ' s2member-pro-authnet-sp-checkout-card-type-' . esc_attr(strtolower($card_type_v)) . '" value="' . esc_attr($card_type_v) . '"' . (!empty($_p["s2member_pro_authnet_sp_checkout"]["card_type"]) && in_array(strtolower($_p["s2member_pro_authnet_sp_checkout"]["card_type"]), $attr["accept"]) && $_p["s2member_pro_authnet_sp_checkout"]["card_type"] === $card_type_v ? ' checked="checked"' : '') . (!in_array(strtolower($card_type_v), $attr["accept"]) ? ' disabled="disabled"' : '') . ' tabindex="100" />' . "\n" . '</label>'; } /* Build the list of country code options. $country_default_by_currency = false. Authorize.Net® always processes in USD, so the country is empty by default. Authorize.Net® always processes in USD. International transactions are converted automatically through banking institutions. */ $country_default_by_currency = !$_p["s2member_pro_authnet_sp_checkout"]["country"] && $attr["cc"] === "USD" ? "US" : $country_default_by_currency; $country_default_by_currency = !$_p["s2member_pro_authnet_sp_checkout"]["country"] && $attr["cc"] === "CAD" ? "CA" : $country_default_by_currency; $country_default_by_currency = !$_p["s2member_pro_authnet_sp_checkout"]["country"] && $attr["cc"] === "GBP" ? "GB" : $country_default_by_currency; $country_default_by_currency = apply_filters("ws_plugin__s2member_pro_authnet_default_country", false, get_defined_vars()); /**/ $default_country_v = $attr["default_country_code"] ? $attr["default_country_code"] : $country_default_by_currency; /**/ $country_options = '<option value=""></option>'; /* Start with an empty option value. */ /**/ foreach (preg_split("/[\r\n]+/", file_get_contents(dirname(dirname(dirname(dirname(__FILE__)))) . "/iso-3166-1.txt")) as $country) { list($country_l, $country_v) = preg_split("/;/", $country, 2); /**/ if ($country_l && $country_v) { /* Here we also check on the default pre-selected country; as determined above; based on currency. */ $country_options .= '<option value="' . esc_attr(strtoupper($country_v)) . '"' . ($_p["s2member_pro_authnet_sp_checkout"]["country"] === $country_v || $default_country_v === $country_v ? ' selected="selected"' : '') . '>' . esc_html(ucwords(strtolower($country_l))) . '</option>'; } } /* Build the reCaptcha box via JavaScript. */ if ($attr["captcha"]) { $captcha = '<div id="s2member-pro-authnet-sp-checkout-form-captcha-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-sp-checkout-form-section s2member-pro-authnet-form-captcha-section s2member-pro-authnet-sp-checkout-form-captcha-section">' . "\n"; /**/ $captcha .= '<div id="s2member-pro-authnet-sp-checkout-form-captcha-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-sp-checkout-form-section-title s2member-pro-authnet-form-captcha-section-title s2member-pro-authnet-sp-checkout-form-captcha-section-title">' . "\n"; $captcha .= _x("Security Code", "s2member-front", "s2member") . "\n"; $captcha .= '</div>' . "\n"; /**/ $captcha .= '<div id="s2member-pro-authnet-sp-checkout-form-captcha-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-sp-checkout-form-div s2member-pro-authnet-form-captcha-div s2member-pro-authnet-sp-checkout-form-captcha-div">' . "\n"; /**/ $captcha .= '<label id="s2member-pro-authnet-sp-checkout-form-captcha-label" class="s2member-pro-authnet-form-captcha-label s2member-pro-authnet-sp-checkout-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr["captcha"], 300) . "\n"; $captcha .= '</label>' . "\n"; /**/ $captcha .= '</div>' . "\n"; /**/ $captcha .= '</div>' . "\n"; } /* Build the opt-in checkbox. */ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] && c_ws_plugin__s2member_list_servers::list_servers_integrated()) { $opt_in = '<div id="s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-sp-checkout-form-div s2member-pro-authnet-form-custom-reg-field-opt-in-div s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in-div">' . "\n"; /**/ $opt_in .= '<label for="s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in" id="s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in-label" class="s2member-pro-authnet-form-custom-reg-field-opt-in-label s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in-label">' . "\n"; $opt_in .= '<input type="checkbox" name="s2member_pro_authnet_sp_checkout[custom_fields][opt_in]" id="s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in" class="s2member-pro-authnet-form-custom-reg-field-opt-in s2member-pro-authnet-sp-checkout-form-custom-reg-field-opt-in" value="1"' . (empty($_p) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] == 1 || $_p["s2member_pro_authnet_sp_checkout"]["custom_fields"]["opt_in"] ? ' checked="checked"' : '') . ' tabindex="400" />' . "\n"; $opt_in .= $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in_label"] . "\n"; $opt_in .= '</label>' . "\n"; /**/ $opt_in .= '</div>' . "\n"; } /* Build the hidden input variables. */ $hidden_inputs = '<input type="hidden" name="s2member_pro_authnet_sp_checkout[nonce]" id="s2member-pro-authnet-sp-checkout-nonce" value="' . esc_attr(wp_create_nonce("s2member-pro-authnet-sp-checkout")) . '" />'; $hidden_inputs .= !$attr["accept_coupons"] ? '<input type="hidden" id="s2member-pro-authnet-sp-checkout-coupons-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= !c_ws_plugin__s2member_pro_authnet_utilities::authnet_tax_may_apply() ? '<input type="hidden" id="s2member-pro-authnet-sp-checkout-tax-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= '<input type="hidden" name="s2member_pro_authnet_sp_checkout[attr]" id="s2member-pro-authnet-sp-checkout-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; /* Get the form template. */ $custom_template = file_exists(TEMPLATEPATH . "/authnet-sp-checkout-form.php") ? TEMPLATEPATH . "/authnet-sp-checkout-form.php" : false; $custom_template = file_exists(TEMPLATEPATH . "/authnet-sp-checkout-form.html") ? TEMPLATEPATH . "/authnet-sp-checkout-form.html" : $custom_template; $custom_template = $attr["template"] && file_exists(TEMPLATEPATH . "/" . $attr["template"]) ? TEMPLATEPATH . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && file_exists(WP_CONTENT_DIR . "/" . $attr["template"]) ? WP_CONTENT_DIR . "/" . $attr["template"] : $custom_template; /**/ $code = trim(file_get_contents($custom_template ? $custom_template : dirname(dirname(dirname(dirname(__FILE__)))) . "/templates/forms/authnet-sp-checkout-form.php")); $code = trim(!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); /* Fill in the action. */ $code = preg_replace("/%%action%%/", c_ws_plugin__s2member_utils_strings::esc_ds(esc_attr($_SERVER["REQUEST_URI"])), $code); /* Fill in the response. */ $code = preg_replace("/%%response%%/", c_ws_plugin__s2member_utils_strings::esc_ds($response["response"]), $code); /* Fill in the description. */ $code = preg_replace("/%%description%%/", c_ws_plugin__s2member_utils_strings::esc_ds($attr["desc"]), $code); /* Fill in the coupon value. */ $code = preg_replace("/%%coupon_response%%/", c_ws_plugin__s2member_utils_strings::esc_ds(c_ws_plugin__s2member_pro_authnet_utilities::authnet_apply_coupon($attr, $attr["coupon"], "response", array("affiliates-1px-response"))), $code); $code = preg_replace("/%%coupon_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($attr["coupon"])), $code); /* Fill in the registration section. */ $code = preg_replace("/%%first_name_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(esc_attr($_p["s2member_pro_authnet_sp_checkout"]["first_name"])), $code); $code = preg_replace("/%%last_name_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(esc_attr($_p["s2member_pro_authnet_sp_checkout"]["last_name"])), $code); $code = preg_replace("/%%email_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_sp_checkout"]["email"])), $code); /* Fill in the billing method section. */ $code = preg_replace("/%%card_type_options%%/", c_ws_plugin__s2member_utils_strings::esc_ds($card_type_options), $code); $code = preg_replace("/%%card_number_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_sp_checkout"]["card_number"])), $code); $code = preg_replace("/%%card_expiration_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_sp_checkout"]["card_expiration"])), $code); $code = preg_replace("/%%card_verification_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_sp_checkout"]["card_verification"])), $code); $code = preg_replace("/%%card_start_date_issue_number_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_sp_checkout"]["card_start_date_issue_number"])), $code); /* Fill in the billing address section. */ $code = preg_replace("/%%street_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_sp_checkout"]["street"])), $code); $code = preg_replace("/%%city_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_sp_checkout"]["city"])), $code); $code = preg_replace("/%%state_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_sp_checkout"]["state"])), $code); $code = preg_replace("/%%country_options%%/", c_ws_plugin__s2member_utils_strings::esc_ds($country_options), $code); $code = preg_replace("/%%zip_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_sp_checkout"]["zip"])), $code); /* Fill the captcha section. */ $code = preg_replace("/%%captcha%%/", c_ws_plugin__s2member_utils_strings::esc_ds($captcha), $code); /* Fill the opt-in box. */ $code = preg_replace("/%%opt_in%%/", c_ws_plugin__s2member_utils_strings::esc_ds($opt_in), $code); /* Fill hidden inputs. */ $code = preg_replace("/%%hidden_inputs%%/", c_ws_plugin__s2member_utils_strings::esc_ds($hidden_inputs), $code); /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__s2member_pro_during_sc_authnet_sp_form", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ } else { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); /* Configure internal attributes. */ $attr["level_ccaps_eotper"] = $attr["rr"] === "BN" && $attr["rt"] !== "L" ? $attr["level"] . ":" . $attr["ccaps"] . ":" . $attr["rp"] . " " . $attr["rt"] : $attr["level"] . ":" . $attr["ccaps"]; $attr["level_ccaps_eotper"] = rtrim($attr["level_ccaps_eotper"], ":"); /* Clean any trailing separators from this string. */ $attr["coupon"] = $_p["s2member_pro_authnet_checkout"]["coupon"] ? $_p["s2member_pro_authnet_checkout"]["coupon"] : $attr["coupon"]; /* Obtain a possible response and/or validation error. */ $response = c_ws_plugin__s2member_pro_authnet_responses::authnet_checkout_response($attr); /* Empty post vars on successful response. */ $_p = $response["response"] && !$response["error"] ? array() : $_p; /* Build the list of card type options. */ foreach (array("Visa" => _x("Visa®", "s2member-front", "s2member"), "MasterCard" => _x("MasterCard®", "s2member-front", "s2member"), "Discover" => _x("Discover®", "s2member-front", "s2member"), "Amex" => _x("American Express®", "s2member-front", "s2member")) as $card_type_v => $card_type_l) { $card_type_options .= '<label for="s2member-pro-authnet-checkout-card-type-' . esc_attr(strtolower($card_type_v)) . '" id="s2member-pro-authnet-checkout-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label" class="s2member-pro-authnet-form-card-type-label s2member-pro-authnet-checkout-form-card-type-label s2member-pro-authnet-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label s2member-pro-authnet-checkout-form-card-type-' . esc_attr(strtolower($card_type_v)) . '-label' . (!in_array(strtolower($card_type_v), $attr["accept"]) ? ' disabled' : '') . '">' . "\n" . '<input type="radio" aria-required="true" name="s2member_pro_authnet_checkout[card_type]" id="s2member-pro-authnet-checkout-card-type-' . esc_attr(strtolower($card_type_v)) . '" class="s2member-pro-authnet-card-type-' . esc_attr(strtolower($card_type_v)) . ' s2member-pro-authnet-checkout-card-type-' . esc_attr(strtolower($card_type_v)) . '" value="' . esc_attr($card_type_v) . '"' . (!empty($_p["s2member_pro_authnet_checkout"]["card_type"]) && in_array(strtolower($_p["s2member_pro_authnet_checkout"]["card_type"]), $attr["accept"]) && $_p["s2member_pro_authnet_checkout"]["card_type"] === $card_type_v ? ' checked="checked"' : '') . (!in_array(strtolower($card_type_v), $attr["accept"]) ? ' disabled="disabled"' : '') . ' tabindex="200" />' . "\n" . '</label>'; } /* Build the list of country code options. $country_default_by_currency = false. Authorize.Net® always processes in USD, so the country is empty by default. Authorize.Net® always processes in USD. International transactions are converted automatically through banking institutions. */ $country_default_by_currency = !$_p["s2member_pro_authnet_checkout"]["country"] && $attr["cc"] === "USD" ? "US" : $country_default_by_currency; $country_default_by_currency = !$_p["s2member_pro_authnet_checkout"]["country"] && $attr["cc"] === "CAD" ? "CA" : $country_default_by_currency; $country_default_by_currency = !$_p["s2member_pro_authnet_checkout"]["country"] && $attr["cc"] === "GBP" ? "GB" : $country_default_by_currency; $country_default_by_currency = apply_filters("ws_plugin__s2member_pro_authnet_default_country", false, get_defined_vars()); /**/ $default_country_v = $attr["default_country_code"] ? $attr["default_country_code"] : $country_default_by_currency; /**/ $country_options = '<option value=""></option>'; /* Start with an empty option value. */ /**/ foreach (preg_split("/[\r\n]+/", file_get_contents(dirname(dirname(dirname(dirname(__FILE__)))) . "/iso-3166-1.txt")) as $country) { list($country_l, $country_v) = preg_split("/;/", $country, 2); /**/ if ($country_l && $country_v) { /* Here we also check on the default pre-selected country; as determined above; based on currency. */ $country_options .= '<option value="' . esc_attr(strtoupper($country_v)) . '"' . ($_p["s2member_pro_authnet_checkout"]["country"] === $country_v || $default_country_v === $country_v ? ' selected="selected"' : '') . '>' . esc_html(ucwords(strtolower($country_l))) . '</option>'; } } /* Build all of the custom fields. */ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { /* Only display Custom Fields if configured. */ if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($attr["level"] === "*" ? "auto-detection" : $attr["level"], "registration")) { $tabindex = 99; /* Start tabindex at 99 ( +1 below = 100 ). */ /**/ $custom_fields = '<div id="s2member-pro-authnet-checkout-form-custom-fields-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-checkout-form-section s2member-pro-authnet-form-custom-fields-section s2member-pro-authnet-checkout-form-custom-fields-section">' . "\n"; /**/ $custom_fields .= '<div id="s2member-pro-authnet-checkout-form-custom-fields-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-checkout-form-section-title s2member-pro-authnet-form-custom-fields-section-title s2member-pro-authnet-checkout-form-custom-fields-section-title">' . "\n"; $custom_fields .= _x("Additional Info", "s2member-front", "s2member") . "\n"; $custom_fields .= '</div>' . "\n"; /**/ foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field) { if (in_array($field["id"], $fields_applicable)) { $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"])); $field_id_class = preg_replace("/_/", "-", $field_var); /**/ if (!empty($field["section"]) && $field["section"] === "yes") { /* Starts a new section? */ $custom_fields .= '<div id="s2member-pro-authnet-checkout-form-custom-reg-field-' . $field_id_class . '-divider-section" class="s2member-pro-authnet-form-div s2member-pro-authnet-checkout-form-div s2member-pro-authnet-form-custom-reg-field-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . ' s2member-pro-authnet-form-custom-reg-field-' . $field_id_class . '-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . ' s2member-pro-authnet-checkout-form-custom-reg-field-' . $field_id_class . '-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . '">' . (!empty($field["sectitle"]) ? $field["sectitle"] : '') . '</div>'; } /**/ $custom_fields .= '<div id="s2member-pro-authnet-checkout-form-custom-reg-field-' . $field_id_class . '-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-checkout-form-div s2member-pro-authnet-form-custom-reg-field-' . $field_id_class . '-div s2member-pro-authnet-checkout-form-custom-reg-field-' . $field_id_class . '-div">' . "\n"; /**/ $custom_fields .= '<label for="s2member-pro-authnet-checkout-custom-reg-field-' . esc_attr($field_id_class) . '" id="s2member-pro-authnet-checkout-form-custom-reg-field-' . $field_id_class . '-label" class="s2member-pro-authnet-form-custom-reg-field-' . $field_id_class . '-label s2member-pro-authnet-checkout-form-custom-reg-field-' . $field_id_class . '-label">' . "\n"; $custom_fields .= '<span' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? ' style="display:none;"' : '') . '>' . $field["label"] . ($field["required"] === "yes" ? ' *' : '') . '</span></label>' . (preg_match("/^(checkbox|pre_checkbox)\$/", $field["type"]) ? '' : '<br />') . "\n"; $custom_fields .= c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, "s2member_pro_authnet_checkout[custom_fields][", "s2member-pro-authnet-checkout-custom-reg-field-", "s2member-pro-authnet-custom-reg-field-" . $field_id_class . " s2member-pro-authnet-checkout-custom-reg-field-" . $field_id_class, "", $tabindex = $tabindex + 1, "", $_p, $_p["s2member_pro_authnet_checkout"]["custom_fields"][$field_var], "registration"); /**/ $custom_fields .= '</div>' . "\n"; } } /**/ $custom_fields .= '</div>' . "\n"; } } /* Build the reCaptcha box via JavaScript. */ if ($attr["captcha"]) { $captcha = '<div id="s2member-pro-authnet-checkout-form-captcha-section" class="s2member-pro-authnet-form-section s2member-pro-authnet-checkout-form-section s2member-pro-authnet-form-captcha-section s2member-pro-authnet-checkout-form-captcha-section">' . "\n"; /**/ $captcha .= '<div id="s2member-pro-authnet-checkout-form-captcha-section-title" class="s2member-pro-authnet-form-section-title s2member-pro-authnet-checkout-form-section-title s2member-pro-authnet-form-captcha-section-title s2member-pro-authnet-checkout-form-captcha-section-title">' . "\n"; $captcha .= _x("Security Code", "s2member-front", "s2member") . "\n"; $captcha .= '</div>' . "\n"; /**/ $captcha .= '<div id="s2member-pro-authnet-checkout-form-captcha-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-checkout-form-div s2member-pro-authnet-form-captcha-div s2member-pro-authnet-checkout-form-captcha-div">' . "\n"; /**/ $captcha .= '<label id="s2member-pro-authnet-checkout-form-captcha-label" class="s2member-pro-authnet-form-captcha-label s2member-pro-authnet-checkout-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr["captcha"], 400) . "\n"; $captcha .= '</label>' . "\n"; /**/ $captcha .= '</div>' . "\n"; /**/ $captcha .= '</div>' . "\n"; } /* Build the opt-in checkbox. */ if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] && c_ws_plugin__s2member_list_servers::list_servers_integrated()) { $opt_in = '<div id="s2member-pro-authnet-checkout-form-custom-reg-field-opt-in-div" class="s2member-pro-authnet-form-div s2member-pro-authnet-checkout-form-div s2member-pro-authnet-form-custom-reg-field-opt-in-div s2member-pro-authnet-checkout-form-custom-reg-field-opt-in-div">' . "\n"; /**/ $opt_in .= '<label for="s2member-pro-authnet-checkout-form-custom-reg-field-opt-in" id="s2member-pro-authnet-checkout-form-custom-reg-field-opt-in-label" class="s2member-pro-authnet-form-custom-reg-field-opt-in-label s2member-pro-authnet-checkout-form-custom-reg-field-opt-in-label">' . "\n"; $opt_in .= '<input type="checkbox" name="s2member_pro_authnet_checkout[custom_fields][opt_in]" id="s2member-pro-authnet-checkout-form-custom-reg-field-opt-in" class="s2member-pro-authnet-form-custom-reg-field-opt-in s2member-pro-authnet-checkout-form-custom-reg-field-opt-in" value="1"' . (empty($_p) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in"] == 1 || $_p["s2member_pro_authnet_checkout"]["custom_fields"]["opt_in"] ? ' checked="checked"' : '') . ' tabindex="500" />' . "\n"; $opt_in .= $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_opt_in_label"] . "\n"; $opt_in .= '</label>' . "\n"; /**/ $opt_in .= '</div>' . "\n"; } /* Build the hidden input variables. */ $hidden_inputs = '<input type="hidden" name="s2member_pro_authnet_checkout[nonce]" id="s2member-pro-authnet-checkout-nonce" value="' . esc_attr(wp_create_nonce("s2member-pro-authnet-checkout")) . '" />'; $hidden_inputs .= !$attr["accept_coupons"] ? '<input type="hidden" id="s2member-pro-authnet-checkout-coupons-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= !$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] ? '<input type="hidden" id="s2member-pro-authnet-checkout-password-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= !c_ws_plugin__s2member_pro_authnet_utilities::authnet_tax_may_apply() ? '<input type="hidden" id="s2member-pro-authnet-checkout-tax-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= '<input type="hidden" name="s2member_pro_authnet_checkout[attr]" id="s2member-pro-authnet-checkout-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; /* Get the form template. */ $custom_template = file_exists(TEMPLATEPATH . "/authnet-checkout-form.php") ? TEMPLATEPATH . "/authnet-checkout-form.php" : false; $custom_template = file_exists(TEMPLATEPATH . "/authnet-checkout-form.html") ? TEMPLATEPATH . "/authnet-checkout-form.html" : $custom_template; $custom_template = $attr["template"] && file_exists(TEMPLATEPATH . "/" . $attr["template"]) ? TEMPLATEPATH . "/" . $attr["template"] : $custom_template; $custom_template = $attr["template"] && file_exists(WP_CONTENT_DIR . "/" . $attr["template"]) ? WP_CONTENT_DIR . "/" . $attr["template"] : $custom_template; /**/ $code = trim(file_get_contents($custom_template ? $custom_template : dirname(dirname(dirname(dirname(__FILE__)))) . "/templates/forms/authnet-checkout-form.php")); $code = trim(!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); /* Fill in the action. */ $code = preg_replace("/%%action%%/", c_ws_plugin__s2member_utils_strings::esc_ds(esc_attr($_SERVER["REQUEST_URI"])), $code); /* Fill in the response. */ $code = preg_replace("/%%response%%/", c_ws_plugin__s2member_utils_strings::esc_ds($response["response"]), $code); /* Fill in the description. */ $code = preg_replace("/%%description%%/", c_ws_plugin__s2member_utils_strings::esc_ds($attr["desc"]), $code); /* Fill in the coupon value. */ $code = preg_replace("/%%coupon_response%%/", c_ws_plugin__s2member_utils_strings::esc_ds(c_ws_plugin__s2member_pro_authnet_utilities::authnet_apply_coupon($attr, $attr["coupon"], "response", array("affiliates-1px-response"))), $code); $code = preg_replace("/%%coupon_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($attr["coupon"])), $code); /* Fill in the registration section. */ $code = preg_replace("/%%first_name_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(esc_attr($_p["s2member_pro_authnet_checkout"]["first_name"])), $code); $code = preg_replace("/%%last_name_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(esc_attr($_p["s2member_pro_authnet_checkout"]["last_name"])), $code); $code = preg_replace("/%%email_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_checkout"]["email"])), $code); $code = preg_replace("/%%username_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_checkout"]["username"])), $code); $code = preg_replace("/%%password1_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_checkout"]["password1"])), $code); $code = preg_replace("/%%password2_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_checkout"]["password2"])), $code); /* Fill in the custom fields section. */ $code = preg_replace("/%%custom_fields%%/", c_ws_plugin__s2member_utils_strings::esc_ds($custom_fields), $code); /* Fill in the billing method section. */ $code = preg_replace("/%%card_type_options%%/", c_ws_plugin__s2member_utils_strings::esc_ds($card_type_options), $code); $code = preg_replace("/%%card_number_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_checkout"]["card_number"])), $code); $code = preg_replace("/%%card_expiration_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_checkout"]["card_expiration"])), $code); $code = preg_replace("/%%card_verification_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_checkout"]["card_verification"])), $code); $code = preg_replace("/%%card_start_date_issue_number_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_checkout"]["card_start_date_issue_number"])), $code); /* Fill in the billing address section. */ $code = preg_replace("/%%street_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_checkout"]["street"])), $code); $code = preg_replace("/%%city_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_checkout"]["city"])), $code); $code = preg_replace("/%%state_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_checkout"]["state"])), $code); $code = preg_replace("/%%country_options%%/", c_ws_plugin__s2member_utils_strings::esc_ds($country_options), $code); $code = preg_replace("/%%zip_value%%/", c_ws_plugin__s2member_utils_strings::esc_ds(format_to_edit($_p["s2member_pro_authnet_checkout"]["zip"])), $code); /* Fill the captcha section. */ $code = preg_replace("/%%captcha%%/", c_ws_plugin__s2member_utils_strings::esc_ds($captcha), $code); /* Fill the opt-in box. */ $code = preg_replace("/%%opt_in%%/", c_ws_plugin__s2member_utils_strings::esc_ds($opt_in), $code); /* Fill hidden inputs. */ $code = preg_replace("/%%hidden_inputs%%/", c_ws_plugin__s2member_utils_strings::esc_ds($hidden_inputs), $code); /**/ eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); $attr["modify"] ? do_action("ws_plugin__s2member_pro_during_sc_authnet_modification_form", get_defined_vars()) : do_action("ws_plugin__s2member_pro_during_sc_authnet_form", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ } } } } /**/ return apply_filters("ws_plugin__s2member_pro_sc_authnet_form", $code, get_defined_vars()); }
/** * Handles Profile modifications for Custom Fields *(created with s2Member)*; integrated with BuddyPress. * * @package s2Member\Profiles * @since 3.5 * * @attaches-to ``add_action('xprofile_updated_profile');`` */ public static function handle_profile_modifications_4bp() { global $current_user; // We'll need to update this global object. $user =& $current_user; // Shorter reference to the ``$current_user`` object. do_action('ws_plugin__s2member_before_handle_profile_modifications_4bp', get_defined_vars()); if (!empty($_POST['ws_plugin__s2member_profile_4bp_save']) && is_user_logged_in() && is_object($user) && !empty($user->ID) && ($user_id = $user->ID)) { if (($nonce = $_POST['ws_plugin__s2member_profile_4bp_save']) && wp_verify_nonce($nonce, 'ws-plugin--s2member-profile-4bp-save')) { $GLOBALS['ws_plugin__s2member_profile_4bp_saved'] = TRUE; // Global flag as having been saved/updated successfully. $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); // Clean ``$_POST`` vars. if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields']) { if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level('auto-detection', 'profile')) { $fields = array(); // Initialize the array of fields. $_existing_fields = get_user_option('s2member_custom_fields', $user_id); foreach (json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], TRUE) as $field) { $field_var = preg_replace('/[^a-z0-9]/i', '_', strtolower($field['id'])); $field_id_class = preg_replace('/_/', '-', $field_var); if (!in_array($field['id'], $fields_applicable) || strpos($field['editable'], 'no') === 0) { if (isset($_existing_fields[$field_var]) && (is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var]) || is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))) { $fields[$field_var] = $_existing_fields[$field_var]; } else { unset($fields[$field_var]); } } else { if ($field['required'] === 'yes' && (!isset($_p['ws_plugin__s2member_profile_4bp_' . $field_var]) || !is_array($_p['ws_plugin__s2member_profile_4bp_' . $field_var]) && !is_string($_p['ws_plugin__s2member_profile_4bp_' . $field_var]) || is_array($_p['ws_plugin__s2member_profile_4bp_' . $field_var]) && empty($_p['ws_plugin__s2member_profile_4bp_' . $field_var]) || is_string($_p['ws_plugin__s2member_profile_4bp_' . $field_var]) && !strlen($_p['ws_plugin__s2member_profile_4bp_' . $field_var])) || isset($_p['ws_plugin__s2member_profile_4bp_' . $field_var]) && c_ws_plugin__s2member_custom_reg_fields::validation_errors(array($field_var => $_p['ws_plugin__s2member_profile_4bp_' . $field_var]), array($field))) { if (isset($_existing_fields[$field_var]) && (is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var]) || is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))) { $fields[$field_var] = $_existing_fields[$field_var]; } else { unset($fields[$field_var]); } } else { if (isset($_p['ws_plugin__s2member_profile_4bp_' . $field_var])) { if ((is_array($_p['ws_plugin__s2member_profile_4bp_' . $field_var]) && !empty($_p['ws_plugin__s2member_profile_4bp_' . $field_var]) || is_string($_p['ws_plugin__s2member_profile_4bp_' . $field_var]) && strlen($_p['ws_plugin__s2member_profile_4bp_' . $field_var])) && !c_ws_plugin__s2member_custom_reg_fields::validation_errors(array($field_var => $_p['ws_plugin__s2member_profile_4bp_' . $field_var]), array($field))) { $fields[$field_var] = $_p['ws_plugin__s2member_profile_4bp_' . $field_var]; } else { unset($fields[$field_var]); } } else { unset($fields[$field_var]); } } } } if (!empty($fields)) { update_user_option($user_id, 's2member_custom_fields', $fields); } else { // Else delete their Custom Fields? delete_user_option($user_id, 's2member_custom_fields'); } } } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_handle_profile_modifications_4bp', get_defined_vars()); unset($__refs, $__v); clean_user_cache($user_id); wp_cache_delete($user_id, 'user_meta'); $user = new WP_User($user_id); // Fresh object. if (function_exists('setup_userdata')) { setup_userdata(); } $role = c_ws_plugin__s2member_user_access::user_access_role($user); $level = c_ws_plugin__s2member_user_access::user_access_role_to_level($role); if (!empty($_p['ws_plugin__s2member_profile_4bp_opt_in']) && $role && $level >= 0) { c_ws_plugin__s2member_list_servers::process_list_servers($role, $level, $user->user_login, '', $user->user_email, $user->first_name, $user->last_name, $_SERVER['REMOTE_ADDR'], TRUE, TRUE, $user_id); } else { if ($role && $level >= 0 && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in']) { c_ws_plugin__s2member_list_servers::process_list_server_removals($role, $level, $user->user_login, '', $user->user_email, $user->first_name, $user->last_name, $_SERVER['REMOTE_ADDR'], TRUE, $user_id); } } } } do_action('ws_plugin__s2member_after_handle_profile_modifications_4bp', get_defined_vars()); }
/** * Handles Profile modifications. * * @package s2Member\Profiles * @since 3.5 * * @attaches-to ``add_action('init');`` */ public static function handle_profile_modifications() { global $current_user; // We'll need to update this global object. $user =& $current_user; // Shorter reference to the $current_user object. do_action('ws_plugin__s2member_before_handle_profile_modifications', get_defined_vars()); if (!empty($_POST['ws_plugin__s2member_profile_save']) && is_user_logged_in() && is_object($user) && !empty($user->ID) && ($user_id = $user->ID)) { if (($nonce = $_POST['ws_plugin__s2member_profile_save']) && wp_verify_nonce($nonce, 'ws-plugin--s2member-profile-save')) { $GLOBALS['ws_plugin__s2member_profile_saved'] = TRUE; // Global flag as having been saved/updated successfully. $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); // Clean ``$_POST`` vars. $userdata['ID'] = $user_id; // Needed for database update. if (!empty($_p['ws_plugin__s2member_profile_email'])) { if (is_email($_p['ws_plugin__s2member_profile_email']) && !email_exists($_p['ws_plugin__s2member_profile_email'])) { $userdata['user_email'] = $_p['ws_plugin__s2member_profile_email']; if (strcasecmp($userdata['user_email'], $user->user_email) !== 0) { $email_change = TRUE; } } } if (!empty($_p['ws_plugin__s2member_profile_password1'])) { if ($user->user_login !== 'demo') { // No pass change on demo! $userdata['user_pass'] = $_p['ws_plugin__s2member_profile_password1']; } } if (!empty($_p['ws_plugin__s2member_profile_first_name'])) { $userdata['first_name'] = $_p['ws_plugin__s2member_profile_first_name']; } if (!empty($_p['ws_plugin__s2member_profile_display_name'])) { $userdata['display_name'] = $_p['ws_plugin__s2member_profile_display_name']; } if (!empty($_p['ws_plugin__s2member_profile_last_name'])) { $userdata['last_name'] = $_p['ws_plugin__s2member_profile_last_name']; } wp_update_user(wp_slash($userdata)); // OK. Now send this array for an update. if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields']) { if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level('auto-detection', 'profile')) { $fields = array(); // Initialize the array of fields. $_existing_fields = get_user_option('s2member_custom_fields', $user_id); foreach (json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], TRUE) as $field) { $field_var = preg_replace('/[^a-z0-9]/i', '_', strtolower($field['id'])); $field_id_class = preg_replace('/_/', '-', $field_var); if (!in_array($field['id'], $fields_applicable) || strpos($field['editable'], 'no') === 0) { if (isset($_existing_fields[$field_var]) && (is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var]) || is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))) { $fields[$field_var] = $_existing_fields[$field_var]; } else { unset($fields[$field_var]); } } else { if ($field['required'] === 'yes' && (!isset($_p['ws_plugin__s2member_profile_' . $field_var]) || !is_array($_p['ws_plugin__s2member_profile_' . $field_var]) && !is_string($_p['ws_plugin__s2member_profile_' . $field_var]) || is_array($_p['ws_plugin__s2member_profile_' . $field_var]) && empty($_p['ws_plugin__s2member_profile_' . $field_var]) || is_string($_p['ws_plugin__s2member_profile_' . $field_var]) && !strlen($_p['ws_plugin__s2member_profile_' . $field_var])) || isset($_p['ws_plugin__s2member_profile_' . $field_var]) && c_ws_plugin__s2member_custom_reg_fields::validation_errors(array($field_var => $_p['ws_plugin__s2member_profile_' . $field_var]), array($field))) { if (isset($_existing_fields[$field_var]) && (is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var]) || is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))) { $fields[$field_var] = $_existing_fields[$field_var]; } else { unset($fields[$field_var]); } } else { if (isset($_p['ws_plugin__s2member_profile_' . $field_var])) { if ((is_array($_p['ws_plugin__s2member_profile_' . $field_var]) && !empty($_p['ws_plugin__s2member_profile_' . $field_var]) || is_string($_p['ws_plugin__s2member_profile_' . $field_var]) && strlen($_p['ws_plugin__s2member_profile_' . $field_var])) && !c_ws_plugin__s2member_custom_reg_fields::validation_errors(array($field_var => $_p['ws_plugin__s2member_profile_' . $field_var]), array($field))) { $fields[$field_var] = $_p['ws_plugin__s2member_profile_' . $field_var]; } else { unset($fields[$field_var]); } } else { unset($fields[$field_var]); } } } } if (!empty($fields)) { update_user_option($user_id, 's2member_custom_fields', $fields); } else { // Else delete their Custom Fields? delete_user_option($user_id, 's2member_custom_fields'); } } } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_handle_profile_modifications', get_defined_vars()); unset($__refs, $__v); clean_user_cache($user_id); wp_cache_delete($user_id, 'user_meta'); $user = new WP_User($user_id); // Fresh object. if (function_exists('setup_userdata')) { setup_userdata(); } $role = c_ws_plugin__s2member_user_access::user_access_role($user); $level = c_ws_plugin__s2member_user_access::user_access_role_to_level($role); if (!empty($_p['ws_plugin__s2member_profile_opt_in']) && $role && $level >= 0) { c_ws_plugin__s2member_list_servers::process_list_servers($role, $level, $user->user_login, !empty($userdata['user_pass']) ? $userdata['user_pass'] : '', $user->user_email, $user->first_name, $user->last_name, $_SERVER['REMOTE_ADDR'], TRUE, TRUE, $user_id); } else { if ($role && $level >= 0 && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in']) { c_ws_plugin__s2member_list_servers::process_list_server_removals($role, $level, $user->user_login, !empty($userdata['user_pass']) ? $userdata['user_pass'] : '', $user->user_email, $user->first_name, $user->last_name, $_SERVER['REMOTE_ADDR'], TRUE, $user_id); } } $lwp = c_ws_plugin__s2member_login_redirects::login_redirection_url($user); $lwp = !$lwp ? get_page_link($GLOBALS['WS_PLUGIN__']['s2member']['o']['login_welcome_page']) : $lwp; if (empty($_p['ws_plugin__s2member_sc_profile_save'])) { echo '<script type="text/javascript">' . "\n"; echo "if(window.parent && window.parent != window) { window.parent.alert('" . c_ws_plugin__s2member_utils_strings::esc_js_sq(_x('Profile updated successfully.', 's2member-front', 's2member')) . "'); window.parent.location = '" . c_ws_plugin__s2member_utils_strings::esc_js_sq($lwp) . "'; }"; echo "else if(window.opener) { window.alert('" . c_ws_plugin__s2member_utils_strings::esc_js_sq(_x('Profile updated successfully.', 's2member-front', 's2member')) . "'); window.opener.location = '" . c_ws_plugin__s2member_utils_strings::esc_js_sq($lwp) . "'; window.close(); }"; echo "else { alert('" . c_ws_plugin__s2member_utils_strings::esc_js_sq(_x('Profile updated successfully.', 's2member-front', 's2member')) . "'); window.location = '" . c_ws_plugin__s2member_utils_strings::esc_js_sq($lwp) . "'; }"; echo '</script>' . "\n"; exit; } } } do_action('ws_plugin__s2member_after_handle_profile_modifications', get_defined_vars()); }
/** * Shortcode `[s2Member-Pro-Stripe-Form /]`. * * @package s2Member\Stripe * @since 140617 * * @attaches-to ``add_shortcode('s2Member-Pro-Stripe-Form');`` * * @param array $attr An array of Attributes. * @param string $content Content inside the Shortcode. * @param string $shortcode The actual Shortcode name itself. * * @return string The resulting Form Code, HTML markup. */ public static function sc_stripe_form($attr, $content = '', $shortcode = '') { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_pro_before_sc_stripe_form', get_defined_vars()); unset($__refs, $__v); // Ditch these temporary vars. c_ws_plugin__s2member_no_cache::no_cache_constants(TRUE); $attr = c_ws_plugin__s2member_utils_strings::trim_qts_deep((array) $attr); $options = array(); // Initialize options to an empty array. $option_selections = ''; // Initialize w/ no options. if ($content && ($content = strip_tags($content))) { // This allows for nested Pro-Form Shortcodes as options. $content = str_replace('s2Member-Pro-Stripe-Form ', 's2Member-Pro-Stripe-xFormOption ', $content); } if ($content && ($content_options = do_shortcode($content))) { foreach (preg_split('/\\s*\\|\\:\\:\\|\\s*/', $content_options, NULL, PREG_SPLIT_NO_EMPTY) as $_content_option_key => $_content_option) { $_content_option_id = $_content_option_key + 1; $options[$_content_option_id] = maybe_unserialize(trim($_content_option)); if (!is_array($options[$_content_option_id])) { unset($options[$_content_option_id]); continue; // Invalid option. } if (!empty($_REQUEST['s2p-option']) && (int) $_REQUEST['s2p-option'] === $_content_option_id) { $options[$_content_option_id]['selected'] = TRUE; } } unset($_content_option_key, $_content_option, $_content_option_id); // Housekeeping. foreach ($options as $_option_id => $_option) { if (!empty($_option['selected'])) { $attr = array_merge($attr, $_option); $_selected_option_id = $_option_id; } } unset($_option_id, $_option); // Housekeeping. if (empty($_selected_option_id)) { foreach ($options as $_option_id => $_option) { $attr = array_merge($attr, $_option); break; // Force a selected option (default). } } unset($_option_id, $_option, $_selected_option_id); // Housekeeping. foreach ($options as $_option_id => $_option) { // Build option selections. $option_selections .= '<option value="' . esc_attr($_option_id) . '"' . (!empty($_option['selected']) ? ' selected="selected"' : '') . '>' . esc_html($_option['desc']) . '</option>'; } unset($_option_id, $_option); // Housekeeping. } $attr = shortcode_atts(array('ids' => '0', 'exp' => '72', 'level' => @$attr['register'] ? '0' : '1', 'ccaps' => '', 'desc' => '', 'cc' => 'USD', 'custom' => $_SERVER['HTTP_HOST'], 'ta' => '0', 'tp' => '0', 'tt' => 'D', 'ra' => '0.50', 'rp' => '1', 'rt' => 'M', 'rr' => '1', 'rrt' => '', 'modify' => '0', 'cancel' => '0', 'unsub' => '0', 'sp' => '0', 'register' => '0', 'update' => '0', 'accept' => $GLOBALS['WS_PLUGIN__']['s2member']['o']['pro_stripe_api_accept_bitcoin'] ? 'bitcoin' : '', 'coupon' => '', 'accept_coupons' => '0', 'default_country_code' => 'US', 'captcha' => '', 'template' => '', 'success' => ''), $attr); $attr['tt'] = strtoupper($attr['tt']); // Term lengths absolutely must be provided in upper-case format. Only after running shortcode_atts(). $attr['rt'] = strtoupper($attr['rt']); // Term lengths absolutely must be provided in upper-case format. Only after running shortcode_atts(). $attr['rr'] = strtoupper($attr['rr']); // Must be provided in upper-case format. Numerical, or BN value. Only after running shortcode_atts(). $attr['cc'] = strtoupper($attr['cc']); // Must be provided in upper-case format. Only after running shortcode_atts(). $attr['ccaps'] = strtolower($attr['ccaps']); // Custom Capabilities must be typed in lower-case format. Only after running shortcode_atts(). $attr['ccaps'] = str_replace(' ', '', $attr['ccaps']); // Custom Capabilities should not have spaces. $attr['rr'] = $attr['rt'] === 'L' ? 'BN' : $attr['rr']; // Lifetime Subscriptions require Buy Now. Only after running shortcode_atts(). $attr['rr'] = $attr['level'] === '*' ? 'BN' : $attr['rr']; // Independent Ccaps require Buy Now. Only after running shortcode_atts(). $attr['rr'] = !$attr['tp'] && !$attr['rr'] ? 'BN' : $attr['rr']; // No Trial / non-recurring. Only after running shortcode_atts(). $attr['default_country_code'] = strtoupper($attr['default_country_code']); // This MUST be in uppercase format. $attr['success'] = c_ws_plugin__s2member_utils_urls::n_amps($attr['success']); // Normalize ampersands. $attr['coupon'] = !empty($_GET['s2p-coupon']) ? trim(strip_tags(stripslashes($_GET['s2p-coupon']))) : $attr['coupon']; $attr['singular'] = get_the_ID(); // Collect the Singular ID for this Post/Page. $attr['accept'] = trim($attr['accept']) ? preg_split('/[;,]+/', preg_replace('/[' . "\r\n\t" . '\\s]+/', '', trim(strtolower($attr['accept'])))) : array(); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_pro_before_sc_stripe_form_after_shortcode_atts', get_defined_vars()); unset($__refs, $__v); // Ditch these temporary vars. if ($attr['cancel']) { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); $response = c_ws_plugin__s2member_pro_stripe_responses::stripe_cancellation_response($attr); $_p = $response['response'] && !$response['error'] ? array() : $_p; if ($attr['captcha']) { $captcha = '<div id="s2member-pro-stripe-cancellation-form-captcha-section" class="s2member-pro-stripe-form-section s2member-pro-stripe-cancellation-form-section s2member-pro-stripe-form-captcha-section s2member-pro-stripe-cancellation-form-captcha-section">' . "\n"; $captcha .= '<div id="s2member-pro-stripe-cancellation-form-captcha-section-title" class="s2member-pro-stripe-form-section-title s2member-pro-stripe-cancellation-form-section-title s2member-pro-stripe-form-captcha-section-title s2member-pro-stripe-cancellation-form-captcha-section-title">' . "\n"; $captcha .= _x('Security Code', 's2member-front', 's2member') . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '<div id="s2member-pro-stripe-cancellation-form-captcha-div" class="s2member-pro-stripe-form-div s2member-pro-stripe-cancellation-form-div s2member-pro-stripe-form-captcha-div s2member-pro-stripe-cancellation-form-captcha-div">' . "\n"; $captcha .= '<label id="s2member-pro-stripe-cancellation-form-captcha-label" class="s2member-pro-stripe-form-captcha-label s2member-pro-stripe-cancellation-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr['captcha'], 10) . "\n"; $captcha .= '</label>' . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '</div>' . "\n"; } else { $captcha = ''; } // Not applicable. $hidden_inputs = '<input type="hidden" name="s2member_pro_stripe_cancellation[nonce]" id="s2member-pro-stripe-cancellation-nonce" value="' . esc_attr(wp_create_nonce('s2member-pro-stripe-cancellation')) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2member_pro_stripe_cancellation[attr]" id="s2member-pro-stripe-cancellation-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2p-option" value="' . esc_attr((string) @$_REQUEST['s2p-option']) . '" />'; $custom_template = is_file(TEMPLATEPATH . '/stripe-cancellation-form.php') ? TEMPLATEPATH . '/stripe-cancellation-form.php' : ''; $custom_template = is_file(get_stylesheet_directory() . '/stripe-cancellation-form.php') ? get_stylesheet_directory() . '/stripe-cancellation-form.php' : $custom_template; $custom_template = $attr['template'] && is_file(TEMPLATEPATH . '/' . $attr['template']) ? TEMPLATEPATH . '/' . $attr['template'] : $custom_template; $custom_template = $attr['template'] && is_file(get_stylesheet_directory() . '/' . $attr['template']) ? get_stylesheet_directory() . '/' . $attr['template'] : $custom_template; $custom_template = $attr['template'] && is_file(WP_CONTENT_DIR . '/' . $attr['template']) ? WP_CONTENT_DIR . '/' . $attr['template'] : $custom_template; $code = trim(file_get_contents($custom_template ? $custom_template : dirname(dirname(dirname(dirname(__FILE__)))) . '/templates/forms/stripe-cancellation-form.php')); $code = trim(!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); $code = preg_replace('/%%action%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr($_SERVER['REQUEST_URI'])), $code); $code = preg_replace('/%%response%%/', c_ws_plugin__s2member_utils_strings::esc_refs($response['response']), $code); $code = preg_replace('/%%description%%/', c_ws_plugin__s2member_utils_strings::esc_refs($attr['desc']), $code); $code = preg_replace('/%%captcha%%/', c_ws_plugin__s2member_utils_strings::esc_refs($captcha), $code); $code = preg_replace('/%%hidden_inputs%%/', c_ws_plugin__s2member_utils_strings::esc_refs($hidden_inputs), $code); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_pro_during_sc_stripe_cancellation_form', get_defined_vars()); unset($__refs, $__v); // Ditch these temporary vars. } else { if ($attr['register']) { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); $response = c_ws_plugin__s2member_pro_stripe_responses::stripe_registration_response($attr); $_p = $response['response'] && !$response['error'] ? array() : $_p; $custom_fields = ''; // Initialize custom fields. if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields']) { // Only display Custom Fields if configured. if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($attr['level'], 'registration')) { $tabindex = 99; // Start tabindex at 99 ( +1 below = 100 ). $custom_fields = '<div id="s2member-pro-stripe-registration-form-custom-fields-section" class="s2member-pro-stripe-form-section s2member-pro-stripe-registration-form-section s2member-pro-stripe-form-custom-fields-section s2member-pro-stripe-registration-form-custom-fields-section">' . "\n"; $custom_fields .= '<div id="s2member-pro-stripe-registration-form-custom-fields-section-title" class="s2member-pro-stripe-form-section-title s2member-pro-stripe-registration-form-section-title s2member-pro-stripe-form-custom-fields-section-title s2member-pro-stripe-registration-form-custom-fields-section-title">' . "\n"; $custom_fields .= _x('Additional Info', 's2member-front', 's2member') . "\n"; $custom_fields .= '</div>' . "\n"; foreach (json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], TRUE) as $field) { if (in_array($field['id'], $fields_applicable)) { $field_var = preg_replace('/[^a-z0-9]/i', '_', strtolower($field['id'])); $field_id_class = preg_replace('/_/', '-', $field_var); if (!empty($field['section']) && $field['section'] === 'yes') { // Starts a new section? $custom_fields .= '<div id="s2member-pro-stripe-registration-form-custom-reg-field-' . $field_id_class . '-divider-section" class="s2member-pro-stripe-form-div s2member-pro-stripe-registration-form-div s2member-pro-stripe-form-custom-reg-field-divider-section' . (!empty($field['sectitle']) ? '-title' : '') . ' s2member-pro-stripe-form-custom-reg-field-' . $field_id_class . '-divider-section' . (!empty($field['sectitle']) ? '-title' : '') . ' s2member-pro-stripe-registration-form-custom-reg-field-' . $field_id_class . '-divider-section' . (!empty($field['sectitle']) ? '-title' : '') . '">' . (!empty($field['sectitle']) ? $field['sectitle'] : '') . '</div>'; } $custom_fields .= '<div id="s2member-pro-stripe-registration-form-custom-reg-field-' . $field_id_class . '-div" class="s2member-pro-stripe-form-div s2member-pro-stripe-registration-form-div s2member-pro-stripe-form-custom-reg-field-' . $field_id_class . '-div s2member-pro-stripe-registration-form-custom-reg-field-' . $field_id_class . '-div">' . "\n"; $custom_fields .= '<label for="s2member-pro-stripe-registration-custom-reg-field-' . esc_attr($field_id_class) . '" id="s2member-pro-stripe-registration-form-custom-reg-field-' . $field_id_class . '-label" class="s2member-pro-stripe-form-custom-reg-field-' . $field_id_class . '-label s2member-pro-stripe-registration-form-custom-reg-field-' . $field_id_class . '-label">' . "\n"; $custom_fields .= '<span' . (preg_match('/^(checkbox|pre_checkbox)$/', $field['type']) ? ' style="display:none;"' : '') . '>' . $field['label'] . ($field['required'] === 'yes' ? ' *' : '') . '</span></label>' . (preg_match('/^(checkbox|pre_checkbox)$/', $field['type']) ? '' : '<br />') . "\n"; $custom_fields .= c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, 's2member_pro_stripe_registration[custom_fields][', 's2member-pro-stripe-registration-custom-reg-field-', 's2member-pro-stripe-custom-reg-field-' . $field_id_class . ' s2member-pro-stripe-registration-custom-reg-field-' . $field_id_class, '', $tabindex = $tabindex + 1, '', @$_p['s2member_pro_stripe_registration'], @$_p['s2member_pro_stripe_registration']['custom_fields'][$field_var], 'registration'); $custom_fields .= '</div>' . "\n"; } } $custom_fields .= '</div>' . "\n"; } } if ($attr['captcha']) { $captcha = '<div id="s2member-pro-stripe-registration-form-captcha-section" class="s2member-pro-stripe-form-section s2member-pro-stripe-registration-form-section s2member-pro-stripe-form-captcha-section s2member-pro-stripe-registration-form-captcha-section">' . "\n"; $captcha .= '<div id="s2member-pro-stripe-registration-form-captcha-section-title" class="s2member-pro-stripe-form-section-title s2member-pro-stripe-registration-form-section-title s2member-pro-stripe-form-captcha-section-title s2member-pro-stripe-registration-form-captcha-section-title">' . "\n"; $captcha .= _x('Security Code', 's2member-front', 's2member') . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '<div id="s2member-pro-stripe-registration-form-captcha-div" class="s2member-pro-stripe-form-div s2member-pro-stripe-registration-form-div s2member-pro-stripe-form-captcha-div s2member-pro-stripe-registration-form-captcha-div">' . "\n"; $captcha .= '<label id="s2member-pro-stripe-registration-form-captcha-label" class="s2member-pro-stripe-form-captcha-label s2member-pro-stripe-registration-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr['captcha'], 200) . "\n"; $captcha .= '</label>' . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '</div>' . "\n"; } else { $captcha = ''; } // Not applicable. if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in'] && c_ws_plugin__s2member_list_servers::list_servers_integrated()) { $opt_in = '<div id="s2member-pro-stripe-registration-form-custom-reg-field-opt-in-div" class="s2member-pro-stripe-form-div s2member-pro-stripe-registration-form-div s2member-pro-stripe-form-custom-reg-field-opt-in-div s2member-pro-stripe-registration-form-custom-reg-field-opt-in-div">' . "\n"; $opt_in .= '<label for="s2member-pro-stripe-registration-form-custom-reg-field-opt-in" id="s2member-pro-stripe-registration-form-custom-reg-field-opt-in-label" class="s2member-pro-stripe-form-custom-reg-field-opt-in-label s2member-pro-stripe-registration-form-custom-reg-field-opt-in-label">' . "\n"; $opt_in .= '<input type="checkbox" name="s2member_pro_stripe_registration[custom_fields][opt_in]" id="s2member-pro-stripe-registration-form-custom-reg-field-opt-in" class="s2member-pro-stripe-form-custom-reg-field-opt-in s2member-pro-stripe-registration-form-custom-reg-field-opt-in" value="1"' . (empty($_p['s2member_pro_stripe_registration']) && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in'] == 1 || @$_p['s2member_pro_stripe_registration']['custom_fields']['opt_in'] ? ' checked="checked"' : '') . ' tabindex="300" />' . "\n"; $opt_in .= $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in_label'] . "\n"; $opt_in .= '</label>' . "\n"; $opt_in .= '</div>' . "\n"; } else { $opt_in = ''; } // Not applicable. $hidden_inputs = '<input type="hidden" name="s2member_pro_stripe_registration[nonce]" id="s2member-pro-stripe-registration-nonce" value="' . esc_attr(wp_create_nonce('s2member-pro-stripe-registration')) . '" />'; $hidden_inputs .= !$GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_names'] ? '<input type="hidden" id="s2member-pro-stripe-registration-names-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= !$GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_password'] ? '<input type="hidden" id="s2member-pro-stripe-registration-password-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= '<input type="hidden" name="s2member_pro_stripe_registration[attr]" id="s2member-pro-stripe-registration-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; $custom_template = is_file(TEMPLATEPATH . '/stripe-registration-form.php') ? TEMPLATEPATH . '/stripe-registration-form.php' : ''; $custom_template = is_file(get_stylesheet_directory() . '/stripe-registration-form.php') ? get_stylesheet_directory() . '/stripe-registration-form.php' : $custom_template; $custom_template = $attr['template'] && is_file(TEMPLATEPATH . '/' . $attr['template']) ? TEMPLATEPATH . '/' . $attr['template'] : $custom_template; $custom_template = $attr['template'] && is_file(get_stylesheet_directory() . '/' . $attr['template']) ? get_stylesheet_directory() . '/' . $attr['template'] : $custom_template; $custom_template = $attr['template'] && is_file(WP_CONTENT_DIR . '/' . $attr['template']) ? WP_CONTENT_DIR . '/' . $attr['template'] : $custom_template; $code = trim(file_get_contents($custom_template ? $custom_template : dirname(dirname(dirname(dirname(__FILE__)))) . '/templates/forms/stripe-registration-form.php')); $code = trim(!$custom_template || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); $code = preg_replace('/%%action%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr($_SERVER['REQUEST_URI'])), $code); $code = preg_replace('/%%response%%/', c_ws_plugin__s2member_utils_strings::esc_refs($response['response']), $code); $code = preg_replace('/%%options%%/', c_ws_plugin__s2member_utils_strings::esc_refs($option_selections), $code); $code = preg_replace('/%%description%%/', c_ws_plugin__s2member_utils_strings::esc_refs($attr['desc']), $code); $code = preg_replace('/%%first_name_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr(@$_p['s2member_pro_stripe_registration']['first_name'])), $code); $code = preg_replace('/%%last_name_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr(@$_p['s2member_pro_stripe_registration']['last_name'])), $code); $code = preg_replace('/%%email_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p['s2member_pro_stripe_registration']['email'])), $code); $code = preg_replace('/%%username_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p['s2member_pro_stripe_registration']['username'])), $code); $code = preg_replace('/%%password1_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p['s2member_pro_stripe_registration']['password1'])), $code); $code = preg_replace('/%%password2_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p['s2member_pro_stripe_registration']['password2'])), $code); $code = preg_replace('/%%custom_fields%%/', c_ws_plugin__s2member_utils_strings::esc_refs($custom_fields), $code); $code = preg_replace('/%%captcha%%/', c_ws_plugin__s2member_utils_strings::esc_refs($captcha), $code); $code = preg_replace('/%%opt_in%%/', c_ws_plugin__s2member_utils_strings::esc_refs($opt_in), $code); $code = preg_replace('/%%hidden_inputs%%/', c_ws_plugin__s2member_utils_strings::esc_refs($hidden_inputs), $code); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_pro_during_sc_stripe_registration_form', get_defined_vars()); unset($__refs, $__v); // Ditch these temporary vars. } else { if ($attr['update']) { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); $response = c_ws_plugin__s2member_pro_stripe_responses::stripe_update_response($attr); $_p = $response['response'] && !$response['error'] ? array() : $_p; if ($attr['captcha']) { $captcha = '<div id="s2member-pro-stripe-update-form-captcha-section" class="s2member-pro-stripe-form-section s2member-pro-stripe-update-form-section s2member-pro-stripe-form-captcha-section s2member-pro-stripe-update-form-captcha-section">' . "\n"; $captcha .= '<div id="s2member-pro-stripe-update-form-captcha-section-title" class="s2member-pro-stripe-form-section-title s2member-pro-stripe-update-form-section-title s2member-pro-stripe-form-captcha-section-title s2member-pro-stripe-update-form-captcha-section-title">' . "\n"; $captcha .= _x('Security Code', 's2member-front', 's2member') . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '<div id="s2member-pro-stripe-update-form-captcha-div" class="s2member-pro-stripe-form-div s2member-pro-stripe-update-form-div s2member-pro-stripe-form-captcha-div s2member-pro-stripe-update-form-captcha-div">' . "\n"; $captcha .= '<label id="s2member-pro-stripe-update-form-captcha-label" class="s2member-pro-stripe-form-captcha-label s2member-pro-stripe-update-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr['captcha'], 200) . "\n"; $captcha .= '</label>' . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '</div>' . "\n"; } else { $captcha = ''; } // Not applicable. $hidden_inputs = '<input type="hidden" name="s2member_pro_stripe_update[nonce]" id="s2member-pro-stripe-update-nonce" value="' . esc_attr(wp_create_nonce('s2member-pro-stripe-update')) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2member_pro_stripe_update[source_token]" id="s2member-pro-stripe-update-source-token" value="' . esc_attr(@$_p['s2member_pro_stripe_update']['source_token']) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2member_pro_stripe_update[source_token_summary]" id="s2member-pro-stripe-update-source-token-summary" value="' . esc_attr(@$_p['s2member_pro_stripe_update']['source_token_summary']) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2member_pro_stripe_update[attr]" id="s2member-pro-stripe-update-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2p-option" value="' . esc_attr((string) @$_REQUEST['s2p-option']) . '" />'; $custom_template = is_file(TEMPLATEPATH . '/stripe-update-form.php') ? TEMPLATEPATH . '/stripe-update-form.php' : ''; $custom_template = is_file(get_stylesheet_directory() . '/stripe-update-form.php') ? get_stylesheet_directory() . '/stripe-update-form.php' : $custom_template; $custom_template = $attr['template'] && is_file(TEMPLATEPATH . '/' . $attr['template']) ? TEMPLATEPATH . '/' . $attr['template'] : $custom_template; $custom_template = $attr['template'] && is_file(get_stylesheet_directory() . '/' . $attr['template']) ? get_stylesheet_directory() . '/' . $attr['template'] : $custom_template; $custom_template = $attr['template'] && is_file(WP_CONTENT_DIR . '/' . $attr['template']) ? WP_CONTENT_DIR . '/' . $attr['template'] : $custom_template; $custom_template_contents = $custom_template ? trim(file_get_contents($custom_template)) : ''; if ($custom_template_contents && stripos($custom_template_contents, '%%source_token_summary%%') === FALSE) { $custom_template_contents = ''; } // Custom template must be up-to-date. $code = $custom_template_contents ? $custom_template_contents : trim(file_get_contents(dirname(dirname(dirname(dirname(__FILE__)))) . '/templates/forms/stripe-update-form.php')); $code = trim(!$custom_template_contents || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); $code = preg_replace('/%%action%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr($_SERVER['REQUEST_URI'])), $code); $code = preg_replace('/%%response%%/', c_ws_plugin__s2member_utils_strings::esc_refs($response['response']), $code); $code = preg_replace('/%%description%%/', c_ws_plugin__s2member_utils_strings::esc_refs($attr['desc']), $code); $code = preg_replace('/%%source_token%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_html(@$_p['s2member_pro_stripe_update']['source_token'])), $code); $code = preg_replace('/%%source_token_summary%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_html(@$_p['s2member_pro_stripe_update']['source_token_summary'])), $code); $code = preg_replace('/%%captcha%%/', c_ws_plugin__s2member_utils_strings::esc_refs($captcha), $code); $code = preg_replace('/%%hidden_inputs%%/', c_ws_plugin__s2member_utils_strings::esc_refs($hidden_inputs), $code); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_pro_during_sc_stripe_update_form', get_defined_vars()); unset($__refs, $__v); // Ditch these temporary vars. } else { if ($attr['sp']) { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); $attr['sp_ids_exp'] = 'sp:' . $attr['ids'] . ':' . $attr['exp']; // Combined `sp:ids:expiration hours`. $attr['coupon'] = !empty($_p['s2member_pro_stripe_sp_checkout']['coupon']) ? $_p['s2member_pro_stripe_sp_checkout']['coupon'] : $attr['coupon']; $response = c_ws_plugin__s2member_pro_stripe_responses::stripe_sp_checkout_response($attr); $_p = $response['response'] && !$response['error'] ? array() : $_p; $tax_may_apply = c_ws_plugin__s2member_pro_stripe_utilities::tax_may_apply(); // Tax may apply? $cp_attr = $cp_buy_now_attr = c_ws_plugin__s2member_pro_stripe_utilities::apply_coupon($attr, $attr['coupon']); // ↑ The discounted amounts, but before any tax calculations occur during checkout. $is_buy_now = TRUE; // Always true for Specific Post/Page Access transactions. $is_buy_now_amount = $is_buy_now && $cp_buy_now_attr['ra'] > 0 ? number_format($cp_buy_now_attr['ra'], 2, '.', '') : '0.00'; $is_buy_now_currency = $is_buy_now ? $cp_buy_now_attr['cc'] : ''; // Note that Bitcoin can only be charged in USD at the present time. $is_buy_now_amount_in_cents = $is_buy_now && $is_buy_now_amount > 0 ? (string) c_ws_plugin__s2member_pro_stripe_utilities::dollar_amount_to_cents($is_buy_now_amount, $is_buy_now_currency) : '0'; $is_buy_now_desc = $is_buy_now ? $cp_buy_now_attr['desc'] : ''; // This description is used for Bitcoin transaction; description for receiver. $is_buy_now_bitcoin_accepted = $is_buy_now && $is_buy_now_amount_in_cents > 0 && $is_buy_now_currency === 'USD' && in_array('bitcoin', $cp_buy_now_attr['accept'], TRUE); $country_default_by_currency = !@$_p['s2member_pro_stripe_sp_checkout']['country'] && $attr['cc'] === 'USD' ? 'US' : ''; $country_default_by_currency = !@$_p['s2member_pro_stripe_sp_checkout']['country'] && $attr['cc'] === 'CAD' ? 'CA' : $country_default_by_currency; $country_default_by_currency = !@$_p['s2member_pro_stripe_sp_checkout']['country'] && $attr['cc'] === 'GBP' ? 'GB' : $country_default_by_currency; $country_default_by_currency = apply_filters('ws_plugin__s2member_pro_stripe_default_country', $country_default_by_currency, get_defined_vars()); $default_country_v = $attr['default_country_code'] ? $attr['default_country_code'] : $country_default_by_currency; $country_options = '<option value=""></option>'; // Start with an empty option value. foreach (preg_split('/[' . "\r\n" . ']+/', file_get_contents(dirname(dirname(dirname(dirname(__FILE__)))) . '/iso-3166-1.txt')) as $country) { list($country_l, $country_v) = preg_split('/;/', $country, 2); if ($country_l && $country_v) { // Here we also check on the default pre-selected country; as determined above; based on currency. $country_options .= '<option value="' . esc_attr(strtoupper($country_v)) . '"' . (@$_p['s2member_pro_stripe_sp_checkout']['country'] === $country_v || $default_country_v === $country_v ? ' selected="selected"' : '') . '>' . esc_html(ucwords(strtolower($country_l))) . '</option>'; } } if ($attr['captcha']) { $captcha = '<div id="s2member-pro-stripe-sp-checkout-form-captcha-section" class="s2member-pro-stripe-form-section s2member-pro-stripe-sp-checkout-form-section s2member-pro-stripe-form-captcha-section s2member-pro-stripe-sp-checkout-form-captcha-section">' . "\n"; $captcha .= '<div id="s2member-pro-stripe-sp-checkout-form-captcha-section-title" class="s2member-pro-stripe-form-section-title s2member-pro-stripe-sp-checkout-form-section-title s2member-pro-stripe-form-captcha-section-title s2member-pro-stripe-sp-checkout-form-captcha-section-title">' . "\n"; $captcha .= _x('Security Code', 's2member-front', 's2member') . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '<div id="s2member-pro-stripe-sp-checkout-form-captcha-div" class="s2member-pro-stripe-form-div s2member-pro-stripe-sp-checkout-form-div s2member-pro-stripe-form-captcha-div s2member-pro-stripe-sp-checkout-form-captcha-div">' . "\n"; $captcha .= '<label id="s2member-pro-stripe-sp-checkout-form-captcha-label" class="s2member-pro-stripe-form-captcha-label s2member-pro-stripe-sp-checkout-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr['captcha'], 300) . "\n"; $captcha .= '</label>' . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '</div>' . "\n"; } else { $captcha = ''; } // Not applicable. /* Build the opt-in checkbox. */ if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in'] && c_ws_plugin__s2member_list_servers::list_servers_integrated()) { $opt_in = '<div id="s2member-pro-stripe-sp-checkout-form-custom-reg-field-opt-in-div" class="s2member-pro-stripe-form-div s2member-pro-stripe-sp-checkout-form-div s2member-pro-stripe-form-custom-reg-field-opt-in-div s2member-pro-stripe-sp-checkout-form-custom-reg-field-opt-in-div">' . "\n"; $opt_in .= '<label for="s2member-pro-stripe-sp-checkout-form-custom-reg-field-opt-in" id="s2member-pro-stripe-sp-checkout-form-custom-reg-field-opt-in-label" class="s2member-pro-stripe-form-custom-reg-field-opt-in-label s2member-pro-stripe-sp-checkout-form-custom-reg-field-opt-in-label">' . "\n"; $opt_in .= '<input type="checkbox" name="s2member_pro_stripe_sp_checkout[custom_fields][opt_in]" id="s2member-pro-stripe-sp-checkout-form-custom-reg-field-opt-in" class="s2member-pro-stripe-form-custom-reg-field-opt-in s2member-pro-stripe-sp-checkout-form-custom-reg-field-opt-in" value="1"' . (empty($_p['s2member_pro_stripe_sp_checkout']) && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in'] == 1 || @$_p['s2member_pro_stripe_sp_checkout']['custom_fields']['opt_in'] ? ' checked="checked"' : '') . ' tabindex="400" />' . "\n"; $opt_in .= $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in_label'] . "\n"; $opt_in .= '</label>' . "\n"; $opt_in .= '</div>' . "\n"; } else { $opt_in = ''; } // Not applicable. $hidden_inputs = '<input type="hidden" name="s2member_pro_stripe_sp_checkout[nonce]" id="s2member-pro-stripe-sp-checkout-nonce" value="' . esc_attr(wp_create_nonce('s2member-pro-stripe-sp-checkout')) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2member_pro_stripe_sp_checkout[source_token]" id="s2member-pro-stripe-sp-checkout-source-token" value="' . esc_attr(@$_p['s2member_pro_stripe_sp_checkout']['source_token']) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2member_pro_stripe_sp_checkout[source_token_summary]" id="s2member-pro-stripe-sp-checkout-source-token-summary" value="' . esc_attr(@$_p['s2member_pro_stripe_sp_checkout']['source_token_summary']) . '" />'; $hidden_inputs .= !$attr['accept_coupons'] ? '<input type="hidden" id="s2member-pro-stripe-sp-checkout-coupons-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= !$tax_may_apply ? '<input type="hidden" id="s2member-pro-stripe-sp-checkout-tax-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= $is_buy_now_amount <= 0 ? '<input type="hidden" id="s2member-pro-stripe-sp-checkout-payment-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= $is_buy_now_amount > 0 ? '<input type="hidden" id="s2member-pro-stripe-sp-checkout-is-buy-now-amount" value="' . esc_attr($is_buy_now_amount) . '" />' : ''; $hidden_inputs .= $is_buy_now_amount_in_cents > 0 ? '<input type="hidden" id="s2member-pro-stripe-sp-checkout-is-buy-now-amount-in-cents" value="' . esc_attr($is_buy_now_amount_in_cents) . '" />' : ''; $hidden_inputs .= $is_buy_now_currency ? '<input type="hidden" id="s2member-pro-stripe-sp-checkout-is-buy-now-currency" value="' . esc_attr($is_buy_now_currency) . '" />' : ''; $hidden_inputs .= $is_buy_now_desc ? '<input type="hidden" id="s2member-pro-stripe-sp-checkout-is-buy-now-desc" value="' . esc_attr($is_buy_now_desc) . '" />' : ''; $hidden_inputs .= $is_buy_now_bitcoin_accepted ? '<input type="hidden" id="s2member-pro-stripe-sp-checkout-is-buy-now-bitcoin-accepted" value="1" />' : ''; $hidden_inputs .= '<input type="hidden" name="s2member_pro_stripe_sp_checkout[attr]" id="s2member-pro-stripe-sp-checkout-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; $custom_template = is_file(TEMPLATEPATH . '/stripe-sp-checkout-form.php') ? TEMPLATEPATH . '/stripe-sp-checkout-form.php' : ''; $custom_template = is_file(get_stylesheet_directory() . '/stripe-sp-checkout-form.php') ? get_stylesheet_directory() . '/stripe-sp-checkout-form.php' : $custom_template; $custom_template = $attr['template'] && is_file(TEMPLATEPATH . '/' . $attr['template']) ? TEMPLATEPATH . '/' . $attr['template'] : $custom_template; $custom_template = $attr['template'] && is_file(get_stylesheet_directory() . '/' . $attr['template']) ? get_stylesheet_directory() . '/' . $attr['template'] : $custom_template; $custom_template = $attr['template'] && is_file(WP_CONTENT_DIR . '/' . $attr['template']) ? WP_CONTENT_DIR . '/' . $attr['template'] : $custom_template; $custom_template_contents = $custom_template ? trim(file_get_contents($custom_template)) : ''; if ($custom_template_contents && stripos($custom_template_contents, '%%source_token_summary%%') === FALSE) { $custom_template_contents = ''; } // Custom template must be up-to-date. $code = $custom_template_contents ? $custom_template_contents : trim(file_get_contents(dirname(dirname(dirname(dirname(__FILE__)))) . '/templates/forms/stripe-sp-checkout-form.php')); $code = trim(!$custom_template_contents || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); $code = preg_replace('/%%action%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr($_SERVER['REQUEST_URI'])), $code); $code = preg_replace('/%%response%%/', c_ws_plugin__s2member_utils_strings::esc_refs($response['response']), $code); $code = preg_replace('/%%options%%/', c_ws_plugin__s2member_utils_strings::esc_refs($option_selections), $code); $code = preg_replace('/%%description%%/', c_ws_plugin__s2member_utils_strings::esc_refs($attr['desc']), $code); $code = preg_replace('/%%coupon_response%%/', c_ws_plugin__s2member_utils_strings::esc_refs(c_ws_plugin__s2member_pro_stripe_utilities::apply_coupon($attr, $attr['coupon'], 'response', array('affiliates-1px-response'))), $code); $code = preg_replace('/%%coupon_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit($attr['coupon'])), $code); $code = preg_replace('/%%first_name_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr(@$_p['s2member_pro_stripe_sp_checkout']['first_name'])), $code); $code = preg_replace('/%%last_name_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr(@$_p['s2member_pro_stripe_sp_checkout']['last_name'])), $code); $code = preg_replace('/%%email_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p['s2member_pro_stripe_sp_checkout']['email'])), $code); $code = preg_replace('/%%source_token%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_html(@$_p['s2member_pro_stripe_sp_checkout']['source_token'])), $code); $code = preg_replace('/%%source_token_summary%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_html(@$_p['s2member_pro_stripe_sp_checkout']['source_token_summary'])), $code); $code = preg_replace('/%%state_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p['s2member_pro_stripe_sp_checkout']['state'])), $code); $code = preg_replace('/%%country_options%%/', c_ws_plugin__s2member_utils_strings::esc_refs($country_options), $code); $code = preg_replace('/%%zip_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p['s2member_pro_stripe_sp_checkout']['zip'])), $code); $code = preg_replace('/%%captcha%%/', c_ws_plugin__s2member_utils_strings::esc_refs($captcha), $code); $code = preg_replace('/%%opt_in%%/', c_ws_plugin__s2member_utils_strings::esc_refs($opt_in), $code); $code = preg_replace('/%%hidden_inputs%%/', c_ws_plugin__s2member_utils_strings::esc_refs($hidden_inputs), $code); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_pro_during_sc_stripe_sp_form', get_defined_vars()); unset($__refs, $__v); // Ditch these temporary vars. } else { $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); $attr['level_ccaps_eotper'] = $attr['rr'] === 'BN' && $attr['rt'] !== 'L' ? $attr['level'] . ':' . $attr['ccaps'] . ':' . $attr['rp'] . ' ' . $attr['rt'] : $attr['level'] . ':' . $attr['ccaps']; $attr['level_ccaps_eotper'] = rtrim($attr['level_ccaps_eotper'], ':'); // Clean any trailing separators from this string. $attr['coupon'] = !empty($_p['s2member_pro_stripe_checkout']['coupon']) ? $_p['s2member_pro_stripe_checkout']['coupon'] : $attr['coupon']; $response = c_ws_plugin__s2member_pro_stripe_responses::stripe_checkout_response($attr); $_p = $response['response'] && !$response['error'] ? array() : $_p; $tax_may_apply = c_ws_plugin__s2member_pro_stripe_utilities::tax_may_apply(); // Tax may apply? $cp_attr = $cp_buy_now_attr = c_ws_plugin__s2member_pro_stripe_utilities::apply_coupon($attr, $attr['coupon']); // ↑ The discounted amounts, but before any tax calculations occur during checkout. if ($cp_buy_now_attr['ra'] <= 0 && $cp_buy_now_attr['tp'] && $cp_buy_now_attr['ta'] > 0) { $cp_buy_now_attr['tp'] = '0'; // Ditch the trial period completely. $cp_buy_now_attr['ra'] = $cp_buy_now_attr['ta']; // Use as regular amount. $cp_buy_now_attr['ta'] = '0.00'; // Ditch this calculation now. } $is_buy_now = $cp_buy_now_attr['rr'] === 'BN' || !$cp_buy_now_attr['tp'] && !$cp_buy_now_attr['rr']; $is_buy_now_amount = $is_buy_now && $cp_buy_now_attr['ra'] > 0 ? number_format($cp_buy_now_attr['ra'], 2, '.', '') : '0.00'; $is_buy_now_currency = $is_buy_now ? $cp_buy_now_attr['cc'] : ''; // Note that Bitcoin can only be charged in USD at the present time. $is_buy_now_amount_in_cents = $is_buy_now && $is_buy_now_amount > 0 ? (string) c_ws_plugin__s2member_pro_stripe_utilities::dollar_amount_to_cents($is_buy_now_amount, $is_buy_now_currency) : '0'; $is_buy_now_desc = $is_buy_now ? $cp_buy_now_attr['desc'] : ''; // This description is used for Bitcoin transaction; description for receiver. $is_buy_now_bitcoin_accepted = $is_buy_now && $is_buy_now_amount_in_cents > 0 && $is_buy_now_currency === 'USD' && in_array('bitcoin', $cp_buy_now_attr['accept'], TRUE); $country_default_by_currency = !@$_p['s2member_pro_stripe_checkout']['country'] && $attr['cc'] === 'USD' ? 'US' : ''; $country_default_by_currency = !@$_p['s2member_pro_stripe_checkout']['country'] && $attr['cc'] === 'CAD' ? 'CA' : $country_default_by_currency; $country_default_by_currency = !@$_p['s2member_pro_stripe_checkout']['country'] && $attr['cc'] === 'GBP' ? 'GB' : $country_default_by_currency; $country_default_by_currency = apply_filters('ws_plugin__s2member_pro_stripe_default_country', $country_default_by_currency, get_defined_vars()); $default_country_v = $attr['default_country_code'] ? $attr['default_country_code'] : $country_default_by_currency; $country_options = '<option value=""></option>'; // Start with an empty option value. foreach (preg_split('/[' . "\r\n" . ']+/', file_get_contents(dirname(dirname(dirname(dirname(__FILE__)))) . '/iso-3166-1.txt')) as $country) { list($country_l, $country_v) = preg_split('/;/', $country, 2); if ($country_l && $country_v) { // Here we also check on the default pre-selected country; as determined above; based on currency. $country_options .= '<option value="' . esc_attr(strtoupper($country_v)) . '"' . (@$_p['s2member_pro_stripe_checkout']['country'] === $country_v || $default_country_v === $country_v ? ' selected="selected"' : '') . '>' . esc_html(ucwords(strtolower($country_l))) . '</option>'; } } $custom_fields = ''; // Initialize custom fields. if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields']) { // Only display Custom Fields if configured. if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($attr['level'] === '*' ? 'auto-detection' : $attr['level'], 'registration')) { $tabindex = 99; // Start tabindex at 99 (+1 below = 100). $custom_fields = '<div id="s2member-pro-stripe-checkout-form-custom-fields-section" class="s2member-pro-stripe-form-section s2member-pro-stripe-checkout-form-section s2member-pro-stripe-form-custom-fields-section s2member-pro-stripe-checkout-form-custom-fields-section">' . "\n"; $custom_fields .= '<div id="s2member-pro-stripe-checkout-form-custom-fields-section-title" class="s2member-pro-stripe-form-section-title s2member-pro-stripe-checkout-form-section-title s2member-pro-stripe-form-custom-fields-section-title s2member-pro-stripe-checkout-form-custom-fields-section-title">' . "\n"; $custom_fields .= _x('Additional Info', 's2member-front', 's2member') . "\n"; $custom_fields .= '</div>' . "\n"; foreach (json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], TRUE) as $field) { if (in_array($field['id'], $fields_applicable)) { $field_var = preg_replace('/[^a-z0-9]/i', '_', strtolower($field['id'])); $field_id_class = preg_replace('/_/', '-', $field_var); if (!empty($field['section']) && $field['section'] === 'yes') { // Starts a new section? $custom_fields .= '<div id="s2member-pro-stripe-checkout-form-custom-reg-field-' . $field_id_class . '-divider-section" class="s2member-pro-stripe-form-div s2member-pro-stripe-checkout-form-div s2member-pro-stripe-form-custom-reg-field-divider-section' . (!empty($field['sectitle']) ? '-title' : '') . ' s2member-pro-stripe-form-custom-reg-field-' . $field_id_class . '-divider-section' . (!empty($field['sectitle']) ? '-title' : '') . ' s2member-pro-stripe-checkout-form-custom-reg-field-' . $field_id_class . '-divider-section' . (!empty($field['sectitle']) ? '-title' : '') . '">' . (!empty($field['sectitle']) ? $field['sectitle'] : '') . '</div>'; } $custom_fields .= '<div id="s2member-pro-stripe-checkout-form-custom-reg-field-' . $field_id_class . '-div" class="s2member-pro-stripe-form-div s2member-pro-stripe-checkout-form-div s2member-pro-stripe-form-custom-reg-field-' . $field_id_class . '-div s2member-pro-stripe-checkout-form-custom-reg-field-' . $field_id_class . '-div">' . "\n"; $custom_fields .= '<label for="s2member-pro-stripe-checkout-custom-reg-field-' . esc_attr($field_id_class) . '" id="s2member-pro-stripe-checkout-form-custom-reg-field-' . $field_id_class . '-label" class="s2member-pro-stripe-form-custom-reg-field-' . $field_id_class . '-label s2member-pro-stripe-checkout-form-custom-reg-field-' . $field_id_class . '-label">' . "\n"; $custom_fields .= '<span' . (preg_match('/^(checkbox|pre_checkbox)$/', $field['type']) ? ' style="display:none;"' : '') . '>' . $field['label'] . ($field['required'] === 'yes' ? ' *' : '') . '</span></label>' . (preg_match('/^(checkbox|pre_checkbox)$/', $field['type']) ? '' : '<br />') . "\n"; $custom_fields .= c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, 's2member_pro_stripe_checkout[custom_fields][', 's2member-pro-stripe-checkout-custom-reg-field-', 's2member-pro-stripe-custom-reg-field-' . $field_id_class . ' s2member-pro-stripe-checkout-custom-reg-field-' . $field_id_class, '', $tabindex = $tabindex + 1, '', @$_p['s2member_pro_stripe_checkout'], @$_p['s2member_pro_stripe_checkout']['custom_fields'][$field_var], 'registration'); $custom_fields .= '</div>' . "\n"; } } $custom_fields .= '</div>' . "\n"; } } if ($attr['captcha']) { $captcha = '<div id="s2member-pro-stripe-checkout-form-captcha-section" class="s2member-pro-stripe-form-section s2member-pro-stripe-checkout-form-section s2member-pro-stripe-form-captcha-section s2member-pro-stripe-checkout-form-captcha-section">' . "\n"; $captcha .= '<div id="s2member-pro-stripe-checkout-form-captcha-section-title" class="s2member-pro-stripe-form-section-title s2member-pro-stripe-checkout-form-section-title s2member-pro-stripe-form-captcha-section-title s2member-pro-stripe-checkout-form-captcha-section-title">' . "\n"; $captcha .= _x('Security Code', 's2member-front', 's2member') . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '<div id="s2member-pro-stripe-checkout-form-captcha-div" class="s2member-pro-stripe-form-div s2member-pro-stripe-checkout-form-div s2member-pro-stripe-form-captcha-div s2member-pro-stripe-checkout-form-captcha-div">' . "\n"; $captcha .= '<label id="s2member-pro-stripe-checkout-form-captcha-label" class="s2member-pro-stripe-form-captcha-label s2member-pro-stripe-checkout-form-captcha-label">' . "\n"; $captcha .= c_ws_plugin__s2member_utils_captchas::recaptcha_script_tag($attr['captcha'], 400) . "\n"; $captcha .= '</label>' . "\n"; $captcha .= '</div>' . "\n"; $captcha .= '</div>' . "\n"; } else { $captcha = ''; } // Not applicable. if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in'] && c_ws_plugin__s2member_list_servers::list_servers_integrated()) { $opt_in = '<div id="s2member-pro-stripe-checkout-form-custom-reg-field-opt-in-div" class="s2member-pro-stripe-form-div s2member-pro-stripe-checkout-form-div s2member-pro-stripe-form-custom-reg-field-opt-in-div s2member-pro-stripe-checkout-form-custom-reg-field-opt-in-div">' . "\n"; $opt_in .= '<label for="s2member-pro-stripe-checkout-form-custom-reg-field-opt-in" id="s2member-pro-stripe-checkout-form-custom-reg-field-opt-in-label" class="s2member-pro-stripe-form-custom-reg-field-opt-in-label s2member-pro-stripe-checkout-form-custom-reg-field-opt-in-label">' . "\n"; $opt_in .= '<input type="checkbox" name="s2member_pro_stripe_checkout[custom_fields][opt_in]" id="s2member-pro-stripe-checkout-form-custom-reg-field-opt-in" class="s2member-pro-stripe-form-custom-reg-field-opt-in s2member-pro-stripe-checkout-form-custom-reg-field-opt-in" value="1"' . (empty($_p['s2member_pro_stripe_checkout']) && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in'] == 1 || @$_p['s2member_pro_stripe_checkout']['custom_fields']['opt_in'] ? ' checked="checked"' : '') . ' tabindex="500" />' . "\n"; $opt_in .= $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in_label'] . "\n"; $opt_in .= '</label>' . "\n"; $opt_in .= '</div>' . "\n"; } else { $opt_in = ''; } // Not applicable. $hidden_inputs = '<input type="hidden" name="s2member_pro_stripe_checkout[nonce]" id="s2member-pro-stripe-checkout-nonce" value="' . esc_attr(wp_create_nonce('s2member-pro-stripe-checkout')) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2member_pro_stripe_checkout[source_token]" id="s2member-pro-stripe-checkout-source-token" value="' . esc_attr(@$_p['s2member_pro_stripe_checkout']['source_token']) . '" />'; $hidden_inputs .= '<input type="hidden" name="s2member_pro_stripe_checkout[source_token_summary]" id="s2member-pro-stripe-checkout-source-token-summary" value="' . esc_attr(@$_p['s2member_pro_stripe_checkout']['source_token_summary']) . '" />'; $hidden_inputs .= !$attr['accept_coupons'] ? '<input type="hidden" id="s2member-pro-stripe-checkout-coupons-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= !$GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_password'] ? '<input type="hidden" id="s2member-pro-stripe-checkout-password-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= !$tax_may_apply ? '<input type="hidden" id="s2member-pro-stripe-checkout-tax-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= $cp_attr['ta'] <= 0 && $cp_attr['ra'] <= 0 ? '<input type="hidden" id="s2member-pro-stripe-checkout-payment-not-required-or-not-possible" value="1" />' : ''; $hidden_inputs .= $is_buy_now_amount > 0 ? '<input type="hidden" id="s2member-pro-stripe-checkout-is-buy-now-amount" value="' . esc_attr($is_buy_now_amount) . '" />' : ''; $hidden_inputs .= $is_buy_now_amount_in_cents > 0 ? '<input type="hidden" id="s2member-pro-stripe-checkout-is-buy-now-amount-in-cents" value="' . esc_attr($is_buy_now_amount_in_cents) . '" />' : ''; $hidden_inputs .= $is_buy_now_currency ? '<input type="hidden" id="s2member-pro-stripe-checkout-is-buy-now-currency" value="' . esc_attr($is_buy_now_currency) . '" />' : ''; $hidden_inputs .= $is_buy_now_desc ? '<input type="hidden" id="s2member-pro-stripe-checkout-is-buy-now-desc" value="' . esc_attr($is_buy_now_desc) . '" />' : ''; $hidden_inputs .= $is_buy_now_bitcoin_accepted ? '<input type="hidden" id="s2member-pro-stripe-checkout-is-buy-now-bitcoin-accepted" value="1" />' : ''; $hidden_inputs .= '<input type="hidden" name="s2member_pro_stripe_checkout[attr]" id="s2member-pro-stripe-checkout-attr" value="' . esc_attr(c_ws_plugin__s2member_utils_encryption::encrypt(serialize($attr))) . '" />'; $custom_template = is_file(TEMPLATEPATH . '/stripe-checkout-form.php') ? TEMPLATEPATH . '/stripe-checkout-form.php' : ''; $custom_template = is_file(get_stylesheet_directory() . '/stripe-checkout-form.php') ? get_stylesheet_directory() . '/stripe-checkout-form.php' : $custom_template; $custom_template = $attr['template'] && is_file(TEMPLATEPATH . '/' . $attr['template']) ? TEMPLATEPATH . '/' . $attr['template'] : $custom_template; $custom_template = $attr['template'] && is_file(get_stylesheet_directory() . '/' . $attr['template']) ? get_stylesheet_directory() . '/' . $attr['template'] : $custom_template; $custom_template = $attr['template'] && is_file(WP_CONTENT_DIR . '/' . $attr['template']) ? WP_CONTENT_DIR . '/' . $attr['template'] : $custom_template; $custom_template_contents = $custom_template ? trim(file_get_contents($custom_template)) : ''; if ($custom_template_contents && stripos($custom_template_contents, '%%source_token_summary%%') === FALSE) { $custom_template_contents = ''; } // Custom template must be up-to-date. $code = $custom_template_contents ? $custom_template_contents : trim(file_get_contents(dirname(dirname(dirname(dirname(__FILE__)))) . '/templates/forms/stripe-checkout-form.php')); $code = trim(!$custom_template_contents || !is_multisite() || !c_ws_plugin__s2member_utils_conds::is_multisite_farm() || is_main_site() ? c_ws_plugin__s2member_utilities::evl($code) : $code); $code = preg_replace('/%%action%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr($_SERVER['REQUEST_URI'])), $code); $code = preg_replace('/%%response%%/', c_ws_plugin__s2member_utils_strings::esc_refs($response['response']), $code); $code = preg_replace('/%%options%%/', c_ws_plugin__s2member_utils_strings::esc_refs($option_selections), $code); $code = preg_replace('/%%description%%/', c_ws_plugin__s2member_utils_strings::esc_refs($attr['desc']), $code); $code = preg_replace('/%%coupon_response%%/', c_ws_plugin__s2member_utils_strings::esc_refs(c_ws_plugin__s2member_pro_stripe_utilities::apply_coupon($attr, $attr['coupon'], 'response', array('affiliates-1px-response'))), $code); $code = preg_replace('/%%coupon_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit($attr['coupon'])), $code); $code = preg_replace('/%%first_name_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr(@$_p['s2member_pro_stripe_checkout']['first_name'])), $code); $code = preg_replace('/%%last_name_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_attr(@$_p['s2member_pro_stripe_checkout']['last_name'])), $code); $code = preg_replace('/%%email_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p['s2member_pro_stripe_checkout']['email'])), $code); $code = preg_replace('/%%username_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p['s2member_pro_stripe_checkout']['username'])), $code); $code = preg_replace('/%%password1_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p['s2member_pro_stripe_checkout']['password1'])), $code); $code = preg_replace('/%%password2_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p['s2member_pro_stripe_checkout']['password2'])), $code); $code = preg_replace('/%%custom_fields%%/', c_ws_plugin__s2member_utils_strings::esc_refs($custom_fields), $code); $code = preg_replace('/%%source_token%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_html(@$_p['s2member_pro_stripe_checkout']['source_token'])), $code); $code = preg_replace('/%%source_token_summary%%/', c_ws_plugin__s2member_utils_strings::esc_refs(esc_html(@$_p['s2member_pro_stripe_checkout']['source_token_summary'])), $code); $code = preg_replace('/%%state_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p['s2member_pro_stripe_checkout']['state'])), $code); $code = preg_replace('/%%country_options%%/', c_ws_plugin__s2member_utils_strings::esc_refs($country_options), $code); $code = preg_replace('/%%zip_value%%/', c_ws_plugin__s2member_utils_strings::esc_refs(format_to_edit(@$_p['s2member_pro_stripe_checkout']['zip'])), $code); $code = preg_replace('/%%captcha%%/', c_ws_plugin__s2member_utils_strings::esc_refs($captcha), $code); $code = preg_replace('/%%opt_in%%/', c_ws_plugin__s2member_utils_strings::esc_refs($opt_in), $code); $code = preg_replace('/%%hidden_inputs%%/', c_ws_plugin__s2member_utils_strings::esc_refs($hidden_inputs), $code); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } $attr['modify'] ? do_action('ws_plugin__s2member_pro_during_sc_stripe_modification_form', get_defined_vars()) : do_action('ws_plugin__s2member_pro_during_sc_stripe_form', get_defined_vars()); unset($__refs, $__v); // Ditch these temporary vars. } } } } return apply_filters('ws_plugin__s2member_pro_sc_stripe_form', $code, get_defined_vars()); }
/** * Validates different kinds of form submissions. * * Free Registration Forms do NOT require API Credentials. * * @package s2Member\PayPal * @since 1.5 * * @param string $form The type of Pro-Form being submitted. * @param array $s An array of data submitted through the Pro-Form. * @return null|array Null if there are no errors, else a response array. */ public static function paypal_form_submission_validation_errors($form = FALSE, $s = FALSE) { if ($form === "registration" || !($response = c_ws_plugin__s2member_pro_paypal_responses::paypal_form_api_validation_errors())) { if ($form === "cancellation") { if (!is_user_logged_in()) { $response = array("response" => sprintf(_x('You must <a href="%s" rel="nofollow">log in</a> to cancel your account.', "s2member-front", "s2member"), esc_attr(wp_login_url($_SERVER["REQUEST_URI"]))), "error" => true); } else { if ($s["attr"]["captcha"] && (empty($s["recaptcha_challenge_field"]) || empty($s["recaptcha_response_field"]) || !c_ws_plugin__s2member_utils_captchas::recaptcha_code_validates($s["recaptcha_challenge_field"], $s["recaptcha_response_field"]))) { $response = array("response" => _x('Missing or invalid Security Code. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (is_object($user = wp_get_current_user()) && $user->ID && $user->has_cap("administrator")) { // NOT for Administrators. $response = array("response" => _x('Unable to process. You are an Administrator. Stopping here for security. Otherwise, an Administrator could lose access.', "s2member-admin", "s2member"), "error" => true); } } } } else { if ($form === "update") { if (!is_user_logged_in()) { $response = array("response" => sprintf(_x('You must <a href="%s" rel="nofollow">log in</a> to update your billing information.', "s2member-front", "s2member"), esc_attr(wp_login_url($_SERVER["REQUEST_URI"]))), "error" => true); } else { if (is_object($user = wp_get_current_user()) && $user->ID && $user->has_cap("administrator")) { $response = array("response" => _x('Unable to process. You are an Administrator. Stopping here for security. Otherwise, an Administrator could lose access.', "s2member-admin", "s2member"), "error" => true); } else { if (empty($s["card_type"]) || !is_string($s["card_type"])) { $response = array("response" => _x('Missing Card Type (Billing Method). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (!in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo", "PayPal")) || !is_array($s["attr"]["accept"]) || !in_array(strtolower($s["card_type"]), $s["attr"]["accept"])) { $response = array("response" => _x('Invalid Card Type (Billing Method). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["card_number"]) || !is_string($s["card_number"]))) { $response = array("response" => _x('Missing Card Number. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["card_expiration"]) || !is_string($s["card_expiration"]))) { $response = array("response" => _x('Missing Card Expiration Date (mm/yyyy). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && !preg_match("/^[0-9]{2}\\/[0-9]{4}\$/", $s["card_expiration"])) { $response = array("response" => _x('Invalid Card Expiration Date. Must be in this format (mm/yyyy). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["card_verification"]) || !is_string($s["card_verification"]))) { $response = array("response" => _x('Missing Card Verification Code. It\'s on the back of your Card. 3-4 digits. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Maestro", "Solo")) && (empty($s["card_start_date_issue_number"]) || !is_string($s["card_start_date_issue_number"]))) { $response = array("response" => _x('Missing Card Start Date, or Issue #. Required for Maestro/Solo. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["street"]) || !is_string($s["street"]))) { $response = array("response" => _x('Missing Street Address. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["city"]) || !is_string($s["city"]))) { $response = array("response" => _x('Missing City/Town. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["state"]) || !is_string($s["state"]))) { $response = array("response" => _x('Missing State/Province. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["country"]) || !is_string($s["country"]))) { $response = array("response" => _x('Missing Country. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["zip"]) || !is_string($s["zip"]))) { $response = array("response" => _x('Missing Postal/Zip Code. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if ($s["attr"]["captcha"] && (empty($s["recaptcha_challenge_field"]) || empty($s["recaptcha_response_field"]) || !c_ws_plugin__s2member_utils_captchas::recaptcha_code_validates($s["recaptcha_challenge_field"], $s["recaptcha_response_field"]))) { $response = array("response" => _x('Missing or invalid Security Code. Please try again.', "s2member-front", "s2member"), "error" => true); } } } } } } } } } } } } } } } } else { if ($form === "registration") { if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_names"] && (empty($s["first_name"]) || !is_string($s["first_name"]))) { $response = array("response" => _x('Missing First Name. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_names"] && (empty($s["last_name"]) || !is_string($s["last_name"]))) { $response = array("response" => _x('Missing Last Name. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (empty($s["email"]) || !is_string($s["email"])) { $response = array("response" => _x('Missing or invalid Email Address. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (!is_email($s["email"])) { $response = array("response" => _x('Invalid Email Address. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (email_exists($s["email"]) && (!is_multisite() || !c_ws_plugin__s2member_utils_users::ms_user_login_email_can_join_blog(@$s["username"], $s["email"]))) { $response = array("response" => _x('That Email Address is already in use. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (empty($s["username"]) || !is_string($s["username"]) || empty($s["_o_username"]) || !is_string($s["_o_username"])) { $response = array("response" => _x('Missing or invalid Username. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (!validate_username($s["username"]) || !validate_username($s["_o_username"])) { $response = array("response" => _x('Invalid Username. Please try again. Use ONLY lowercase alphanumerics.', "s2member-front", "s2member"), "error" => true); } else { if (username_exists($s["username"]) && (!is_multisite() || !c_ws_plugin__s2member_utils_users::ms_user_login_email_can_join_blog($s["username"], $s["email"]))) { $response = array("response" => _x('That Username is already in use. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (is_multisite() && !c_ws_plugin__s2member_utils_users::ms_user_login_email_can_join_blog($s["username"], $s["email"]) && ($_response = wpmu_validate_user_signup($s["username"], $s["email"])) && is_wp_error($_errors = $_response["errors"]) && $_errors->get_error_message()) { $response = array("response" => $_errors->get_error_message(), "error" => true); } else { if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] && (empty($s["password1"]) || !is_string($s["password1"]))) { $response = array("response" => _x('Missing Password. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] && strlen($s["password1"]) < 6) { $response = array("response" => _x('Invalid Password. Must be at least 6 characters. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] && strlen($s["password1"]) > 20) { $response = array("response" => _x('Invalid Password. Max length is 20 characters. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] && (empty($s["password2"]) || $s["password2"] !== $s["password1"])) { $response = array("response" => _x('Password fields do NOT match. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if ($custom_field_validation_errors = c_ws_plugin__s2member_custom_reg_fields::validation_errors(isset($s["custom_fields"]) ? $s["custom_fields"] : array(), c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($s["attr"]["level"], "registration", TRUE))) { $response = array("response" => array_shift($custom_field_validation_errors), "error" => true); } else { if ($s["attr"]["captcha"] && (empty($s["recaptcha_challenge_field"]) || empty($s["recaptcha_response_field"]) || !c_ws_plugin__s2member_utils_captchas::recaptcha_code_validates($s["recaptcha_challenge_field"], $s["recaptcha_response_field"]))) { $response = array("response" => _x('Missing or invalid Security Code. Please try again.', "s2member-front", "s2member"), "error" => true); } } } } } } } } } } } } } } } } else { if ($form === "sp-checkout") { if (empty($s["first_name"]) || !is_string($s["first_name"])) { $response = array("response" => _x('Missing First Name. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (empty($s["last_name"]) || !is_string($s["last_name"])) { $response = array("response" => _x('Missing Last Name. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (empty($s["email"]) || !is_string($s["email"])) { $response = array("response" => _x('Missing or invalid Email Address. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (!is_email($s["email"])) { $response = array("response" => _x('Invalid Email Address. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (empty($s["card_type"]) || !is_string($s["card_type"])) { $response = array("response" => _x('Missing Card Type (Billing Method). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (!in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo", "PayPal", "Free"))) { $response = array("response" => _x('Invalid Card Type (Billing Method). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo", "PayPal")) && (!is_array($s["attr"]["accept"]) || !in_array(strtolower($s["card_type"]), $s["attr"]["accept"]))) { $response = array("response" => _x('Invalid Card Type (Billing Method). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["card_number"]) || !is_string($s["card_number"]))) { $response = array("response" => _x('Missing Card Number. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["card_expiration"]) || !is_string($s["card_expiration"]))) { $response = array("response" => _x('Missing Card Expiration Date (mm/yyyy). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && !preg_match("/^[0-9]{2}\\/[0-9]{4}\$/", $s["card_expiration"])) { $response = array("response" => _x('Invalid Card Expiration Date. Must be in this format (mm/yyyy). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["card_verification"]) || !is_string($s["card_verification"]))) { $response = array("response" => _x('Missing Card Verification Code. It\'s on the back of your Card. 3-4 digits. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Maestro", "Solo")) && (empty($s["card_start_date_issue_number"]) || !is_string($s["card_start_date_issue_number"]))) { $response = array("response" => _x('Missing Card Start Date, or Issue #. Required for Maestro/Solo. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["street"]) || !is_string($s["street"]))) { $response = array("response" => _x('Missing Street Address. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["city"]) || !is_string($s["city"]))) { $response = array("response" => _x('Missing City/Town. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["state"]) || !is_string($s["state"]))) { $response = array("response" => _x('Missing State/Province. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["country"]) || !is_string($s["country"]))) { $response = array("response" => _x('Missing Country. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["zip"]) || !is_string($s["zip"]))) { $response = array("response" => _x('Missing Postal/Zip Code. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if ($s["attr"]["captcha"] && (empty($s["recaptcha_challenge_field"]) || empty($s["recaptcha_response_field"]) || !c_ws_plugin__s2member_utils_captchas::recaptcha_code_validates($s["recaptcha_challenge_field"], $s["recaptcha_response_field"]))) { $response = array("response" => _x('Missing or invalid Security Code. Please try again.', "s2member-front", "s2member"), "error" => true); } } } } } } } } } } } } } } } } } } } else { if ($form === "checkout") { if ($s["attr"]["modify"] && !is_user_logged_in()) { $response = array("response" => sprintf(_x('You must <a href="%s" rel="nofollow">log in</a> to modify your billing plan.', "s2member-front", "s2member"), esc_attr(wp_login_url($_SERVER["REQUEST_URI"]))), "error" => true); } else { if ($s["attr"]["level"] === "*" && !is_user_logged_in()) { $response = array("response" => sprintf(_x('You must <a href="%s" rel="nofollow">log in</a> before making this purchase.', "s2member-front", "s2member"), esc_attr(wp_login_url($_SERVER["REQUEST_URI"]))), "error" => true); } else { if (is_user_logged_in() && is_object($user = wp_get_current_user()) && $user->ID && $user->has_cap("administrator")) { // NOT for Administrators. $response = array("response" => _x('Unable to process. You are an Administrator. Stopping here for security. Otherwise, an Administrator could lose access.', "s2member-admin", "s2member"), "error" => true); } else { if (empty($s["first_name"]) || !is_string($s["first_name"])) { $response = array("response" => _x('Missing First Name. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (empty($s["last_name"]) || !is_string($s["last_name"])) { $response = array("response" => _x('Missing Last Name. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (!is_user_logged_in() && (empty($s["email"]) || !is_string($s["email"]))) { $response = array("response" => _x('Missing or invalid Email Address. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (!is_user_logged_in() && !is_email($s["email"])) { $response = array("response" => _x('Invalid Email Address. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (!is_user_logged_in() && email_exists($s["email"]) && (!is_multisite() || !c_ws_plugin__s2member_utils_users::ms_user_login_email_can_join_blog(@$s["username"], $s["email"]))) { $response = array("response" => _x('That Email Address is already in use. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (!is_user_logged_in() && (empty($s["username"]) || !is_string($s["username"]) || empty($s["_o_username"]) || !is_string($s["_o_username"]))) { $response = array("response" => _x('Missing or invalid Username. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (!is_user_logged_in() && (!validate_username($s["username"]) || !validate_username($s["_o_username"]))) { $response = array("response" => _x('Invalid Username. Please try again. Use ONLY lowercase alphanumerics.', "s2member-front", "s2member"), "error" => true); } else { if (!is_user_logged_in() && username_exists($s["username"]) && (!is_multisite() || !c_ws_plugin__s2member_utils_users::ms_user_login_email_can_join_blog($s["username"], $s["email"]))) { $response = array("response" => _x('That Username is already in use. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (!is_user_logged_in() && is_multisite() && !c_ws_plugin__s2member_utils_users::ms_user_login_email_can_join_blog($s["username"], $s["email"]) && ($_response = wpmu_validate_user_signup($s["username"], $s["email"])) && is_wp_error($_errors = $_response["errors"]) && $_errors->get_error_message()) { $response = array("response" => $_errors->get_error_message(), "error" => true); } else { if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] && !is_user_logged_in() && (empty($s["password1"]) || !is_string($s["password1"]))) { $response = array("response" => _x('Missing Password. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] && !is_user_logged_in() && strlen($s["password1"]) < 6) { $response = array("response" => _x('Invalid Password. Must be at least 6 characters. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] && !is_user_logged_in() && strlen($s["password1"]) > 20) { $response = array("response" => _x('Invalid Password. Max length is 20 characters. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"] && !is_user_logged_in() && (empty($s["password2"]) || $s["password2"] !== $s["password1"])) { $response = array("response" => _x('Password fields do NOT match. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (!is_user_logged_in() && ($custom_field_validation_errors = c_ws_plugin__s2member_custom_reg_fields::validation_errors(isset($s["custom_fields"]) ? $s["custom_fields"] : array(), c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($s["attr"]["level"] === "*" ? "auto-detection" : $s["attr"]["level"], "registration", TRUE)))) { $response = array("response" => array_shift($custom_field_validation_errors), "error" => true); } else { if (empty($s["card_type"]) || !is_string($s["card_type"])) { $response = array("response" => _x('Missing Card Type (Billing Method). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (!in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo", "PayPal", "Free"))) { $response = array("response" => _x('Invalid Card Type (Billing Method). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo", "PayPal")) && (!is_array($s["attr"]["accept"]) || !in_array(strtolower($s["card_type"]), $s["attr"]["accept"]))) { $response = array("response" => _x('Invalid Card Type (Billing Method). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["card_number"]) || !is_string($s["card_number"]))) { $response = array("response" => _x('Missing Card Number. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["card_expiration"]) || !is_string($s["card_expiration"]))) { $response = array("response" => _x('Missing Card Expiration Date (mm/yyyy). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && !preg_match("/^[0-9]{2}\\/[0-9]{4}\$/", $s["card_expiration"])) { $response = array("response" => _x('Invalid Card Expiration Date. Must be in this format (mm/yyyy). Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["card_verification"]) || !is_string($s["card_verification"]))) { $response = array("response" => _x('Missing Card Verification Code. It\'s on the back of your Card. 3-4 digits. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Maestro", "Solo")) && (empty($s["card_start_date_issue_number"]) || !is_string($s["card_start_date_issue_number"]))) { $response = array("response" => _x('Missing Card Start Date, or Issue #. Required for Maestro/Solo. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["street"]) || !is_string($s["street"]))) { $response = array("response" => _x('Missing Street Address. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["city"]) || !is_string($s["city"]))) { $response = array("response" => _x('Missing City/Town. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["state"]) || !is_string($s["state"]))) { $response = array("response" => _x('Missing State/Province. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["country"]) || !is_string($s["country"]))) { $response = array("response" => _x('Missing Country. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if (in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (empty($s["zip"]) || !is_string($s["zip"]))) { $response = array("response" => _x('Missing Postal/Zip Code. Please try again.', "s2member-front", "s2member"), "error" => true); } else { if ($s["attr"]["captcha"] && (empty($s["recaptcha_challenge_field"]) || empty($s["recaptcha_response_field"]) || !c_ws_plugin__s2member_utils_captchas::recaptcha_code_validates($s["recaptcha_challenge_field"], $s["recaptcha_response_field"]))) { $response = array("response" => _x('Missing or invalid Security Code. Please try again.', "s2member-front", "s2member"), "error" => true); } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } else { // Else we are dealing with an unknown form submission type. $response = array("response" => _x('Unknown form submission type. Please contact Support.', "s2member-front", "s2member"), "error" => true); } } } } } } return apply_filters("ws_plugin__s2member_pro_paypal_form_submission_validation_response", empty($response) ? null : $response, $form, $s); }
/** * Validates different kinds of form submissions. * * Free Registration Forms do NOT require API Credentials. * * @package s2Member\Stripe * @since 140617 * * @param string $form The type of Pro-Form being submitted. * @param array $s An array of data submitted through the Pro-Form. * * @return null|array Null if there are no errors, else a response array. */ public static function stripe_form_submission_validation_errors($form, $s = array()) { $cp_attr = c_ws_plugin__s2member_pro_stripe_utilities::apply_coupon($s['attr'], $s['coupon'], 'attr'); $is_free_checkout = in_array($form, array('sp-checkout', 'checkout'), TRUE) && $cp_attr['ta'] <= 0 && $cp_attr['ra'] <= 0; $is_bitcoin_checkout = !$is_free_checkout && in_array($form, array('sp-checkout', 'checkout'), TRUE) && stripos($s['source_token'], 'btcrcv_') === 0; if ($form === 'registration' || !($response = c_ws_plugin__s2member_pro_stripe_responses::stripe_form_api_validation_errors())) { if ($form === 'cancellation') { if (!is_user_logged_in()) { $response = array('response' => sprintf(_x('You must <a href="%s" rel="nofollow">log in</a> to cancel your account.', 's2member-front', 's2member'), esc_attr(wp_login_url($_SERVER['REQUEST_URI']))), 'error' => TRUE); } else { if ($s['attr']['captcha'] && (empty($s['recaptcha_challenge_field']) || empty($s['recaptcha_response_field']) || !c_ws_plugin__s2member_utils_captchas::recaptcha_code_validates($s['recaptcha_challenge_field'], $s['recaptcha_response_field']))) { $response = array('response' => _x('Missing or invalid Security Verification. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (is_object($user = wp_get_current_user()) && $user->ID && $user->has_cap('administrator')) { $response = array('response' => _x('Unable to process. You are an Administrator. Stopping here for security. Otherwise, an Administrator could lose access.', 's2member-admin', 's2member'), 'error' => TRUE); } } } } else { if ($form === 'update') { if (!is_user_logged_in()) { $response = array('response' => sprintf(_x('You must <a href="%s" rel="nofollow">log in</a> to update your billing information.', 's2member-front', 's2member'), esc_attr(wp_login_url($_SERVER['REQUEST_URI']))), 'error' => TRUE); } else { if (is_object($user = wp_get_current_user()) && $user->ID && $user->has_cap('administrator')) { $response = array('response' => _x('Unable to process. You are an Administrator. Stopping here for security. Otherwise, an Administrator could lose access.', 's2member-admin', 's2member'), 'error' => TRUE); } else { if (empty($s['source_token']) || !is_string($s['source_token'])) { $response = array('response' => _x('Missing Billing Info. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if ($s['attr']['captcha'] && (empty($s['recaptcha_challenge_field']) || empty($s['recaptcha_response_field']) || !c_ws_plugin__s2member_utils_captchas::recaptcha_code_validates($s['recaptcha_challenge_field'], $s['recaptcha_response_field']))) { $response = array('response' => _x('Missing or invalid Security Verification. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } } } } } else { if ($form === 'registration') { /** @var $_errors \WP_Error For IDEs. This variable is used below in at least one place. */ if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_names'] && (empty($s['first_name']) || !is_string($s['first_name']))) { $response = array('response' => _x('Missing First Name. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_names'] && (empty($s['last_name']) || !is_string($s['last_name']))) { $response = array('response' => _x('Missing Last Name. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (empty($s['email']) || !is_string($s['email'])) { $response = array('response' => _x('Missing or invalid Email Address. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!is_email($s['email'])) { $response = array('response' => _x('Invalid Email Address. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (email_exists($s['email']) && (!is_multisite() || !c_ws_plugin__s2member_utils_users::ms_user_login_email_can_join_blog(@$s['username'], $s['email']))) { $response = array('response' => _x('That Email Address is already in use. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (empty($s['username']) || !is_string($s['username']) || empty($s['_o_username']) || !is_string($s['_o_username'])) { $response = array('response' => _x('Missing or invalid Username. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!validate_username($s['username']) || !validate_username($s['_o_username'])) { $response = array('response' => _x('Invalid Username. Please try again. Use ONLY lowercase alphanumerics.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (username_exists($s['username']) && (!is_multisite() || !c_ws_plugin__s2member_utils_users::ms_user_login_email_can_join_blog($s['username'], $s['email']))) { $response = array('response' => _x('That Username is already in use. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (is_multisite() && !c_ws_plugin__s2member_utils_users::ms_user_login_email_can_join_blog($s['username'], $s['email']) && ($_response = wpmu_validate_user_signup($s['username'], $s['email'])) && is_wp_error($_errors = $_response['errors']) && $_errors->get_error_message()) { $response = array('response' => $_errors->get_error_message(), 'error' => TRUE); } else { if ((empty($s['password1']) || !is_string($s['password1'])) && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_password']) { $response = array('response' => _x('Missing Password. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if ((empty($s['password1']) || strlen($s['password1']) < c_ws_plugin__s2member_user_securities::min_password_length()) && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_password']) { $response = array('response' => sprintf(_x('Invalid Password. Must be at least %1$s characters. Please try again.', 's2member-front', 's2member'), c_ws_plugin__s2member_user_securities::min_password_length()), 'error' => TRUE); } else { if (!empty($s['password1']) && strlen($s['password1']) > 64 && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_password']) { $response = array('response' => _x('Invalid Password. Max length is 64 characters. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if ((empty($s['password2']) || $s['password2'] !== $s['password1']) && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_password']) { $response = array('response' => _x('Password fields do NOT match. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if ($custom_field_validation_errors = c_ws_plugin__s2member_custom_reg_fields::validation_errors(isset($s['custom_fields']) ? $s['custom_fields'] : array(), c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($s['attr']['level'], 'registration', TRUE))) { $response = array('response' => array_shift($custom_field_validation_errors), 'error' => TRUE); } else { if ($s['attr']['captcha'] && (empty($s['recaptcha_challenge_field']) || empty($s['recaptcha_response_field']) || !c_ws_plugin__s2member_utils_captchas::recaptcha_code_validates($s['recaptcha_challenge_field'], $s['recaptcha_response_field']))) { $response = array('response' => _x('Missing or invalid Security Verification. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } } } } } } } } } } } } } } } } else { if ($form === 'sp-checkout') { if (empty($s['first_name']) || !is_string($s['first_name'])) { $response = array('response' => _x('Missing First Name. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (empty($s['last_name']) || !is_string($s['last_name'])) { $response = array('response' => _x('Missing Last Name. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (empty($s['email']) || !is_string($s['email'])) { $response = array('response' => _x('Missing or invalid Email Address. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!is_email($s['email'])) { $response = array('response' => _x('Invalid Email Address. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (empty($s['source_token']) || !is_string($s['source_token'])) { // Token = `free` for free checkouts. $response = array('response' => _x('Missing Billing Info. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!$is_free_checkout && !$is_bitcoin_checkout && (empty($s['state']) || !is_string($s['state'])) && c_ws_plugin__s2member_pro_stripe_utilities::tax_may_apply()) { $response = array('response' => _x('Missing State/Province. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!$is_free_checkout && !$is_bitcoin_checkout && (empty($s['country']) || !is_string($s['country'])) && c_ws_plugin__s2member_pro_stripe_utilities::tax_may_apply()) { $response = array('response' => _x('Missing Country. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!$is_free_checkout && !$is_bitcoin_checkout && (empty($s['zip']) || !is_string($s['zip'])) && c_ws_plugin__s2member_pro_stripe_utilities::tax_may_apply()) { $response = array('response' => _x('Missing Postal/Zip Code. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if ($s['attr']['captcha'] && (empty($s['recaptcha_challenge_field']) || empty($s['recaptcha_response_field']) || !c_ws_plugin__s2member_utils_captchas::recaptcha_code_validates($s['recaptcha_challenge_field'], $s['recaptcha_response_field']))) { $response = array('response' => _x('Missing or invalid Security Verification. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } } } } } } } } } } else { if ($form === 'checkout') { /** @var $_errors \WP_Error For IDEs. This variable is used below in at least one place. */ if ($s['attr']['modify'] && !is_user_logged_in()) { $response = array('response' => sprintf(_x('You must <a href="%s" rel="nofollow">log in</a> to modify your billing plan.', 's2member-front', 's2member'), esc_attr(wp_login_url($_SERVER['REQUEST_URI']))), 'error' => TRUE); } else { if ($s['attr']['level'] === '*' && !is_user_logged_in()) { $response = array('response' => sprintf(_x('You must <a href="%s" rel="nofollow">log in</a> before making this purchase.', 's2member-front', 's2member'), esc_attr(wp_login_url($_SERVER['REQUEST_URI']))), 'error' => TRUE); } else { if (is_user_logged_in() && is_object($user = wp_get_current_user()) && $user->ID && $user->has_cap('administrator')) { $response = array('response' => _x('Unable to process. You are an Administrator. Stopping here for security. Otherwise, an Administrator could lose access.', 's2member-admin', 's2member'), 'error' => TRUE); } else { if (empty($s['first_name']) || !is_string($s['first_name'])) { $response = array('response' => _x('Missing First Name. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (empty($s['last_name']) || !is_string($s['last_name'])) { $response = array('response' => _x('Missing Last Name. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!is_user_logged_in() && (empty($s['email']) || !is_string($s['email']))) { $response = array('response' => _x('Missing or invalid Email Address. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!is_user_logged_in() && !is_email($s['email'])) { $response = array('response' => _x('Invalid Email Address. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!is_user_logged_in() && email_exists($s['email']) && (!is_multisite() || !c_ws_plugin__s2member_utils_users::ms_user_login_email_can_join_blog(@$s['username'], $s['email']))) { $response = array('response' => _x('That Email Address is already in use. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!is_user_logged_in() && (empty($s['username']) || !is_string($s['username']) || empty($s['_o_username']) || !is_string($s['_o_username']))) { $response = array('response' => _x('Missing or invalid Username. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!is_user_logged_in() && (!validate_username($s['username']) || !validate_username($s['_o_username']))) { $response = array('response' => _x('Invalid Username. Please try again. Use ONLY lowercase alphanumerics.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!is_user_logged_in() && username_exists($s['username']) && (!is_multisite() || !c_ws_plugin__s2member_utils_users::ms_user_login_email_can_join_blog($s['username'], $s['email']))) { $response = array('response' => _x('That Username is already in use. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!is_user_logged_in() && is_multisite() && !c_ws_plugin__s2member_utils_users::ms_user_login_email_can_join_blog($s['username'], $s['email']) && ($_response = wpmu_validate_user_signup($s['username'], $s['email'])) && is_wp_error($_errors = $_response['errors']) && $_errors->get_error_message()) { $response = array('response' => $_errors->get_error_message(), 'error' => TRUE); } else { if (!is_user_logged_in() && (empty($s['password1']) || !is_string($s['password1'])) && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_password']) { $response = array('response' => _x('Missing Password. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!is_user_logged_in() && (empty($s['password1']) || strlen($s['password1']) < c_ws_plugin__s2member_user_securities::min_password_length()) && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_password']) { $response = array('response' => sprintf(_x('Invalid Password. Must be at least %1$s characters. Please try again.', 's2member-front', 's2member'), c_ws_plugin__s2member_user_securities::min_password_length()), 'error' => TRUE); } else { if (!is_user_logged_in() && !empty($s['password1']) && strlen($s['password1']) > 64 && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_password']) { $response = array('response' => _x('Invalid Password. Max length is 64 characters. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!is_user_logged_in() && (empty($s['password2']) || $s['password2'] !== $s['password1']) && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_password']) { $response = array('response' => _x('Password fields do NOT match. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!is_user_logged_in() && ($custom_field_validation_errors = c_ws_plugin__s2member_custom_reg_fields::validation_errors(isset($s['custom_fields']) ? $s['custom_fields'] : array(), c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($s['attr']['level'] === '*' ? 'auto-detection' : $s['attr']['level'], 'registration', TRUE)))) { $response = array('response' => array_shift($custom_field_validation_errors), 'error' => TRUE); } else { if (empty($s['source_token']) || !is_string($s['source_token'])) { // Token = `free` for free checkouts. $response = array('response' => _x('Missing Billing Method. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!$is_free_checkout && !$is_bitcoin_checkout && (empty($s['state']) || !is_string($s['state'])) && c_ws_plugin__s2member_pro_stripe_utilities::tax_may_apply()) { $response = array('response' => _x('Missing State/Province. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!$is_free_checkout && !$is_bitcoin_checkout && (empty($s['country']) || !is_string($s['country'])) && c_ws_plugin__s2member_pro_stripe_utilities::tax_may_apply()) { $response = array('response' => _x('Missing Country. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if (!$is_free_checkout && !$is_bitcoin_checkout && (empty($s['zip']) || !is_string($s['zip'])) && c_ws_plugin__s2member_pro_stripe_utilities::tax_may_apply()) { $response = array('response' => _x('Missing Postal/Zip Code. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } else { if ($s['attr']['captcha'] && (empty($s['recaptcha_challenge_field']) || empty($s['recaptcha_response_field']) || !c_ws_plugin__s2member_utils_captchas::recaptcha_code_validates($s['recaptcha_challenge_field'], $s['recaptcha_response_field']))) { $response = array('response' => _x('Missing or invalid Security Verification. Please try again.', 's2member-front', 's2member'), 'error' => TRUE); } } } } } } } } } } } } } } } } } } } } } } } else { // Else we are dealing with an unknown form submission type. $response = array('response' => _x('Unknown form submission type. Please contact Support.', 's2member-front', 's2member'), 'error' => TRUE); } } } } } } return apply_filters('ws_plugin__s2member_pro_stripe_form_submission_validation_response', empty($response) ? NULL : $response, $form, $s); }
/** * Adds Custom Fields to BuddyPress Profiles in public view. * * @package s2Member\Custom_Reg_Fields * @since 110524RC * * @attaches-to ``add_action("bp_profile_field_item");`` * * @return null */ public static function custom_profile_field_items_4bp() { global $bp; static $processed = false; do_action("ws_plugin__s2member_before_custom_profile_field_items_4bp", get_defined_vars()); if (!$processed && in_array("profile-view", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields_4bp"])) { if (apply_filters("ws_plugin__s2member_custom_profile_field_items_4bp_display", true, get_defined_vars())) { if (bp_is_user_profile() && (function_exists("bp_is_user_profile_edit") && !bp_is_user_profile_edit() || function_exists("bp_is_profile_edit") && !bp_is_profile_edit()) && (int) bp_get_the_profile_group_id() === 1) { if (isset($bp->displayed_user->id) && ($user_id = $bp->displayed_user->id)) { if ($processed = true) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_profile_field_items_4bp_before", get_defined_vars()); unset($__refs, $__v); if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { if (($level = c_ws_plugin__s2member_user_access::user_access_level(new WP_User($user_id))) >= 0) { if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($level, "profile-view")) { $fields = get_user_option("s2member_custom_fields", $user_id); foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"], true) as $field) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_profile_field_items_4bp_before_custom_fields", get_defined_vars()); unset($__refs, $__v); if (in_array($field["id"], $fields_applicable)) { $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"])); $field_id_class = preg_replace("/_/", "-", $field_var); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } if (apply_filters("ws_plugin__s2member_during_custom_profile_field_items_4bp_during_custom_fields_display", true, get_defined_vars())) { if (!empty($field["section"]) && $field["section"] === "yes") { echo '<tr class="ws-plugin--s2member-profile-field-4bp-divider-section">' . "\n"; echo '<td colspan="2"><div class="ws-plugin--s2member-profile-field-4bp-divider-section' . (!empty($field["sectitle"]) ? '-title' : '') . '">' . (!empty($field["sectitle"]) ? $field["sectitle"] : '') . '</div></td>' . "\n"; echo '</tr>' . "\n"; } echo '<tr class="ws-plugin--s2member-profile-field-4bp ws-plugin--s2member-profile-4bp-' . esc_attr($field_id_class) . ' field_' . esc_attr($field_var) . '">' . "\n"; echo '<td class="ws-plugin--s2member-profile-field-4bp ws-plugin--s2member-profile-4bp-' . esc_attr($field_id_class) . ' field_' . esc_attr($field_var) . ' label"><span>' . $field["label"] . '</span></td>' . "\n"; echo '<td class="ws-plugin--s2member-profile-field-4bp ws-plugin--s2member-profile-4bp-' . esc_attr($field_id_class) . ' field_' . esc_attr($field_var) . ' data">' . c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, "ws_plugin__s2member_profile_4bp_", "ws-plugin--s2member-profile-4bp-", "ws-plugin--s2member-profile-field-4bp", "", "", "", $fields, $fields[$field_var], "profile-view") . '</td>' . "\n"; echo '</tr>' . "\n"; } unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_profile_field_items_4bp_after_custom_fields", get_defined_vars()); unset($__refs, $__v); } } } } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_custom_profile_field_items_4bp_after", get_defined_vars()); unset($__refs, $__v); } } } } } do_action("ws_plugin__s2member_after_custom_profile_field_items_4bp", get_defined_vars()); return; }
/** * Adds Custom Fields to BuddyPress Profiles in public view. * * @package s2Member\Custom_Reg_Fields * @since 110524RC * * @attaches-to ``add_action('bp_profile_field_item');`` */ public static function custom_profile_field_items_4bp() { global $bp; // Global reference to the BuddyPress object. static $processed = FALSE; // Process this routine only one time. do_action('ws_plugin__s2member_before_custom_profile_field_items_4bp', get_defined_vars()); if (!$processed && in_array('profile-view', $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields_4bp'])) { if (apply_filters('ws_plugin__s2member_custom_profile_field_items_4bp_display', TRUE, get_defined_vars())) { if (bp_is_user_profile() && !bp_is_user_profile_edit() && (int) bp_get_the_profile_group_id() === 1) { if (isset($bp->displayed_user->id) && ($user_id = $bp->displayed_user->id) && ($processed = TRUE)) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_custom_profile_field_items_4bp_before', get_defined_vars()); unset($__refs, $__v); if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields']) { if (($level = c_ws_plugin__s2member_user_access::user_access_level(new WP_User($user_id))) >= 0) { if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($level, 'profile-view')) { $fields = get_user_option('s2member_custom_fields', $user_id); foreach (json_decode($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields'], TRUE) as $field) { foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_custom_profile_field_items_4bp_before_custom_fields', get_defined_vars()); unset($__refs, $__v); if (in_array($field['id'], $fields_applicable)) { $field_var = preg_replace('/[^a-z0-9]/i', '_', strtolower($field['id'])); $field_id_class = preg_replace('/_/', '-', $field_var); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } if (apply_filters('ws_plugin__s2member_during_custom_profile_field_items_4bp_during_custom_fields_display', TRUE, get_defined_vars())) { if (!empty($field['section']) && $field['section'] === 'yes') { echo '<tr class="ws-plugin--s2member-profile-field-4bp-divider-section">' . "\n"; echo '<td colspan="2"><div class="ws-plugin--s2member-profile-field-4bp-divider-section' . (!empty($field['sectitle']) ? '-title' : '') . '">' . (!empty($field['sectitle']) ? $field['sectitle'] : '') . '</div></td>' . "\n"; echo '</tr>' . "\n"; } echo '<tr class="ws-plugin--s2member-profile-field-4bp ws-plugin--s2member-profile-4bp-' . esc_attr($field_id_class) . ' field_' . esc_attr($field_var) . '">' . "\n"; echo '<td class="ws-plugin--s2member-profile-field-4bp ws-plugin--s2member-profile-4bp-' . esc_attr($field_id_class) . ' field_' . esc_attr($field_var) . ' label"><span>' . $field['label'] . '</span></td>' . "\n"; echo '<td class="ws-plugin--s2member-profile-field-4bp ws-plugin--s2member-profile-4bp-' . esc_attr($field_id_class) . ' field_' . esc_attr($field_var) . ' data">' . c_ws_plugin__s2member_custom_reg_fields::custom_field_gen(__FUNCTION__, $field, 'ws_plugin__s2member_profile_4bp_', 'ws-plugin--s2member-profile-4bp-', 'ws-plugin--s2member-profile-field-4bp', '', '', '', $fields, @$fields[$field_var], 'profile-view') . '</td>' . "\n"; echo '</tr>' . "\n"; } unset($__refs, $__v); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_custom_profile_field_items_4bp_after_custom_fields', get_defined_vars()); unset($__refs, $__v); } } } } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_custom_profile_field_items_4bp_after', get_defined_vars()); unset($__refs, $__v); } } } } do_action('ws_plugin__s2member_after_custom_profile_field_items_4bp', get_defined_vars()); }