|
@@ -67,3 +67,60 @@ function independent_publisher_2_pingback_header() {
|
|
|
}
|
|
|
}
|
|
|
add_action( 'wp_head', 'independent_publisher_2_pingback_header' );
|
|
|
+
|
|
|
+/**
|
|
|
+ * 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
|
|
|
+ * @link https://gist.github.com/justinph/5197810
|
|
|
+ */
|
|
|
+
|
|
|
+function validate_gravatar( $id_or_email ) {
|
|
|
+ // The id or email code is 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, true ) ) {
|
|
|
+ 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 );
|
|
|
+ $expire = 60 * 5;
|
|
|
+ $group = '';
|
|
|
+ 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 );
|
|
|
+ }
|
|
|
+ if ( 200 === $data ) {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+}
|