Gravatar Import
Last modified by Vincent Massol on 2021/03/18 11:28
Set Gravatar images for users with no avatar defined |
Type | Snippet |
Category | |
Developed by | |
Rating | |
License | GNU Lesser General Public License 2.1 |
Table of contents
Description
The following script does:
- List users not having an avatar set in their profile
- Query Gravatar.com for an image based on their email (size asked is 120x120 pixels)
- If no image is found on Gravatar.com ask Gravatar to generate an image (by default in the script below it's a "monster" image)
- Set the Gravatar image in the user profil (when confirm=1 is passed in the URL)
- If no email is found in the user profile use the user's fullname to generate the "monster" image
{{groovy}}
// Find all users with no avatar
println "Looking for Gravatars for users who don't have any avatar set in their profile:"
if (request.getParameter("confirm") == "1") {
println "|=Gravatar|=User Name|=Status"
} else {
println "|=Gravatar|=User Name"
}
services.query.xwql("from doc.object(XWiki.XWikiUsers) as user").execute().each() {
def userDoc = xwiki.getDocument(it)
def userObj = userDoc.getObject("XWiki.XWikiUsers")
def avatarProp = userObj.getProperty("avatar")
if (avatarProp == null || avatarProp.getValue().trim().length() == 0) {
// Get their email and if there's one try to find a gravatar
def email = userObj.getProperty("email").getValue()
if (email.trim().length() == 0) {
email = it
}
def hash = org.apache.commons.codec.digest.DigestUtils.md5Hex(email)
def url = "http://www.gravatar.com/avatar/${hash}?d=monsterid&s=120"
if (request.getParameter("confirm") == "1") {
userDoc.addAttachment("gravatar.png", new java.net.URL(url).openStream())
userObj.set("avatar", "gravatar.png")
userDoc.save("Set Gravatar as avatar", true)
println "|[[image:${url}]]|[[${it}]]|Gravatar imported into profile!"
} else {
println "|[[image:${url}]]|[[${it}]]"
}
}
}
{{/groovy}}
// Find all users with no avatar
println "Looking for Gravatars for users who don't have any avatar set in their profile:"
if (request.getParameter("confirm") == "1") {
println "|=Gravatar|=User Name|=Status"
} else {
println "|=Gravatar|=User Name"
}
services.query.xwql("from doc.object(XWiki.XWikiUsers) as user").execute().each() {
def userDoc = xwiki.getDocument(it)
def userObj = userDoc.getObject("XWiki.XWikiUsers")
def avatarProp = userObj.getProperty("avatar")
if (avatarProp == null || avatarProp.getValue().trim().length() == 0) {
// Get their email and if there's one try to find a gravatar
def email = userObj.getProperty("email").getValue()
if (email.trim().length() == 0) {
email = it
}
def hash = org.apache.commons.codec.digest.DigestUtils.md5Hex(email)
def url = "http://www.gravatar.com/avatar/${hash}?d=monsterid&s=120"
if (request.getParameter("confirm") == "1") {
userDoc.addAttachment("gravatar.png", new java.net.URL(url).openStream())
userObj.set("avatar", "gravatar.png")
userDoc.save("Set Gravatar as avatar", true)
println "|[[image:${url}]]|[[${it}]]|Gravatar imported into profile!"
} else {
println "|[[image:${url}]]|[[${it}]]"
}
}
}
{{/groovy}}
Example
Here's an example of running this script on a site: