/** * Retrieves a field value. Also supports Custom Fields. * * @package optimizeMember\Utilities * @since 3.5 * * @param str $field_id Required. A unique Custom Registration/Profile Field ID, that you configured with optimizeMember. * Or, this could be set to any property that exists on the WP_User object for a particular User; * ( i.e. `id`, `ID`, `user_login`, `user_email`, `first_name`, `last_name`, `display_name`, `ip`, `IP`, * `optimizemember_registration_ip`, `optimizemember_custom`, `optimizemember_subscr_id`, `optimizemember_subscr_or_wp_id`, * `optimizemember_subscr_gateway`, `optimizemember_custom_fields`, `optimizemember_file_download_access_[log|arc]`, * `optimizemember_auto_eot_time`, `optimizemember_last_payment_time`, `optimizemember_paid_registration_times`, * `optimizemember_access_role`, `optimizemember_access_level`, `optimizemember_access_label`, * `optimizemember_access_ccaps`, etc, etc. ). * @param int|str $user_id Optional. Defaults to the current User's ID. * @return mixed The value of the requested field, or false if the field does not exist. */ public static function get_user_field($field_id = FALSE, $user_id = FALSE) { global $wpdb; /* Global database object reference. We'll need this to obtain the right database prefix. */ /**/ $current_user = wp_get_current_user(); /* Current User's object ( used when/if `$user_id` is empty ). */ /**/ if (is_object($user = $user_id ? new WP_User($user_id) : $current_user) && !empty($user->ID) && ($user_id = $user->ID)) { if (isset($user->{$field_id})) { /* Immediate User object property? ( most likely ) */ return $user->{$field_id}; } else { if (isset($user->data->{$field_id})) { /* Also try the data object property. */ return $user->data->{$field_id}; } else { if (isset($user->{$wpdb->prefix . $field_id})) { /* Immediate prefixed? */ return $user->{$wpdb->prefix . $field_id}; } else { if (isset($user->data->{$wpdb->prefix . $field_id})) { /* Data prefixed? */ return $user->data->{$wpdb->prefix . $field_id}; } else { if (strcasecmp($field_id, "full_name") === 0) { /* First/last full name? */ return trim($user->first_name . " " . $user->last_name); } else { if (preg_match("/^(email|user_email)\$/i", $field_id)) { /* Email address? */ return $user->user_email; } else { if (preg_match("/^(login|user_login)\$/i", $field_id)) { /* Username / login? */ return $user->user_login; } else { if (strcasecmp($field_id, "optimizemember_access_role") === 0) { /* Role name/ID? */ return c_ws_plugin__optimizemember_user_access::user_access_role($user); } else { if (strcasecmp($field_id, "optimizemember_access_level") === 0) { /* Access Level? */ return c_ws_plugin__optimizemember_user_access::user_access_level($user); } else { if (strcasecmp($field_id, "optimizemember_access_label") === 0) { /* Access Label? */ return c_ws_plugin__optimizemember_user_access::user_access_label($user); } else { if (strcasecmp($field_id, "optimizemember_access_ccaps") === 0) { /* Custom Caps? */ return c_ws_plugin__optimizemember_user_access::user_access_ccaps($user); } else { if (strcasecmp($field_id, "ip") === 0 && is_object($current_user) && !empty($current_user->ID) && $current_user->ID === ($user_id = $user->ID)) { return $_SERVER["REMOTE_ADDR"]; } else { if (strcasecmp($field_id, "optimizemember_registration_ip") === 0 || strcasecmp($field_id, "reg_ip") === 0 || strcasecmp($field_id, "ip") === 0) { return get_user_option("optimizemember_registration_ip", $user_id); } else { if (strcasecmp($field_id, "optimizemember_subscr_or_wp_id") === 0) { return ($subscr_id = get_user_option("optimizemember_subscr_id", $user_id)) ? $subscr_id : $user_id; } else { if (is_array($fields = get_user_option("optimizemember_custom_fields", $user_id))) { if (isset($fields[preg_replace("/[^a-z0-9]/i", "_", strtolower($field_id))])) { return $fields[preg_replace("/[^a-z0-9]/i", "_", strtolower($field_id))]; } } } } } } } } } } } } } } } } } /**/ return false; /* Default, return false. */ }
/** * Fills Replacement Codes in Special Redirection URLs. * * @package optimizeMember\Login_Redirects * @since 3.5 * * @param str $url A URL with possible Replacement Codes in it. * @param obj $user Optional. A `WP_User` object. Defaults to the current User, if logged-in. * @param bool $root_returns_false Defaults to false. True if the function should return false when a URL is reduced to the site root. * @return str|bool A Special Login Redirection URL with Replacement Codes having been parsed, or false if ``$root_returns_false = true`` and the URL is the site root. */ public static function fill_login_redirect_rc_vars($url = FALSE, $user = FALSE, $root_returns_false = FALSE) { eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__optimizemember_before_fill_login_redirect_rc_vars", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ $url = (string) $url; /* Force ``$url`` to a string value. */ $orig_url = $url; /* Record the original URL that was passed in. */ /**/ $user = (is_object($user) || is_object($user = is_user_logged_in() ? wp_get_current_user() : false)) && !empty($user->ID) ? $user : false; /**/ $user_id = $user ? (string) $user->ID : ""; $user_login = $user ? (string) strtolower($user->user_login) : ""; /**/ $user_level = (string) c_ws_plugin__optimizemember_user_access::user_access_level($user); $user_role = (string) c_ws_plugin__optimizemember_user_access::user_access_role($user); $user_ccaps = (string) implode("-", c_ws_plugin__optimizemember_user_access::user_access_ccaps($user)); $user_logins = $user ? (string) (int) get_user_option("optimizemember_login_counter", $user_id) : "-1"; /**/ $url = preg_replace("/%%current_user_login%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds($user_login), $url); $url = preg_replace("/%%current_user_id%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds($user_id), $url); $url = preg_replace("/%%current_user_level%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds($user_level), $url); $url = preg_replace("/%%current_user_role%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds($user_role), $url); $url = preg_replace("/%%current_user_ccaps%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds($user_ccaps), $url); $url = preg_replace("/%%current_user_logins%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds($user_logins), $url); /**/ if ($url !== $orig_url && (!($parse = c_ws_plugin__optimizemember_utils_urls::parse_url($url, -1, false)) || !empty($parse["path"]) && strpos($parse["path"], "//") !== false)) { $url = site_url("/"); } /* Defaults to Home Page. We don't return invalid URLs produced by empty Replacement Codes ( i.e. with `//` ). */ /**/ if ($root_returns_false && c_ws_plugin__optimizemember_utils_conds::is_site_root($url)) { $url = false; } /* In case we need to return false on root URLs ( i.e. don't protect the Home Page inadvertently ). */ /**/ return apply_filters("ws_plugin__optimizemember_fill_login_redirect_rc_vars", $url, get_defined_vars()); }
/** * Fills Replacement Code variables in URIs; collectively. * * @package optimizeMember\URIs * @since 3.5 * * @param str $uris A URI string, or a string of multiple URIs is also fine. * @param obj $user Optional. A `WP_User` object. Defaults to the current User, if logged-in. * @return str Collective string of input URIs, with Replacement Codes having been filled. */ public static function fill_ruri_level_access_rc_vars($uris = FALSE, $user = FALSE) { eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action("ws_plugin__optimizemember_before_fill_ruri_level_access_rc_vars", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ $uris = (string) $uris; /* Force ``$uris`` to a string value. */ $orig_uris = $uris; /* Record the original URIs that were passed in; collectively. */ /**/ $user = (is_object($user) || is_object($user = is_user_logged_in() ? wp_get_current_user() : false)) && !empty($user->ID) ? $user : false; /**/ $user_id = $user ? (string) $user->ID : ""; $user_login = $user ? (string) strtolower($user->user_login) : ""; /**/ $user_level = (string) c_ws_plugin__optimizemember_user_access::user_access_level($user); $user_role = (string) c_ws_plugin__optimizemember_user_access::user_access_role($user); $user_ccaps = (string) implode("-", c_ws_plugin__optimizemember_user_access::user_access_ccaps($user)); $user_logins = $user ? (string) (int) get_user_option("optimizemember_login_counter", $user_id) : "-1"; /**/ $uris = strlen($user_login) ? preg_replace("/%%current_user_login%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds($user_login), $uris) : $uris; $uris = strlen($user_id) ? preg_replace("/%%current_user_id%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds($user_id), $uris) : $uris; $uris = strlen($user_level) ? preg_replace("/%%current_user_level%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds($user_level), $uris) : $uris; $uris = strlen($user_role) ? preg_replace("/%%current_user_role%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds($user_role), $uris) : $uris; $uris = strlen($user_ccaps) ? preg_replace("/%%current_user_ccaps%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds($user_ccaps), $uris) : $uris; $uris = strlen($user_logins) ? preg_replace("/%%current_user_logins%%/i", c_ws_plugin__optimizemember_utils_strings::esc_ds($user_logins), $uris) : $uris; /**/ return apply_filters("ws_plugin__optimizemember_fill_ruri_level_access_rc_vars", $uris, get_defined_vars()); }