Skip to content

Instantly share code, notes, and snippets.

@joshsmith01
Forked from justinph/validate_gravatar.php
Created December 14, 2017 03:00
Show Gist options
  • Select an option

  • Save joshsmith01/27720c151d8c43ddd726c274fcb84a5b to your computer and use it in GitHub Desktop.

Select an option

Save joshsmith01/27720c151d8c43ddd726c274fcb84a5b to your computer and use it in GitHub Desktop.

Revisions

  1. @justinph justinph created this gist Mar 19, 2013.
    53 changes: 53 additions & 0 deletions validate_gravatar.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,53 @@

    /**
    * Utility function to check if a gravatar exists for a given email or id
    * @param int|string|object $id_or_email A user ID, email address, or comment object
    * @return bool if the gravatar exists or not
    */

    function validate_gravatar($id_or_email) {
    //id or email code borrowed from wp-includes/pluggable.php
    $email = '';
    if ( is_numeric($id_or_email) ) {
    $id = (int) $id_or_email;
    $user = get_userdata($id);
    if ( $user )
    $email = $user->user_email;
    } elseif ( is_object($id_or_email) ) {
    // No avatar for pingbacks or trackbacks
    $allowed_comment_types = apply_filters( 'get_avatar_comment_types', array( 'comment' ) );
    if ( ! empty( $id_or_email->comment_type ) && ! in_array( $id_or_email->comment_type, (array) $allowed_comment_types ) )
    return false;

    if ( !empty($id_or_email->user_id) ) {
    $id = (int) $id_or_email->user_id;
    $user = get_userdata($id);
    if ( $user)
    $email = $user->user_email;
    } elseif ( !empty($id_or_email->comment_author_email) ) {
    $email = $id_or_email->comment_author_email;
    }
    } else {
    $email = $id_or_email;
    }

    $hashkey = md5(strtolower(trim($email)));
    $uri = 'http://www.gravatar.com/avatar/' . $hashkey . '?d=404';

    $data = wp_cache_get($hashkey);
    if (false === $data) {
    $response = wp_remote_head($uri);
    if( is_wp_error($response) ) {
    $data = 'not200';
    } else {
    $data = $response['response']['code'];
    }
    wp_cache_set($hashkey, $data, $group = '', $expire = 60*5);

    }
    if ($data == '200'){
    return true;
    } else {
    return false;
    }
    }