There are various attributes in the user profile, like: Location, Department, Phone. I'm wondering if anybody developed a macro to get a value of one of the attributes for a particular user. E.g. I need to put a phone number of vgleim user on a Confluence page.
If you're not afraid of using a user macro, you could do this to put the name and phone number of either a specific user or a group of users on a page:
## @param User:title=Username|type=username|desc=Select username to display ## @param Group:title=Group|type=string|desc=Enter group to display. #set ( $Integer = 0 ) #set ( $userName = "" ) #set ( $userName = $paramUser ) #set ( $groupName = "" ) #set ( $groupName = $paramGroup ) #set ( $group = "" ) #set ( $user = "" ) #set ( $containerManagerClass = $content.class.forName('com.atlassian.spring.container.ContainerManager') ) #set ( $getInstanceMethod = $containerManagerClass.getDeclaredMethod('getInstance',null) ) #set ( $containerManager = $getInstanceMethod.invoke(null,null) ) #set ( $containerContext = $containerManager.containerContext ) #set ( $userDetailsManager = $containerContext.getComponent('userDetailsManager') ) #if ( $userName != "" ) #if ( $Integer.parseInt($generalUtil.getBuildNumber()) > 4300 ) #set ( $user = $userAccessor.getUserByName($userName) ) #else #set ( $user = $userAccessor.getUser($userName) ) #end #if ( $user != "" ) #set ( $phone = $userDetailsManager.getStringProperty($user, "phone") ) ##set ( $im = $userDetailsManager.getStringProperty($user, "im") ) ##set ( $website = $userDetailsManager.getStringProperty($user, "website") ) ##set ( $position = $userDetailsManager.getStringProperty($user, "position") ) ##set ( $department = $userDetailsManager.getStringProperty($user, "department") ) ##set ( $location = $userDetailsManager.getStringProperty($user, "location") ) <p> #userLink($user) - $!phone </p> #else <p> User $userName not found. </p> #end #elseif ( $groupName != "" ) <p> Members in group ${groupName}: </p> #set ( $group = $userAccessor.getGroup($groupName) ) #if ( $group != "" ) #set ( $members = $userAccessor.getMemberNames($group) ) #foreach ( $member in $members ) #if ( $Integer.parseInt($generalUtil.getBuildNumber()) > 4300 ) #set ( $user = $userAccessor.getUserByName($member) ) #else #set ( $user = $userAccessor.getUser($member) ) #end #set ( $phone = $userDetailsManager.getStringProperty($user, "phone") ) ##set ( $im = $userDetailsManager.getStringProperty($user, "im") ) ##set ( $website = $userDetailsManager.getStringProperty($user, "website") ) ##set ( $position = $userDetailsManager.getStringProperty($user, "position") ) ##set ( $department = $userDetailsManager.getStringProperty($user, "department") ) ##set ( $location = $userDetailsManager.getStringProperty($user, "location") ) <p> #userLink($user) - $!phone </p> #end #else <p> Group $groupName not found. </p> #end #end
Firstly - thank you for your efforts. I know this a few years ago, but I've copied quite a few of your examples over the last couple of months! Quick question though - any idea why this doesn't work in the latest version of confluence? I'm using the latest version of the confluence sdk and I just cannot get info other than the name. It partly works in that I get the full name back, but I specifically want the IM back for the user. The getPropertyString comes back empty. Thanks in advance.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
One of the options is to install Communardo User Profile plugin. It can synchronize user attributes from AD and provides a few profile macros you can use on your pages:
https://marketplace.atlassian.com/plugins/de.communardo.confluence.plugins.userprofile
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.