use of com.xpn.xwiki.doc.XWikiDocument in project xwiki-platform by xwiki.
the class DefaultWikiUserManager method acceptRequest.
@Override
public void acceptRequest(MemberCandidacy request, String message, String privateComment) throws WikiUserManagerException {
// Add the user to the members
addMember(request.getUserId(), request.getWikiId());
// Then, update the candidacy object
XWikiContext xcontext = xcontextProvider.get();
// Set the values
request.setAdminId(documentReferenceSerializer.serialize(xcontext.getUserReference()));
request.setAdminComment(message);
request.setAdminPrivateComment(privateComment);
request.setStatus(MemberCandidacy.Status.ACCEPTED);
request.setDateOfClosure(new Date());
// Get the group document
XWikiDocument groupDoc = getMembersGroupDocument(request.getWikiId());
// Get the candidacy object
BaseObject object = groupDoc.getXObject(WikiCandidateMemberClassInitializer.REFERENCE, request.getId());
// Set the new values
object.setStringValue(WikiCandidateMemberClassInitializer.FIELD_ADMIN, request.getAdminId());
object.setLargeStringValue(WikiCandidateMemberClassInitializer.FIELD_ADMIN_COMMENT, request.getAdminComment());
object.setLargeStringValue(WikiCandidateMemberClassInitializer.FIELD_ADMIN_PRIVATE_COMMENT, request.getAdminPrivateComment());
object.setDateValue(WikiCandidateMemberClassInitializer.FIELD_DATE_OF_CLOSURE, request.getDateOfClosure());
object.setStringValue(WikiCandidateMemberClassInitializer.FIELD_STATUS, request.getStatus().name().toLowerCase());
// Save the document
saveGroupDocument(groupDoc, String.format("Accept join request from user [%s]", request.getUserId()));
}
use of com.xpn.xwiki.doc.XWikiDocument in project xwiki-platform by xwiki.
the class DefaultWikiUserManager method invite.
@Override
public MemberCandidacy invite(String userId, String wikiId, String message) throws WikiUserManagerException {
XWikiContext xcontext = xcontextProvider.get();
// Create the candidacy
MemberCandidacy candidacy = new MemberCandidacy(wikiId, userId, MemberCandidacy.CandidateType.INVITATION);
candidacy.setUserComment(message);
candidacy.setAdminId(documentReferenceSerializer.serialize(xcontext.getUserReference()));
// Get the group document
XWikiDocument groupDoc = getMembersGroupDocument(wikiId);
// Add a candidacy object
try {
int objectNumber = groupDoc.createXObject(WikiCandidateMemberClassInitializer.REFERENCE, xcontext);
candidacy.setId(objectNumber);
BaseObject object = groupDoc.getXObject(WikiCandidateMemberClassInitializer.REFERENCE, objectNumber);
object.setStringValue(WikiCandidateMemberClassInitializer.FIELD_USER, candidacy.getUserId());
object.setStringValue(WikiCandidateMemberClassInitializer.FIELD_ADMIN, candidacy.getAdminId());
object.setLargeStringValue(WikiCandidateMemberClassInitializer.FIELD_ADMIN_COMMENT, message);
object.setStringValue(WikiCandidateMemberClassInitializer.FIELD_STATUS, candidacy.getStatus().name().toLowerCase());
object.setDateValue(WikiCandidateMemberClassInitializer.FIELD_DATE_OF_CREATION, candidacy.getDateOfCreation());
object.setStringValue(WikiCandidateMemberClassInitializer.FIELD_TYPE, candidacy.getType().name().toLowerCase());
} catch (XWikiException e) {
throw new WikiUserManagerException("Failed to create a new invitation object.", e);
}
// Save the document
saveGroupDocument(groupDoc, String.format("[%s] is invited to join the wiki.", userId));
return candidacy;
}
use of com.xpn.xwiki.doc.XWikiDocument in project xwiki-platform by xwiki.
the class WikiUserFromXEMMigration method hibernateMigrate.
@Override
protected void hibernateMigrate() throws DataMigrationException, XWikiException {
// Context, XWiki
XWikiContext context = getXWikiContext();
XWiki xwiki = context.getWiki();
// Current wiki
String currentWikiId = wikiDescriptorManager.getCurrentWikiId();
// Get the old wiki descriptor
DocumentReference oldWikiDescriptorReference = new DocumentReference(wikiDescriptorManager.getMainWikiId(), XWiki.SYSTEM_SPACE, String.format("XWikiServer%s", StringUtils.capitalize(currentWikiId)));
XWikiDocument oldWikiDescriptor = xwiki.getDocument(oldWikiDescriptorReference, context);
// Try to get the old workspace object
DocumentReference oldClassDocument = new DocumentReference(wikiDescriptorManager.getMainWikiId(), WORKSPACE_CLASS_SPACE, WORKSPACE_CLASS_PAGE);
BaseObject oldObject = oldWikiDescriptor.getXObject(oldClassDocument);
// Upgrade depending of the type
if (oldObject != null || isWorkspaceTemplate(currentWikiId)) {
// It's a workspace
upgradeWorkspace(oldObject, currentWikiId, oldWikiDescriptor);
} else {
// It's a regular subwiki
upgradeRegularSubwiki(currentWikiId);
}
}
use of com.xpn.xwiki.doc.XWikiDocument in project xwiki-platform by xwiki.
the class WikiUserFromXEMMigrationTest method upgradeRegularSubWiki.
@Test
public void upgradeRegularSubWiki() throws Exception {
// Mocks
when(wikiDescriptorManager.getCurrentWikiId()).thenReturn("subwiki");
XWikiDocument oldDescriptorDocument = mock(XWikiDocument.class);
when(xwiki.getDocument(eq(new DocumentReference("mainWiki", XWiki.SYSTEM_SPACE, "XWikiServerSubwiki")), any(XWikiContext.class))).thenReturn(oldDescriptorDocument);
when(oldDescriptorDocument.getXObject(eq(new DocumentReference("mainWiki", "WorkspaceManager", "WorkspaceClass")))).thenReturn(null);
// Run
mocker.getComponentUnderTest().hibernateMigrate();
// Verify
WikiUserConfiguration expectedConfiguration = new WikiUserConfiguration();
expectedConfiguration.setUserScope(UserScope.LOCAL_AND_GLOBAL);
expectedConfiguration.setMembershipType(MembershipType.INVITE);
verify(wikiUserConfigurationHelper).saveConfiguration(eq(expectedConfiguration), eq("subwiki"));
}
use of com.xpn.xwiki.doc.XWikiDocument in project xwiki-platform by xwiki.
the class WikiUserFromXEMMigrationTest method upgradeOldWorkspaceTemplate.
@Test
public void upgradeOldWorkspaceTemplate() throws Exception {
// Mocks about the descriptor
when(wikiDescriptorManager.getCurrentWikiId()).thenReturn("workspacetemplate");
XWikiDocument oldDescriptorDocument = mock(XWikiDocument.class);
when(xwiki.getDocument(eq(new DocumentReference("mainWiki", XWiki.SYSTEM_SPACE, "XWikiServerWorkspacetemplate")), any(XWikiContext.class))).thenReturn(oldDescriptorDocument);
// Mock about the workspace special page
when(xwiki.exists(eq(new DocumentReference("workspacetemplate", "XWiki", "ManageWorkspace")), any(XWikiContext.class))).thenReturn(true);
// Mocks about candidacies
DocumentReference memberGroupRef = new DocumentReference("workspacetemplate", XWiki.SYSTEM_SPACE, "XWikiAllGroup");
XWikiDocument memberGroupDoc = mock(XWikiDocument.class);
when(xwiki.getDocument(eq(memberGroupRef), any(XWikiContext.class))).thenReturn(memberGroupDoc);
// Run
mocker.getComponentUnderTest().hibernateMigrate();
// Verify the user configuration is accurate
WikiUserConfiguration expectedConfiguration = new WikiUserConfiguration();
expectedConfiguration.setUserScope(UserScope.GLOBAL_ONLY);
expectedConfiguration.setMembershipType(MembershipType.INVITE);
verify(wikiUserConfigurationHelper).saveConfiguration(eq(expectedConfiguration), eq("workspacetemplate"));
}
Aggregations