/// <summary> /// Imports version 2.0 page discussion settings and properly propagates them to user groups and single pages, when needed, for the given wiki. /// </summary> /// <param name="wiki">The wiki.</param> /// <returns><c>true</c> if the operation succeeded, <c>false</c> otherwise.</returns> private static bool ImportPageDiscussionPermissions(string wiki) { // Notes // Who can read pages, can read discussions // Who can modify pages, can post messages and read discussions // Who can manage pages, can manage discussions and post messages // Possible values: page|normal|locked|public string value = Settings.GetDiscussionPermissions(wiki).ToLowerInvariant(); UserGroup usersGroup = Users.FindUserGroup(wiki, Settings.GetUsersGroup(wiki)); UserGroup anonymousGroup = Users.FindUserGroup(wiki, Settings.GetAnonymousGroup(wiki)); bool done = true; AuthWriter authWriter = new AuthWriter(Collectors.CollectorsBox.GetSettingsProvider(wiki)); switch (value) { case "page": // Nothing to do break; case "normal": // Allow Users to post messages done &= authWriter.SetPermissionForNamespace(AuthStatus.Grant, null, Actions.ForNamespaces.PostDiscussion, usersGroup); break; case "locked": // Deny Users to post messages done &= authWriter.SetPermissionForNamespace(AuthStatus.Deny, null, Actions.ForNamespaces.PostDiscussion, usersGroup); break; case "public": // Allow Users and Anonymous Users to post messages done &= authWriter.SetPermissionForNamespace(AuthStatus.Grant, null, Actions.ForNamespaces.PostDiscussion, usersGroup); done &= authWriter.SetPermissionForNamespace(AuthStatus.Grant, null, Actions.ForNamespaces.PostDiscussion, anonymousGroup); break; } return(true); }