0 Votes

Changes for page Script

Last modified by Ryan C on 2025/05/13 16:08

From version 13.1
edited by Ryan C
on 2025/05/13 16:08
Change comment: Changed the author of the page to fix programming rights
To version 6.1
edited by Ryan C
on 2025/05/12 23:40
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,62 +1,9 @@
1 -{{groovy}}
2 -import org.xwiki.model.reference.DocumentReference
1 +{{velocity}}
2 +#set($doc = $xwiki.getDocument("XWiki.XWikiGroups"))
3 +#set($class = $doc.xWikiClass)
4 +* Fields in XWikiGroups:
5 +#foreach ($field in $class.properties.entrySet())
6 + - **$field.key** (type: $field.value.class.simpleName)
7 +#end
8 +{{/velocity}}
3 3  
4 -// ------------------------------------------------------------------
5 -// 1. References
6 -// ------------------------------------------------------------------
7 -def groupDocRef = new DocumentReference('xwiki', 'XWiki', 'XWikiAllGroup')
8 -def groupClassRef = new DocumentReference('xwiki', 'XWiki', 'XWikiGroups')
9 -
10 -// ------------------------------------------------------------------
11 -// 2. Load (or create) the XWikiAllGroup page
12 -// ------------------------------------------------------------------
13 -def groupDocAPI = xwiki.getDocument(groupDocRef) // Document API wrapper
14 -def groupDoc = groupDocAPI.getDocument() // Raw XWikiDocument
15 -
16 -if (groupDoc.isNew()) {
17 - xwiki.saveDocument(groupDocAPI, 'Created XWikiAllGroup')
18 - println " Created XWiki.XWikiAllGroup"
19 -}
20 -
21 -// ------------------------------------------------------------------
22 -// 3. Collect all users except the AllGroup page itself
23 -// ------------------------------------------------------------------
24 -def allUsers = xwiki.searchDocuments(
25 - "where doc.fullName like 'XWiki.%' and doc.fullName <> 'XWiki.XWikiAllGroup'"
26 -)
27 -
28 -// ------------------------------------------------------------------
29 -// 4. Add the missing users
30 -// ------------------------------------------------------------------
31 -def added = []
32 -
33 -allUsers.each { userDocName ->
34 - // already in group?
35 - def alreadyMember = groupDoc.getXObjects(groupClassRef)?.any {
36 - it?.getStringValue('member') == userDocName
37 - }
38 -
39 - if (!alreadyMember) {
40 - // Try to create XObject using the simplest method first
41 - try {
42 - // Use the string class name instead of the DocumentReference
43 - def obj = groupDoc.newXObject("XWiki.XWikiGroups", xcontext)
44 - obj.setStringValue('member', userDocName)
45 - added << userDocName
46 - } catch (Exception e) {
47 - println "Could not add user ${userDocName}: ${e.message}"
48 - }
49 - }
50 -}
51 -
52 -// ------------------------------------------------------------------
53 -// 5. Persist if we changed anything
54 -// ------------------------------------------------------------------
55 -if (added) {
56 - xwiki.saveDocument(groupDocAPI, "Added users: ${added.join(', ')}")
57 - println " Added users to main wiki group: ${added.join(', ')}"
58 -} else {
59 - println " All users are already members of XWikiAllGroup"
60 -}
61 -{{/groovy}}
62 -