This macro is designed to show a list of all users with brief information, such as a photo, full name, email, position and department.
Everything worked on 6.15.1 but with the upgrade to 7.1.1 the position and department stopped working. I dug through all the release notes, but did not find what changed. Any help would be appreciated
## @noparams
#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'))
#set($personalInformationManager = $containerContext.getComponent('personalInformationManager'))
#set($wikiStyleRenderer = $containerContext.getComponent('wikiStyleRenderer'))
#set($loginManager = $containerContext.getComponent('loginManager'))
#set($crowdService = $containerContext.getComponent('crowdService'))
#set($conf_users = $userAccessor.getGroup("confluence-users"))
#set($users = $userAccessor.getMemberNames($conf_users))
#set($bots = ['admin','conf_adm','root','gdadmin'])
#set($count = 0)
#foreach($user in $users)
#if ($bots.contains($user))
##special user/bot
#else
#set($count = $count + 1)
#set($userN = $userAccessor.getUser($user))
#set($crowdUser = $crowdService.getUser($userN.name))
#set($pi = $personalInformationManager.getPersonalInformation($userN))
#set($renderedAboutMe = $wikiStyleRenderer.convertWikiToXHtml($pi.toPageContext(), $pi.getBodyAsString()))
<div class="sc-user" style="border:1px solid; width: 220px; height: 270px; padding: 10px; text-align: center; margin: 5px; float: left; overflow: auto;">
<img class="userLogo logo" src="$userAccessor.getUserProfilePicture($userN).getUriReference()" alt="User icon: $user" title="" style="height: 128px; width: 128px;" />
<p>#usernameLink($userN.name)</p>
#if ($userDetailsManager.getStringProperty($userN, 'position'))
<p>$userDetailsManager.getStringProperty($userN, 'position')</p>
#else
<p style="color:red">No position</p>
#end
#if ($userDetailsManager.getStringProperty($userN, 'department'))
<p>$userDetailsManager.getStringProperty($userN, 'department')</p>
#else
<p style="color:red">No department</p>
#end
##<p>$userAccessor.getPropertySet($user))</p>
##<p>$renderedAboutMe</p>
<p>$action.dateFormatter.formatGivenString('yyyy/MM/dd', $crowdUser.createdDate)</p>
</div>
#end
#end
<p style="clear:both;padding:10px">Total users: $count.</p>
Hi evzensx,
After spending hours and hours searching for a solution, I finally found one post that had the answer, so now there will be 2 posts.
The problem is not with Java or deprecated code in 7.x. The issue is because, in Confluence 7.x, they turned on additional security features in the Velocity engine, which is preventing the class reflection from working.
Once I re-enabled this, it started to work. My User Macro also displays how many days since the Users last login, which I use for user cleanup purposes, so I needed to re-enable another couple of classes as well before the User Macro was fully working.
So, the solution is to edit the file: confluence/WEB-INF/velocity.properties
and comment out/change the following lines....
change:
introspector.restrict.packages = java.lang.reflect,\
to
introspector.restrict.packages = \
change:
introspector.restrict.classes = java.lang.Class,\
to
introspector.restrict.classes = \
comment out these 2 lines:
#java.sql,\
#javax.sql,\
I hope this helps others....
Thanks a lot!
Is there any solution to work the old code without changing the velocity.properties?
Example, how can I access to the LikeManager?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi evzensx,
Did you ever resolve this, we have just upgraded to 7.4.1 and have the same issue. I'm guessing the Container Manager is no longer available. Did you find a workaround?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Chris Kent , unfortunately I did not have time to do this and I paused this problem. But I have a direction in which to look for a solution.:
and
https://docs.atlassian.com/software/jira/docs/api/7.1.1/com/atlassian/jira/user/UserDetails.html
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Any update on this? I recently upgraded to 7.18.2 and this macro is no longer working for me as well. I tried the updates above but that didn't help. Any info would be greatly appreciated.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I would guess you are using a class that was deprecated in the 7.x release. Check out these links..
https://confluence.atlassian.com/doc/preparing-for-confluence-7-0-950280675.html
https://docs.atlassian.com/ConfluenceServer/rest/7.2.0/
https://docs.atlassian.com/ConfluenceServer/javadoc/7.2.0/
Check with your system admin if that is not you to see if you also upgraded Java to 11. Shouldn't affect anything but worth a look.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.