Projects : mp-wp : mp-wp_genesis
1 | <?php |
2 | /** |
3 | * User Registration API |
4 | * |
5 | * @package WordPress |
6 | */ |
7 | |
8 | /** |
9 | * Checks whether the given username exists. |
10 | * |
11 | * @since 2.0.0 |
12 | * |
13 | * @param string $username Username. |
14 | * @return null|int The user's ID on success, and null on failure. |
15 | */ |
16 | function username_exists( $username ) { |
17 | if ( $user = get_userdatabylogin( $username ) ) { |
18 | return $user->ID; |
19 | } else { |
20 | return null; |
21 | } |
22 | } |
23 | |
24 | /** |
25 | * Checks whether the given email exists. |
26 | * |
27 | * @since 2.1.0 |
28 | * @uses $wpdb |
29 | * |
30 | * @param string $email Email. |
31 | * @return bool|int The user's ID on success, and false on failure. |
32 | */ |
33 | function email_exists( $email ) { |
34 | if ( $user = get_user_by_email($email) ) |
35 | return $user->ID; |
36 | |
37 | return false; |
38 | } |
39 | |
40 | /** |
41 | * Checks whether an username is valid. |
42 | * |
43 | * @since 2.0.1 |
44 | * @uses apply_filters() Calls 'validate_username' hook on $valid check and $username as parameters |
45 | * |
46 | * @param string $username Username. |
47 | * @return bool Whether username given is valid |
48 | */ |
49 | function validate_username( $username ) { |
50 | $sanitized = sanitize_user( $username, true ); |
51 | $valid = ( $sanitized == $username ); |
52 | return apply_filters( 'validate_username', $valid, $username ); |
53 | } |
54 | |
55 | /** |
56 | * Insert an user into the database. |
57 | * |
58 | * Can update a current user or insert a new user based on whether the user's ID |
59 | * is present. |
60 | * |
61 | * Can be used to update the user's info (see below), set the user's role, and |
62 | * set the user's preference on whether they want the rich editor on. |
63 | * |
64 | * Most of the $userdata array fields have filters associated with the values. |
65 | * The exceptions are 'rich_editing', 'role', 'jabber', 'aim', 'yim', |
66 | * 'user_registered', and 'ID'. The filters have the prefix 'pre_user_' followed |
67 | * by the field name. An example using 'description' would have the filter |
68 | * called, 'pre_user_description' that can be hooked into. |
69 | * |
70 | * The $userdata array can contain the following fields: |
71 | * 'ID' - An integer that will be used for updating an existing user. |
72 | * 'user_pass' - A string that contains the plain text password for the user. |
73 | * 'user_login' - A string that contains the user's username for logging in. |
74 | * 'user_nicename' - A string that contains a nicer looking name for the user. |
75 | * The default is the user's username. |
76 | * 'user_url' - A string containing the user's URL for the user's web site. |
77 | * 'user_email' - A string containing the user's email address. |
78 | * 'display_name' - A string that will be shown on the site. Defaults to user's |
79 | * username. It is likely that you will want to change this, for both |
80 | * appearance and security through obscurity (that is if you don't use and |
81 | * delete the default 'admin' user). |
82 | * 'nickname' - The user's nickname, defaults to the user's username. |
83 | * 'first_name' - The user's first name. |
84 | * 'last_name' - The user's last name. |
85 | * 'description' - A string containing content about the user. |
86 | * 'rich_editing' - A string for whether to enable the rich editor or not. False |
87 | * if not empty. |
88 | * 'user_registered' - The date the user registered. Format is 'Y-m-d H:i:s'. |
89 | * 'role' - A string used to set the user's role. |
90 | * 'jabber' - User's Jabber account. |
91 | * 'aim' - User's AOL IM account. |
92 | * 'yim' - User's Yahoo IM account. |
93 | * |
94 | * @since 2.0.0 |
95 | * @uses $wpdb WordPress database layer. |
96 | * @uses apply_filters() Calls filters for most of the $userdata fields with the prefix 'pre_user'. See note above. |
97 | * @uses do_action() Calls 'profile_update' hook when updating giving the user's ID |
98 | * @uses do_action() Calls 'user_register' hook when creating a new user giving the user's ID |
99 | * |
100 | * @param array $userdata An array of user data. |
101 | * @return int The newly created user's ID. |
102 | */ |
103 | function wp_insert_user($userdata) { |
104 | global $wpdb; |
105 | |
106 | extract($userdata, EXTR_SKIP); |
107 | |
108 | // Are we updating or creating? |
109 | if ( !empty($ID) ) { |
110 | $ID = (int) $ID; |
111 | $update = true; |
112 | $old_user_data = get_userdata($ID); |
113 | } else { |
114 | $update = false; |
115 | // Hash the password |
116 | $user_pass = wp_hash_password($user_pass); |
117 | } |
118 | |
119 | $user_login = sanitize_user($user_login, true); |
120 | $user_login = apply_filters('pre_user_login', $user_login); |
121 | |
122 | if ( empty($user_nicename) ) |
123 | $user_nicename = sanitize_title( $user_login ); |
124 | $user_nicename = apply_filters('pre_user_nicename', $user_nicename); |
125 | |
126 | if ( empty($user_url) ) |
127 | $user_url = ''; |
128 | $user_url = apply_filters('pre_user_url', $user_url); |
129 | |
130 | if ( empty($user_email) ) |
131 | $user_email = ''; |
132 | $user_email = apply_filters('pre_user_email', $user_email); |
133 | |
134 | if ( empty($display_name) ) |
135 | $display_name = $user_login; |
136 | $display_name = apply_filters('pre_user_display_name', $display_name); |
137 | |
138 | if ( empty($nickname) ) |
139 | $nickname = $user_login; |
140 | $nickname = apply_filters('pre_user_nickname', $nickname); |
141 | |
142 | if ( empty($first_name) ) |
143 | $first_name = ''; |
144 | $first_name = apply_filters('pre_user_first_name', $first_name); |
145 | |
146 | if ( empty($last_name) ) |
147 | $last_name = ''; |
148 | $last_name = apply_filters('pre_user_last_name', $last_name); |
149 | |
150 | if ( empty($description) ) |
151 | $description = ''; |
152 | $description = apply_filters('pre_user_description', $description); |
153 | |
154 | if ( empty($rich_editing) ) |
155 | $rich_editing = 'true'; |
156 | |
157 | if ( empty($comment_shortcuts) ) |
158 | $comment_shortcuts = 'false'; |
159 | |
160 | if ( empty($admin_color) ) |
161 | $admin_color = 'fresh'; |
162 | $admin_color = preg_replace('|[^a-z0-9 _.\-@]|i', '', $admin_color); |
163 | |
164 | if ( empty($use_ssl) ) |
165 | $use_ssl = 0; |
166 | |
167 | if ( empty($jabber) ) |
168 | $jabber = ''; |
169 | |
170 | if ( empty($aim) ) |
171 | $aim = ''; |
172 | |
173 | if ( empty($yim) ) |
174 | $yim = ''; |
175 | |
176 | if ( empty($user_registered) ) |
177 | $user_registered = gmdate('Y-m-d H:i:s'); |
178 | |
179 | $data = compact( 'user_pass', 'user_email', 'user_url', 'user_nicename', 'display_name', 'user_registered' ); |
180 | $data = stripslashes_deep( $data ); |
181 | |
182 | if ( $update ) { |
183 | $wpdb->update( $wpdb->users, $data, compact( 'ID' ) ); |
184 | $user_id = (int) $ID; |
185 | } else { |
186 | $wpdb->insert( $wpdb->users, $data + compact( 'user_login' ) ); |
187 | $user_id = (int) $wpdb->insert_id; |
188 | } |
189 | |
190 | update_usermeta( $user_id, 'first_name', $first_name); |
191 | update_usermeta( $user_id, 'last_name', $last_name); |
192 | update_usermeta( $user_id, 'nickname', $nickname ); |
193 | update_usermeta( $user_id, 'description', $description ); |
194 | update_usermeta( $user_id, 'jabber', $jabber ); |
195 | update_usermeta( $user_id, 'aim', $aim ); |
196 | update_usermeta( $user_id, 'yim', $yim ); |
197 | update_usermeta( $user_id, 'rich_editing', $rich_editing); |
198 | update_usermeta( $user_id, 'comment_shortcuts', $comment_shortcuts); |
199 | update_usermeta( $user_id, 'admin_color', $admin_color); |
200 | update_usermeta( $user_id, 'use_ssl', $use_ssl); |
201 | |
202 | if ( $update && isset($role) ) { |
203 | $user = new WP_User($user_id); |
204 | $user->set_role($role); |
205 | } |
206 | |
207 | if ( !$update ) { |
208 | $user = new WP_User($user_id); |
209 | $user->set_role(get_option('default_role')); |
210 | } |
211 | |
212 | wp_cache_delete($user_id, 'users'); |
213 | wp_cache_delete($user_login, 'userlogins'); |
214 | |
215 | if ( $update ) |
216 | do_action('profile_update', $user_id, $old_user_data); |
217 | else |
218 | do_action('user_register', $user_id); |
219 | |
220 | return $user_id; |
221 | } |
222 | |
223 | /** |
224 | * Update an user in the database. |
225 | * |
226 | * It is possible to update a user's password by specifying the 'user_pass' |
227 | * value in the $userdata parameter array. |
228 | * |
229 | * If $userdata does not contain an 'ID' key, then a new user will be created |
230 | * and the new user's ID will be returned. |
231 | * |
232 | * If current user's password is being updated, then the cookies will be |
233 | * cleared. |
234 | * |
235 | * @since 2.0.0 |
236 | * @see wp_insert_user() For what fields can be set in $userdata |
237 | * @uses wp_insert_user() Used to update existing user or add new one if user doesn't exist already |
238 | * |
239 | * @param array $userdata An array of user data. |
240 | * @return int The updated user's ID. |
241 | */ |
242 | function wp_update_user($userdata) { |
243 | $ID = (int) $userdata['ID']; |
244 | |
245 | // First, get all of the original fields |
246 | $user = get_userdata($ID); |
247 | |
248 | // Escape data pulled from DB. |
249 | $user = add_magic_quotes(get_object_vars($user)); |
250 | |
251 | // If password is changing, hash it now. |
252 | if ( ! empty($userdata['user_pass']) ) { |
253 | $plaintext_pass = $userdata['user_pass']; |
254 | $userdata['user_pass'] = wp_hash_password($userdata['user_pass']); |
255 | } |
256 | |
257 | // Merge old and new fields with new fields overwriting old ones. |
258 | $userdata = array_merge($user, $userdata); |
259 | $user_id = wp_insert_user($userdata); |
260 | |
261 | // Update the cookies if the password changed. |
262 | $current_user = wp_get_current_user(); |
263 | if ( $current_user->id == $ID ) { |
264 | if ( isset($plaintext_pass) ) { |
265 | wp_clear_auth_cookie(); |
266 | wp_set_auth_cookie($ID); |
267 | } |
268 | } |
269 | |
270 | return $user_id; |
271 | } |
272 | |
273 | /** |
274 | * A simpler way of inserting an user into the database. |
275 | * |
276 | * Creates a new user with just the username, password, and email. For a more |
277 | * detail creation of a user, use wp_insert_user() to specify more infomation. |
278 | * |
279 | * @since 2.0.0 |
280 | * @see wp_insert_user() More complete way to create a new user |
281 | * @uses $wpdb Escapes $username and $email parameters |
282 | * |
283 | * @param string $username The user's username. |
284 | * @param string $password The user's password. |
285 | * @param string $email The user's email (optional). |
286 | * @return int The new user's ID. |
287 | */ |
288 | function wp_create_user($username, $password, $email = '') { |
289 | global $wpdb; |
290 | |
291 | $user_login = $wpdb->escape($username); |
292 | $user_email = $wpdb->escape($email); |
293 | $user_pass = $password; |
294 | |
295 | $userdata = compact('user_login', 'user_email', 'user_pass'); |
296 | return wp_insert_user($userdata); |
297 | } |
298 | |
299 | ?> |