X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/fef8173b8c3bad08f495551e43cfdeac1cae6021..refs/tags/wordpress-3.3.1-scripts:/wp-includes/pluggable.php diff --git a/wp-includes/pluggable.php b/wp-includes/pluggable.php index 9bf35d70..df20cf63 100644 --- a/wp-includes/pluggable.php +++ b/wp-includes/pluggable.php @@ -98,27 +98,31 @@ if ( !function_exists('get_userdata') ) : * @since 0.71 * * @param int $user_id User ID - * @return bool|object False on failure, User DB row object + * @return bool|object False on failure, WP_User object on success */ function get_userdata( $user_id ) { - global $wpdb; - - if ( ! is_numeric( $user_id ) ) - return false; - - $user_id = absint( $user_id ); - if ( ! $user_id ) - return false; - - $user = wp_cache_get( $user_id, 'users' ); + return get_user_by( 'id', $user_id ); +} +endif; - if ( $user ) - return $user; +if ( !function_exists('get_user_by') ) : +/** + * Retrieve user info by a given field + * + * @since 2.8.0 + * + * @param string $field The field to retrieve the user with. id | slug | email | login + * @param int|string $value A value for $field. A user ID, slug, email address, or login name. + * @return bool|object False on failure, WP_User object on success + */ +function get_user_by( $field, $value ) { + $userdata = WP_User::get_data_by( $field, $value ); - if ( ! $user = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->users WHERE ID = %d LIMIT 1", $user_id ) ) ) + if ( !$userdata ) return false; - _fill_user( $user ); + $user = new WP_User; + $user->init( $userdata ); return $user; } @@ -130,103 +134,32 @@ if ( !function_exists('cache_users') ) : * * @since 3.0.0 * - * @param array $users User ID numbers list + * @param array $user_ids User ID numbers list */ -function cache_users( $users ) { +function cache_users( $user_ids ) { global $wpdb; $clean = array(); - foreach($users as $id) { + foreach ( $user_ids as $id ) { $id = (int) $id; - if (wp_cache_get($id, 'users')) { - // seems to be cached already - } else { + if ( !wp_cache_get( $id, 'users' ) ) { $clean[] = $id; } } - if ( 0 == count($clean) ) + if ( empty( $clean ) ) return; - $list = implode(',', $clean); - - $results = $wpdb->get_results("SELECT * FROM $wpdb->users WHERE ID IN ($list)"); + $list = implode( ',', $clean ); - _fill_many_users($results); -} -endif; + $users = $wpdb->get_results( "SELECT * FROM $wpdb->users WHERE ID IN ($list)" ); -if ( !function_exists('get_user_by') ) : -/** - * Retrieve user info by a given field - * - * @since 2.8.0 - * - * @param string $field The field to retrieve the user with. id | slug | email | login - * @param int|string $value A value for $field. A user ID, slug, email address, or login name. - * @return bool|object False on failure, User DB row object - */ -function get_user_by($field, $value) { - global $wpdb; - - switch ($field) { - case 'id': - return get_userdata($value); - break; - case 'slug': - $user_id = wp_cache_get($value, 'userslugs'); - $field = 'user_nicename'; - break; - case 'email': - $user_id = wp_cache_get($value, 'useremail'); - $field = 'user_email'; - break; - case 'login': - $value = sanitize_user( $value ); - $user_id = wp_cache_get($value, 'userlogins'); - $field = 'user_login'; - break; - default: - return false; + $ids = array(); + foreach ( $users as $user ) { + update_user_caches( $user ); + $ids[] = $user->ID; } - - if ( false !== $user_id ) - return get_userdata($user_id); - - if ( !$user = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->users WHERE $field = %s", $value) ) ) - return false; - - _fill_user($user); - - return $user; -} -endif; - -if ( !function_exists('get_userdatabylogin') ) : -/** - * Retrieve user info by login name. - * - * @since 0.71 - * - * @param string $user_login User's username - * @return bool|object False on failure, User DB row object - */ -function get_userdatabylogin($user_login) { - return get_user_by('login', $user_login); -} -endif; - -if ( !function_exists('get_user_by_email') ) : -/** - * Retrieve user info by email. - * - * @since 2.5 - * - * @param string $email User's email address - * @return bool|object False on failure, User DB row object - */ -function get_user_by_email($email) { - return get_user_by('email', $email); + update_meta_cache( 'user', $ids ); } endif; @@ -259,7 +192,6 @@ if ( !function_exists( 'wp_mail' ) ) : * @uses do_action_ref_array() Calls 'phpmailer_init' hook on the reference to * phpmailer object. * @uses PHPMailer - * @ * * @param string|array $to Array or comma-separated list of email addresses to send message. * @param string $subject Email subject @@ -281,7 +213,7 @@ function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() if ( !is_object( $phpmailer ) || !is_a( $phpmailer, 'PHPMailer' ) ) { require_once ABSPATH . WPINC . '/class-phpmailer.php'; require_once ABSPATH . WPINC . '/class-smtp.php'; - $phpmailer = new PHPMailer(); + $phpmailer = new PHPMailer( true ); } // Headers @@ -296,6 +228,8 @@ function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() $tempheaders = $headers; } $headers = array(); + $cc = array(); + $bcc = array(); // If it's actually got contents if ( !empty( $tempheaders ) ) { @@ -400,7 +334,19 @@ function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() $to = explode( ',', $to ); foreach ( (array) $to as $recipient ) { - $phpmailer->AddAddress( trim( $recipient ) ); + try { + // Break $recipient into name and address parts if in the format "Foo " + $recipient_name = ''; + if( preg_match( '/(.*)<(.+)>/', $recipient, $matches ) ) { + if ( count( $matches ) == 3 ) { + $recipient_name = $matches[1]; + $recipient = $matches[2]; + } + } + $phpmailer->AddAddress( $recipient, $recipient_name); + } catch ( phpmailerException $e ) { + continue; + } } // Set mail's subject and body @@ -410,13 +356,37 @@ function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() // Add any CC and BCC recipients if ( !empty( $cc ) ) { foreach ( (array) $cc as $recipient ) { - $phpmailer->AddCc( trim($recipient) ); + try { + // Break $recipient into name and address parts if in the format "Foo " + $recipient_name = ''; + if( preg_match( '/(.*)<(.+)>/', $recipient, $matches ) ) { + if ( count( $matches ) == 3 ) { + $recipient_name = $matches[1]; + $recipient = $matches[2]; + } + } + $phpmailer->AddCc( $recipient, $recipient_name ); + } catch ( phpmailerException $e ) { + continue; + } } } if ( !empty( $bcc ) ) { foreach ( (array) $bcc as $recipient) { - $phpmailer->AddBcc( trim($recipient) ); + try { + // Break $recipient into name and address parts if in the format "Foo " + $recipient_name = ''; + if( preg_match( '/(.*)<(.+)>/', $recipient, $matches ) ) { + if ( count( $matches ) == 3 ) { + $recipient_name = $matches[1]; + $recipient = $matches[2]; + } + } + $phpmailer->AddBcc( $recipient, $recipient_name ); + } catch ( phpmailerException $e ) { + continue; + } } } @@ -455,16 +425,24 @@ function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() if ( !empty( $attachments ) ) { foreach ( $attachments as $attachment ) { - $phpmailer->AddAttachment($attachment); + try { + $phpmailer->AddAttachment($attachment); + } catch ( phpmailerException $e ) { + continue; + } } } do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) ); // Send! - $result = @$phpmailer->Send(); + try { + $phpmailer->Send(); + } catch ( phpmailerException $e ) { + return false; + } - return $result; + return true; } endif; @@ -548,7 +526,7 @@ function wp_validate_auth_cookie($cookie = '', $scheme = '') { return false; } - $user = get_userdatabylogin($username); + $user = get_user_by('login', $username); if ( ! $user ) { do_action('auth_cookie_bad_username', $cookie_elements); return false; @@ -688,23 +666,11 @@ function wp_set_auth_cookie($user_id, $remember = false, $secure = '') { do_action('set_auth_cookie', $auth_cookie, $expire, $expiration, $user_id, $scheme); do_action('set_logged_in_cookie', $logged_in_cookie, $expire, $expiration, $user_id, 'logged_in'); - // Set httponly if the php version is >= 5.2.0 - if ( version_compare(phpversion(), '5.2.0', 'ge') ) { - setcookie($auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure, true); - setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true); - setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true); - if ( COOKIEPATH != SITECOOKIEPATH ) - setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true); - } else { - $cookie_domain = COOKIE_DOMAIN; - if ( !empty($cookie_domain) ) - $cookie_domain .= '; HttpOnly'; - setcookie($auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, $cookie_domain, $secure); - setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, $cookie_domain, $secure); - setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, $cookie_domain, $secure_logged_in_cookie); - if ( COOKIEPATH != SITECOOKIEPATH ) - setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, SITECOOKIEPATH, $cookie_domain, $secure_logged_in_cookie); - } + setcookie($auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure, true); + setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true); + setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true); + if ( COOKIEPATH != SITECOOKIEPATH ) + setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true); } endif; @@ -749,7 +715,7 @@ if ( !function_exists('is_user_logged_in') ) : function is_user_logged_in() { $user = wp_get_current_user(); - if ( $user->id == 0 ) + if ( empty( $user->ID ) ) return false; return true; @@ -832,6 +798,9 @@ if ( !function_exists('check_admin_referer') ) : * @param string $query_arg where to look for nonce in $_REQUEST (since 2.5) */ function check_admin_referer($action = -1, $query_arg = '_wpnonce') { + if ( -1 == $action ) + _doing_it_wrong( __FUNCTION__, __( 'You should specify a nonce action to be verified by using the first parameter.' ), '3.2' ); + $adminurl = strtolower(admin_url()); $referer = strtolower(wp_get_referer()); $result = isset($_REQUEST[$query_arg]) ? wp_verify_nonce($_REQUEST[$query_arg], $action) : false; @@ -1116,7 +1085,7 @@ function wp_notify_moderator($comment_id) { $comment = get_comment($comment_id); $post = get_post($comment->comment_post_ID); $user = get_userdata( $post->post_author ); - // Send to the administation and to the post author if the author can modify the comment. + // Send to the administration and to the post author if the author can modify the comment. $email_to = array( get_option('admin_email') ); if ( user_can($user->ID, 'edit_comment', $comment_id) && !empty($user->user_email) && ( get_option('admin_email') != $user->user_email) ) $email_to[] = $user->user_email; @@ -1271,7 +1240,7 @@ if ( !function_exists('wp_verify_nonce') ) : */ function wp_verify_nonce($nonce, $action = -1) { $user = wp_get_current_user(); - $uid = (int) $user->id; + $uid = (int) $user->ID; $i = wp_nonce_tick(); @@ -1297,7 +1266,7 @@ if ( !function_exists('wp_create_nonce') ) : */ function wp_create_nonce($action = -1) { $user = wp_get_current_user(); - $uid = (int) $user->id; + $uid = (int) $user->ID; $i = wp_nonce_tick(); @@ -1462,7 +1431,7 @@ if ( !function_exists('wp_check_password') ) : * * Maintains compatibility between old version and the new cookie authentication * protocol using PHPass library. The $hash parameter is the encrypted password - * and the function compares the plain text password when encypted similarly + * and the function compares the plain text password when encrypted similarly * against the already encrypted password to see if they match. * * For integration with other applications, this function can be overwritten to