/** * Creates a new User. * * @package s2Member\API_Remote_Ops * @since 110713 * * @param array An input array of Remote Operation parameters. * @return str Returns a serialized array with an `ID` element object on success, * else returns a string beginning with `Error:` on failure; which will include details regarding the error. */ public static function create_user($op = NULL) { if (!empty($op["op"]) && $op["op"] === "create_user" && !empty($op["data"]) && is_array($op["data"])) { if (!empty($op["data"]["modify_if_login_exists"])) { if (!empty($op["data"]["user_login"]) && ($_user = new WP_User((string) $op["data"]["user_login"])) && !empty($_user->ID)) { return c_ws_plugin__s2member_pro_remote_ops_in::modify_user(array_merge($op, array("op" => "modify_user"))); } } $GLOBALS["ws_plugin__s2member_registration_vars"] = array(); $v =& $GLOBALS["ws_plugin__s2member_registration_vars"]; $v["ws_plugin__s2member_custom_reg_field_user_login"] = (string) @$op["data"]["user_login"]; $v["ws_plugin__s2member_custom_reg_field_user_email"] = (string) @$op["data"]["user_email"]; if (empty($op["data"]["user_pass"]) || !is_string($op["data"]["user_pass"])) { $op["data"]["user_pass"] = wp_generate_password(); } $GLOBALS["ws_plugin__s2member_generate_password_return"] = $op["data"]["user_pass"]; $v["ws_plugin__s2member_custom_reg_field_first_name"] = (string) @$op["data"]["first_name"]; $v["ws_plugin__s2member_custom_reg_field_last_name"] = (string) @$op["data"]["last_name"]; $v["ws_plugin__s2member_custom_reg_field_s2member_level"] = (string) @$op["data"]["s2member_level"]; $v["ws_plugin__s2member_custom_reg_field_s2member_ccaps"] = (string) @$op["data"]["s2member_ccaps"]; $v["ws_plugin__s2member_custom_reg_field_s2member_registration_ip"] = (string) @$op["data"]["s2member_registration_ip"]; $v["ws_plugin__s2member_custom_reg_field_s2member_subscr_gateway"] = (string) @$op["data"]["s2member_subscr_gateway"]; $v["ws_plugin__s2member_custom_reg_field_s2member_subscr_id"] = (string) @$op["data"]["s2member_subscr_id"]; $v["ws_plugin__s2member_custom_reg_field_s2member_custom"] = (string) @$op["data"]["s2member_custom"]; $v["ws_plugin__s2member_custom_reg_field_s2member_auto_eot_time"] = (string) @$op["data"]["s2member_auto_eot_time"]; $v["ws_plugin__s2member_custom_reg_field_s2member_notes"] = (string) @$op["data"]["s2member_notes"]; $v["ws_plugin__s2member_custom_reg_field_opt_in"] = (string) @$op["data"]["opt_in"]; 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($op["data"]["custom_fields"][$field_var])) { $v["ws_plugin__s2member_custom_reg_field_" . $field_var] = $op["data"]["custom_fields"][$field_var]; } } } $create = array("user_login" => (string) @$op["data"]["user_login"], "user_pass" => (string) @$op["data"]["user_pass"], "user_email" => (string) @$op["data"]["user_email"]); if ((is_multisite() && ($new = $user_id = c_ws_plugin__s2member_registrations::ms_create_existing_user($create["user_login"], $create["user_email"], $create["user_pass"])) || ($new = $user_id = wp_create_user($create["user_login"], $create["user_pass"], $create["user_email"]))) && !is_wp_error($new)) { if (is_object($user = new WP_User($user_id)) && !empty($user->ID) && ($user_id = $user->ID)) { if (!empty($op["data"]["notification"])) { wp_new_user_notification($user_id, $op["data"]["user_pass"]); } return serialize(array("ID" => $user_id)); } return "Error: Creation may have failed. Unable to obtain WP_User ID."; } else { if (is_wp_error($new) && $new->get_error_code()) { return "Error: " . $new->get_error_message(); } } return "Error: User creation failed for an unknown reason. Please try again."; } return "Error: Empty or invalid request ( `create_user` ). Please try again."; }
/** * Creates a new User. * * @package s2Member\API_Remote_Ops * @since 110713 * * @param array $op An input array of Remote Operation parameters. * * @return string Returns a serialized array with an `ID` element object on success, * else returns a string beginning with `Error:` on failure; which will include details regarding the error. */ public static function create_user($op = NULL) { if (!empty($op['op']) && $op['op'] === 'create_user' && !empty($op['data']) && is_array($op['data'])) { if (!empty($op['data']['modify_if_login_exists'])) { if (!empty($op['data']['user_login']) && ($_user = new WP_User((string) $op['data']['user_login'])) && !empty($_user->ID)) { return c_ws_plugin__s2member_pro_remote_ops_in::modify_user(array_merge($op, array('op' => 'modify_user'))); } } $GLOBALS['ws_plugin__s2member_registration_vars'] = array(); $v =& $GLOBALS['ws_plugin__s2member_registration_vars']; $v['ws_plugin__s2member_custom_reg_field_user_login'] = (string) @$op['data']['user_login']; $v['ws_plugin__s2member_custom_reg_field_user_email'] = (string) @$op['data']['user_email']; if (empty($op['data']['user_pass']) || !is_string($op['data']['user_pass'])) { $op['data']['user_pass'] = wp_generate_password(); } $GLOBALS['ws_plugin__s2member_generate_password_return'] = $op['data']['user_pass']; $v['ws_plugin__s2member_custom_reg_field_first_name'] = (string) @$op['data']['first_name']; $v['ws_plugin__s2member_custom_reg_field_last_name'] = (string) @$op['data']['last_name']; $v['ws_plugin__s2member_custom_reg_field_s2member_level'] = (string) @$op['data']['s2member_level']; $v['ws_plugin__s2member_custom_reg_field_s2member_ccaps'] = (string) @$op['data']['s2member_ccaps']; $v['ws_plugin__s2member_custom_reg_field_s2member_registration_ip'] = (string) @$op['data']['s2member_registration_ip']; $v['ws_plugin__s2member_custom_reg_field_s2member_subscr_gateway'] = (string) @$op['data']['s2member_subscr_gateway']; $v['ws_plugin__s2member_custom_reg_field_s2member_subscr_id'] = (string) @$op['data']['s2member_subscr_id']; $v['ws_plugin__s2member_custom_reg_field_s2member_custom'] = (string) @$op['data']['s2member_custom']; $v['ws_plugin__s2member_custom_reg_field_s2member_auto_eot_time'] = (string) @$op['data']['s2member_auto_eot_time']; $v['ws_plugin__s2member_custom_reg_field_s2member_notes'] = (string) @$op['data']['s2member_notes']; $v['ws_plugin__s2member_custom_reg_field_opt_in'] = (string) @$op['data']['opt_in']; 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($op['data']['custom_fields'][$field_var])) { $v['ws_plugin__s2member_custom_reg_field_' . $field_var] = $op['data']['custom_fields'][$field_var]; } } } $create = array('user_login' => (string) @$op['data']['user_login'], 'user_pass' => (string) @$op['data']['user_pass'], 'user_email' => (string) @$op['data']['user_email']); /** @var WP_Error|integer $new Need this for IDEs. Particular in the case of a WP_Error. */ if ((is_multisite() && ($new = $user_id = c_ws_plugin__s2member_registrations::ms_create_existing_user($create['user_login'], $create['user_email'], $create['user_pass'])) || ($new = $user_id = wp_create_user($create['user_login'], $create['user_pass'], $create['user_email']))) && !is_wp_error($new)) { if (is_object($user = new WP_User($user_id)) && !empty($user->ID) && ($user_id = $user->ID)) { if (!empty($op['data']['notification'])) { wp_new_user_notification($user_id, $op['data']['user_pass']); } return serialize(array('ID' => $user_id)); } return 'Error: Creation may have failed. Unable to obtain WP_User ID.'; } else { if (is_wp_error($new) && $new->get_error_code()) { return 'Error: ' . $new->get_error_message(); } } return 'Error: User creation failed for an unknown reason. Please try again.'; } return 'Error: Empty or invalid request ( `create_user` ). Please try again.'; }