Message boards
List of examples:
Message boards
Updating a message board
/* NOTE: New message board can only be created in the Pages application using the Message board web part.
* The system automatically creates a message board after the first message is submitted on the page via the web part. */
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Gets the message board based on its name and the related page
    BoardInfo updateBoard = BoardInfoProvider.GetBoardInfo("BoardName", page.DocumentID);
    if (updateBoard != null)
    {
        // Updates the board properties
        updateBoard.BoardDisplayName = updateBoard.BoardDisplayName.ToLowerCSafe();
        // Saves the updated message board to the database
        BoardInfoProvider.SetBoardInfo(updateBoard);
    }
}
Updating multiple message boards
// Prepares a where condition for loading all message boards whose name starts with 'New'
string where = "BoardName LIKE N'New%'";
// Gets the message boards that fulfill the condition
InfoDataSet<BoardInfo> boards = BoardInfoProvider.GetMessageBoards(where, null);
// Loops through individual message boards
foreach (BoardInfo board in boards)
{
    // Updates the board properties
    board.BoardDisplayName = board.BoardDisplayName.ToUpper();
    // Saves the updated message board to the database
    BoardInfoProvider.SetBoardInfo(board);
}
Adding users as message board moderators
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Gets the message board based on its name and the related page
    BoardInfo board = BoardInfoProvider.GetBoardInfo("BoardName", page.DocumentID);
    if (board != null)
    {
        // Add the current users as a moderator of the message board
        BoardModeratorInfoProvider.AddModeratorToBoard(MembershipContext.AuthenticatedUser.UserID, board.BoardID);
    }
}
Removing moderators from message boards
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Gets the message board based on its name and the related page
    BoardInfo board = BoardInfoProvider.GetBoardInfo("MyNewBoard", page.DocumentID);
    if (board != null)
    {
        // Gets the moderator relationship between the message board and the current user
        BoardModeratorInfo boardModerator = BoardModeratorInfoProvider.GetBoardModeratorInfo(MembershipContext.AuthenticatedUser.UserID, board.BoardID);
        if (boardModerator != null)
        {
            // Removes the moderator from the message board
            BoardModeratorInfoProvider.DeleteBoardModeratorInfo(boardModerator);
        }
    }
}
Deleting a message board
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Gets the message board based on its name and the related page
    BoardInfo deleteBoard = BoardInfoProvider.GetBoardInfo("BoardName", page.DocumentID);
    if (deleteBoard != null)
    {
        // Deletes the message board
        BoardInfoProvider.DeleteBoardInfo(deleteBoard);
    }
}
Message board messages
Creating a message on a message board
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Gets the message board
    BoardInfo board = BoardInfoProvider.GetBoardInfo("BoardName", page.DocumentID);
    if (board != null)
    {
        // Creates a new message object
        BoardMessageInfo newMessage = new BoardMessageInfo();
        // Sets the message properties
        newMessage.MessageUserName = MembershipContext.AuthenticatedUser.UserName;
        newMessage.MessageText = "New message";
        newMessage.MessageEmail = "user@localhost.local";
        newMessage.MessageURL = "";
        newMessage.MessageIsSpam = false;
        newMessage.MessageApproved = true;
        newMessage.MessageInserted = DateTime.Now;
        newMessage.MessageBoardID = board.BoardID;
        // Saves the message to the database
        BoardMessageInfoProvider.SetBoardMessageInfo(newMessage);
    }
}
Updating a message
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Gets the message board
    BoardInfo board = BoardInfoProvider.GetBoardInfo("BoardName", page.DocumentID);
    if (board != null)
    {
        // Gets the first message from the selected board whose text starts with 'New message'
        BoardMessageInfo updateMessage = BoardMessageInfoProvider.GetMessages()
                                                    .WhereStartsWith("MessageText", "New message")
                                                    .WhereEquals("MessageBoardID", board.BoardID)
                                                    .FirstObject;
        // Updates the message text
        updateMessage.MessageText = updateMessage.MessageText.ToUpperCSafe();
        // Saves the message to the database
        BoardMessageInfoProvider.SetBoardMessageInfo(updateMessage);
    }
}
Updating multiple messages
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Get the message board
    BoardInfo board = BoardInfoProvider.GetBoardInfo("BoardName", page.DocumentID);
    if (board != null)
    {
        // Gets all messages from the selected board whose text starts with 'New message'
        var messages = BoardMessageInfoProvider.GetMessages()
                                                    .WhereStartsWith("MessageText", "New message")
                                                    .WhereEquals("MessageBoardID", board.BoardID);
        // Loops through individual messages
        foreach (BoardMessageInfo modifyMessage in messages)
        {
            // Updates the message text
            modifyMessage.MessageText = modifyMessage.MessageText.ToUpper();
            // Saves the updated message to the database
            BoardMessageInfoProvider.SetBoardMessageInfo(modifyMessage);
        }
    }
}
Deleting a message
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Gets the message board
    BoardInfo board = BoardInfoProvider.GetBoardInfo("BoardName", page.DocumentID);
    if (board != null)
    {
        // Gets the first message from the selected board whose text starts with 'New message'
        BoardMessageInfo deleteMessage = BoardMessageInfoProvider.GetMessages()
                                                    .WhereStartsWith("MessageText", "New message")
                                                    .WhereEquals("MessageBoardID", board.BoardID)
                                                    .FirstObject;
        if (deleteMessage != null)
        {
            // Deletes the message
            BoardMessageInfoProvider.DeleteBoardMessageInfo(deleteMessage);
        }
    }
}
Message board subscriptions
Creating a message board subscription
// Creates a new message board subscription object
BoardSubscriptionInfo newSubscription = new BoardSubscriptionInfo();
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Gets the message board
    BoardInfo board = BoardInfoProvider.GetBoardInfo("BoardName", page.DocumentID);
    if (board != null)
    {
        // Sets the subsription properties (subscribes the current user)
        newSubscription.SubscriptionBoardID = board.BoardID;
        newSubscription.SubscriptionUserID = MembershipContext.AuthenticatedUser.UserID;
        newSubscription.SubscriptionEmail = MembershipContext.AuthenticatedUser.Email;
        // Creates the message board subscription
        BoardSubscriptionInfoProvider.SetBoardSubscriptionInfo(newSubscription);
    }
}
Updating a message board subscription
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Gets the message board
    BoardInfo board = BoardInfoProvider.GetBoardInfo("BoardName", page.DocumentID);
    if (board != null)
    {
        // Gets the message board subscription for the current user
        BoardSubscriptionInfo updateSubscription = BoardSubscriptionInfoProvider.GetBoardSubscriptionInfo(board.BoardID, MembershipContext.AuthenticatedUser.UserID);
        if (updateSubscription != null)
        {
            // Updates the subscription properties
            updateSubscription.SubscriptionEmail = updateSubscription.SubscriptionEmail.ToLowerCSafe();
            // Saves the updated subscription to the database
            BoardSubscriptionInfoProvider.SetBoardSubscriptionInfo(updateSubscription);
        }
    }
}
Updating multiple message board subscriptions
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Gets the message board
    BoardInfo board = BoardInfoProvider.GetBoardInfo("BoardName", page.DocumentID);
    if (board != null)
    {
        // Prepares a where condition for loading all subscriptions of the message board
        string where = "SubscriptionBoardID = " + board.BoardID;
        // Gets a DataSet containing all subscriptions of the selected message board
        DataSet subscriptions = BoardSubscriptionInfoProvider.GetSubscriptions(where, null);
        if (!DataHelper.DataSourceIsEmpty(subscriptions))
        {
            // Loops through individual subscriptions
            foreach (DataRow subscriptionDr in subscriptions.Tables[0].Rows)
            {
                // Converts the DataRow to a subscription object
                BoardSubscriptionInfo modifySubscription = new BoardSubscriptionInfo(subscriptionDr);
                // Updates the subscription properties
                modifySubscription.SubscriptionEmail = modifySubscription.SubscriptionEmail.ToUpper();
                // Saves the modified subscription to the database
                BoardSubscriptionInfoProvider.SetBoardSubscriptionInfo(modifySubscription);
            }
        }
    }
}
Deleting a message board subscription
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Gets the message board
    BoardInfo board = BoardInfoProvider.GetBoardInfo("BoardName", page.DocumentID);
    if (board != null)
    {
        // Gets the message board subscription for the current user
        BoardSubscriptionInfo deleteSubscription = BoardSubscriptionInfoProvider.GetBoardSubscriptionInfo(board.BoardID, MembershipContext.AuthenticatedUser.UserID);
        if (deleteSubscription != null)
        {
            // Deletes the message board subscription
            BoardSubscriptionInfoProvider.DeleteBoardSubscriptionInfo(deleteSubscription);
        }
    }
}
Message board security
Allowing a message board only for members of a role
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Gets the message board
    BoardInfo board = BoardInfoProvider.GetBoardInfo("BoardName", page.DocumentID);
    // Gets the role
    RoleInfo role = RoleInfoProvider.GetRoleInfo("RoleName", SiteContext.CurrentSite.SiteID);
    if ((board != null) && (role != null))
    {
        // Configures the message board to be usable only by assigned roles
        board.BoardAccess = SecurityAccessEnum.AuthorizedRoles;
        BoardInfoProvider.SetBoardInfo(board);
        // Assigns the role to the message board (allows members of the role to use the message board)
        BoardRoleInfoProvider.AddRoleToBoard(role.RoleID, board.BoardID);
    }
}
Removing a role from a message board
// Gets a TreeProvider instance
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
// Gets the page where the message board is located
TreeNode page = tree.SelectNodes()
    .Path("/BoardPage")
    .OnCurrentSite()
    .FirstObject;
if (page != null)
{
    // Gets the message board
    BoardInfo board = BoardInfoProvider.GetBoardInfo("NewBoard", page.DocumentID);
    // Gets the role
    RoleInfo role = RoleInfoProvider.GetRoleInfo("RoleName", SiteContext.CurrentSite.SiteID);
    if ((board != null) && (role != null))
    {
        // Gets the relationship between the role and the message board
        BoardRoleInfo boardRole = BoardRoleInfoProvider.GetBoardRoleInfo(role.RoleID, board.BoardID);
        if (boardRole != null)
        {
            // Removes the role from the message board
            BoardRoleInfoProvider.DeleteBoardRoleInfo(boardRole);
        }
    }
}