function ym_update_user_custom_fields($user_id, $data = array()) { global $ym_update_user_custom_fields_called; if ($ym_update_user_custom_fields_called) { return; } $ym_update_user_custom_fields_called = TRUE; // master sync // email first name last name password $core = array('ID' => $user_id); $return = 1; foreach ((array) $data as $id => $item) { $field = ym_get_custom_field_by_id($id); if ($item) { switch ($field['name']) { case 'user_email': case 'user_url': $core[$field['name']] = $item; break; case 'first_name': case 'last_name': update_user_meta($user_id, $field['name'], $item); break; case 'ym_password': // don't store the password unset($data[$field['name']]); if (!empty($item)) { wp_set_password($item, $user_id); $return = 'password'; } break; case 'user_description': update_user_meta($user_id, 'description', $item); break; } } } if (count($core) > 1) { wp_update_user($core); } // explicity clean/stop save of ym_password $id = ym_get_custom_field_by_name('ym_password'); $data[$id['id']] = ''; update_user_meta($user_id, 'ym_custom_fields', $data); return $return; }
function create($email, $sub_id = false, $smflag = false, $username = false, $password = false, $custom_fields = false, $package = false, $expire_date = false) { global $wpdb; // is email a email? if (empty($email)) { return new WP_Error('empty_email', __('<strong>ERROR</strong>: Please type your e-mail address.')); } else { if (!is_email($email)) { return new WP_Error('invalid_email', __('<strong>ERROR</strong>: The email address isn’t correct.')); } } if (email_exists($email)) { return new WP_Error('existing_user_email', __('This email address is already registered.')); } if (!$username) { $username = $email; } if ($username) { if (username_exists($username)) { return new WP_Error('existing_user_login', __('This Username is already registered.')); } } if (!$password) { $password = wp_generate_password(12, false); } $pw_hash = wp_hash_password($password); //$user_id = wp_create_user($username,$password,$email); - can't be used due to register action $user_login = $username; $user_pass = $pw_hash; $user_email = $email; $user_nicename = $username; $display_name = $username; $user_registered = gmdate('Y-m-d H:i:s'); $user_url = $custom_fields['user_url']; $data = compact('user_pass', 'user_email', 'user_url', 'user_nicename', 'display_name', 'user_registered'); $data = stripslashes_deep($data); $wpdb->insert($wpdb->users, $data + compact('user_login')); $user_id = (int) $wpdb->insert_id; $rich_editing = 'true'; $comment_shortcuts = 'false'; $admin_color = 'fresh'; $use_ssl = 0; update_user_meta($user_id, 'rich_editing', $rich_editing); update_user_meta($user_id, 'comment_shortcuts', $comment_shortcuts); update_user_meta($user_id, 'admin_color', $admin_color); update_user_meta($user_id, 'use_ssl', $use_ssl); $this->ID = $user_id; //Custom Fields if ($custom_fields) { //take the array and check the field names if (is_array($custom_fields)) { $ym_custom = get_user_meta($user_id, 'ym_custom_fields', TRUE); foreach ($custom_fields as $field => $value) { $custom_field = ym_get_custom_field_by_name($field); if ($custom_field) { $ym_custom[$custom_field['id']] = $value; //Patch to fix first_name & last_name not populating on import if (in_array($custom_field['name'], array('first_name', 'last_name'))) { update_user_meta($user_id, $custom_field['name'], $value); } } } update_user_meta($user_id, 'ym_custom_fields', $ym_custom); } } // package if (isset($sub_id) || isset($package)) { if (isset($sub_id)) { // pass to payment engine $pay = new ym_payment_gateway(); $pay->code = 'ym_create'; $pay->name = 'ym_create'; $pay->nomore_email = TRUE; // call full update $pay->do_buy_subscription($sub_id, $user_id, TRUE); //Override the expire date if its set if ($expire_date) { $data = array('expire_date' => $expire_date); //Update the user data $this->update($data); $this->save(); } } elseif (isset($package) && is_array($package)) { $this->account_type = $package['account_type']; $this->duration = $package['duration']; $this->duration_type = $package['duration_type']; if ($package['expire_date']) { $this->expire_date = intval($package['expire_date']); } else { $this->expire_date = $this->expiry_time($package['duration'], $package['duration_type']); } $this->role = $package['role']; $this->last_pay_date = time(); $this->status_str = __('API Account: ', 'ym') . ucwords($this->account_type); // make active $this->status = YM_STATUS_ACTIVE; @ym_log_transaction(YM_ACCOUNT_TYPE_ASSIGNATION, $this->account_type, $user_id); //Update the user data $this->save(); //log in transaction table @ym_log_transaction(YM_ACCESS_EXTENSION, date(YM_DATEFORMAT, time()), $user_id); @ym_log_transaction(YM_USER_STATUS_UPDATE, 'Active', $user_id); //Set a role if (!$this->role) { $this->role = 'subscriber'; } $this->updaterole($this->role); } } //last thing, send notification if flag is set if ($smflag) { ym_email_add_filters(); wp_new_user_notification($user_id, $password); ym_email_remove_filters(); } do_action('yourmember_user_created', $user_id, $password); //tidy up after ourselves wp_cache_delete($user_id, 'users'); wp_cache_delete($user_login, 'userlogins'); // call user_register? //do_action('user_register', $user_id); return $user_id; }
function ym_shortcode_user($args, $content = '', $tag) { $return = ''; $name = isset($args['name']) ? $args['name'] : ''; $name = strtolower($name); $alt = isset($args['alt']) ? $args['alt'] : ''; $user_id = isset($args['user_id']) ? $args['user_id'] : ''; $exempt = isset($args['exempt']) ? $args['exempt'] : ''; if ($user_id) { if (is_numeric($user_id)) { $user = get_userdata($user_id); } else { $user_id = isset($_REQUEST[$user_id]) ? $_REQUEST[$user_id] : ''; if (is_numeric($user_id)) { $user = get_userdata($user_id); } else { return false; } } if (isset($exempt)) { $user_ids = explode(',', $exempt); foreach ($user_ids as $userID) { if ($userID == $user->ID) { return false; } } } } else { get_currentuserinfo(); global $current_user; $user = $current_user; } if ($tag == 'ym_user_url' || $name == 'user_url') { $return = $user->user_url ? $user->user_url : '-'; } else { if ($tag == 'ym_user_register_date') { $return = $user->user_registered; } else { if ($tag == 'ym_user_email' || $name == 'user_email') { $return = $user->user_email; } else { if ($tag == 'ym_user_first_name' || $name == 'first_name') { $return = $user->user_firstname; } else { if ($tag == 'ym_user_last_name' || $name == 'last_name') { $return = $user->user_lastname; } else { if ($tag == 'ym_user_username') { $return = $user->user_login; } else { if ($tag == 'ym_user_nickname') { $return = $user->nickname; } else { if ($tag == 'ym_user_displayname') { $return = $user->display_name; } else { if ($tag == 'ym_user_description' || $name == 'user_description') { $return = get_user_meta($user->ID, 'description', TRUE); } else { if ($tag == 'ym_user_custom' && $name) { $custom_field = ym_get_custom_field_by_name($name); $id = $custom_field['id']; $user_fields = ym_get_custom_fields($user->ID); // convert key to value? $keys = array(); if ($custom_field['type'] == 'multiselect' || $custom_field['type'] == 'select') { $options = explode(';', $custom_field['available_values']); foreach ($options as $option) { if (strpos($option, ':')) { list($key, $value) = explode(':', $option); } else { $key = $value = $option; } $keys[$key] = $value; } } if (is_array($user_fields[$id])) { foreach ($user_fields[$id] as $x => $entry) { $user_fields[$id][$x] = isset($keys[$entry]) ? $keys[$entry] : $entry; } $user_fields[$id] = implode($user_fields[$id], ', '); } else { $user_fields[$id] = isset($keys[$user_fields[$id]]) ? $keys[$user_fields[$id]] : $user_fields[$id]; } $return = $user_fields[$id] ? $user_fields[$id] : $alt; } } } } } } } } } } return $return; }