Show a gravatar in Twig

In twig

<!-- gravatar (left) -->
<div class="post-info-left d-inline-block">
     <div class="post-info-author-avatar">
          <img class="post-gravatar post-avatar" src="{{ gravatar(post.user.email, 64) }}"
               title="{{ rtGetAuthorName(post) }}" alt="{{ rtGetAuthorName(post) }}"/>
     </div>
</div>

In component

public function registerMarkupTags() {
    return [
        'functions' => [
            'gravatar'     => [ $this, 'getAvatar' ],
        ]
    ];
}

/**
 * Get either a Gravatar URL or complete image tag for a specified email address.
 *
 * @param string $email The email address
 * @param string $s Size in pixels, defaults to 80px [ 1 - 2048 ]
 * @param string $d Default imageset to use [ 404 | mp | identicon | monsterid | wavatar ]
 * @param string $r Maximum rating (inclusive) [ g | pg | r | x ]
 * @param boole $img True to return a complete IMG tag False for just the URL
 * @param array $atts Optional, additional key/value attributes to include in the IMG tag
 *
 * @return String containing either just a URL or a complete image tag
 * @source https://gravatar.com/site/implement/images/php/
 */
public function getGravatar( $email, $s = 80, $d = 'mp', $r = 'g', $img = false, $atts = [] ) {
    $url = 'https://www.gravatar.com/avatar/';
    $url .= md5( strtolower( trim( $email ) ) );
    $url .= "?s=$s&d=$d&r=$r";
    if ( $img ) {
        $url = '<img src="' . $url . '"';
        foreach ( $atts as $key => $val ) {
            $url .= ' ' . $key . '="' . $val . '"';
        }
        $url .= ' />';
    }

    return $url;
}
Last update: Tue, 13 Sep 2022 14:32:15