diff --git a/gravity-forms/gw-advanced-merge-tags.php b/gravity-forms/gw-advanced-merge-tags.php index 206e2887f..b243e17bb 100644 --- a/gravity-forms/gw-advanced-merge-tags.php +++ b/gravity-forms/gw-advanced-merge-tags.php @@ -506,6 +506,12 @@ public function handle_field_modifiers( $value, $input_id, $modifier, $field, $r return rgar( $value_array, $index ); } break; + case 'gravatar': + if ( $field->type !== 'email' ) { + break; + } + + return $this->generate_gravatar($value, $modifiers); } } @@ -543,6 +549,41 @@ public function parse_modifiers( $modifiers_str ) { return $parsed; } + /** + * Generate a Gravatar image URL or image tag. + * + * @param $email + * @param $modifiers + * + * @return string + */ + public function generate_gravatar( $email, $modifiers ) { + $format = rgar( $modifiers, 'format' ); + $size = rgar( $modifiers, 'size', 64 ); + $default = rgar( $modifiers, 'default' ); + + $params = array(); + + if ( $default ) { + $params['d'] = htmlentities( $default ); + } + + if ( $size ) { + $params['s'] = htmlentities($size); + } + + $base_url = 'https://www.gravatar.com/avatar'; + $hash = hash( 'sha256', strtolower( trim( $email ) ) ); + $query = http_build_query( $params ); + + $gravatar_url = sprintf( '%s/%s?%s', $base_url, $hash, $query ); + + if ( $format === 'url' ) { + return $gravatar_url; + } + + return "Gravatar Image"; + } } function gw_advanced_merge_tags( $args = array() ) {