@@ -281,16 +281,22 @@ protected function destroyImagesFromPath(string $path)
281281 /**
282282 * Save a gravatar image and set a the profile image for a user.
283283 * @param \BookStack\Auth\User $user
284+ * @param null|string $gravatarUrl
284285 * @param int $size
285286 * @return mixed
286287 * @throws Exception
287288 */
288- public function saveUserGravatar (User $ user , $ size = 500 )
289+ public function saveUserGravatar (User $ user , $ gravatarUrl , $ size = 500 )
289290 {
290- $ emailHash = md5 (strtolower (trim ($ user ->email )));
291- $ url = 'https://www.gravatar.com/avatar/ ' . $ emailHash . '?s= ' . $ size . '&d=identicon ' ;
291+ if (!is_string ($ gravatarUrl ) || empty ($ gravatarUrl )) {
292+ $ gravatarUrl = 'https://www.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon ' ;
293+ }
294+ $ email = strtolower (trim ($ user ->email ));
295+ $ gravatarUrl = str_replace ('%{hash} ' , md5 ($ email ), $ gravatarUrl );
296+ $ gravatarUrl = str_replace ('%{size} ' , $ size , $ gravatarUrl );
297+ $ gravatarUrl = str_replace ('%{email} ' , urlencode ($ email ), $ gravatarUrl );
292298 $ imageName = str_replace (' ' , '- ' , $ user ->name . '-gravatar.png ' );
293- $ image = $ this ->saveNewFromUrl ($ url , 'user ' , $ imageName );
299+ $ image = $ this ->saveNewFromUrl ($ gravatarUrl , 'user ' , $ imageName );
294300 $ image ->created_by = $ user ->id ;
295301 $ image ->updated_by = $ user ->id ;
296302 $ image ->save ();
0 commit comments