Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Is there a macro to get a user profile attribute?

Victor Gleim February 12, 2015

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.

2 answers

2 votes
Stephen Deutsch
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 13, 2015

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
iamgoingtosneeze August 17, 2018

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.

0 votes
RVal
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 12, 2015

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

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events