HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/RMourik/bassol.nl/CMS/CMSModules/Forums/Controls/Forums/ForumModerators.ascx.cs
using System;
using System.Data;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

using CMS.Forums;
using CMS.Helpers;
using CMS.Base;
using CMS.SiteProvider;
using CMS.UIControls;
using CMS.ExtendedControls;

public partial class CMSModules_Forums_Controls_Forums_ForumModerators : CMSAdminEditControl
{
    #region "Variables"

    protected int mForumId = 0;
    protected ForumInfo forum = null;
    private string currentValues = String.Empty;

    #endregion


    #region "Public properties"

    /// <summary>
    /// Messages placeholder
    /// </summary>
    public override MessagesPlaceHolder MessagesPlaceHolder
    {
        get
        {
            return plcMess;
        }
    }


    /// <summary>
    /// Indicates if control is used on live site.
    /// </summary>
    public override bool IsLiveSite
    {
        get
        {
            return base.IsLiveSite;
        }
        set
        {
            plcMess.IsLiveSite = value;
            base.IsLiveSite = value;
        }
    }


    /// <summary>
    /// Gets or sets the ID of the forum to edit.
    /// </summary>
    public int ForumID
    {
        get
        {
            return mForumId;
        }
        set
        {
            mForumId = value;
        }
    }

    #endregion


    protected void Page_Load(object sender, EventArgs e)
    {
        bool process = true;

        if (!Visible || StopProcessing)
        {
            EnableViewState = true;
            process = false;
        }

        chkForumModerated.Text = GetString("Forum_Edit.ForumModerated");

        // Get community group id
        int communityGroupID = 0;
        forum = ForumInfoProvider.GetForumInfo(mForumId);

        if (forum == null)
        {
            return;
        }

        if (forum.ForumGroupID > 0)
        {
            ForumGroupInfo fgi = ForumGroupInfoProvider.GetForumGroupInfo(forum.ForumGroupID);
            if (fgi != null)
            {
                communityGroupID = fgi.GroupGroupID;
            }
        }

        userSelector.ForumID = ForumID;
        userSelector.GroupID = communityGroupID;
        userSelector.CurrentSelector.SelectionMode = SelectionModeEnum.Multiple;
        userSelector.ShowSiteFilter = false;
        userSelector.SiteID = SiteContext.CurrentSiteID;
        userSelector.IsLiveSite = IsLiveSite;
        userSelector.Changed += userSelector_Changed;

        if (!IsLiveSite && process)
        {
            ReloadData(false);
        }
    }


    /// <summary>
    /// Selector changed.
    /// </summary>
    private void userSelector_Changed(object sender, EventArgs e)
    {
        currentValues = GetModerators();

        // Remove old items
        string newValues = ValidationHelper.GetString(userSelector.CurrentSelector.Value, null);
        string items = DataHelper.GetNewItemsInList(newValues, currentValues);

        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                foreach (string item in newItems)
                {
                    int userId = ValidationHelper.GetInteger(item, 0);
                    if (userId > 0)
                    {
                        ForumInfoProvider.RemoveModerator(userId, ForumID);
                    }
                }
            }
        }

        // Add new items
        items = DataHelper.GetNewItemsInList(currentValues, newValues);
        if (!String.IsNullOrEmpty(items))
        {
            string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            if (newItems != null)
            {
                // Add all new items to forum
                foreach (string item in newItems)
                {
                    int userId = ValidationHelper.GetInteger(item, 0);
                    if (userId > 0)
                    {
                        ForumInfoProvider.AddModerator(userId, ForumID);
                    }
                }
            }
        }
    }


    /// <summary>
    /// Returns ID of users who are moderators to this forum.
    /// </summary>
    protected string GetModerators()
    {
        // Get all message board moderators
        DataSet ds = ForumInfoProvider.GetModerators(mForumId);
        if (!DataHelper.DataSourceIsEmpty(ds))
        {
            return TextHelper.Join(";", DataHelper.GetStringValues(ds.Tables[0], "UserID"));
        }

        return String.Empty;
    }


    /// <summary>
    /// Board moderated checkbox change.
    /// </summary>
    protected void chkForumModerated_CheckedChanged(object sender, EventArgs e)
    {
        if (!CheckPermissions("cms.forums", PERMISSION_MODIFY))
        {
            return;
        }

        if (forum != null)
        {
            forum.ForumModerated = chkForumModerated.Checked;

            ForumInfoProvider.SetForumInfo(forum);

            ShowChangesSaved();

            RaiseOnSaved();
        }
    }


    /// <summary>
    /// Reloads the form data.
    /// </summary>
    public override void ReloadData(bool forceReload)
    {
        currentValues = GetModerators();

        if (forceReload)
        {
            forum = ForumInfoProvider.GetForumInfo(ForumID);

            if (forum != null)
            {
                userSelector.CurrentValues = currentValues;
                userSelector.ReloadData();
            }
        }

        if (!RequestHelper.IsPostBack() || forceReload)
        {
            chkForumModerated.Checked = forum.ForumModerated;

            // Load current values to uniselector
            userSelector.CurrentValues = currentValues;
            userSelector.ReloadData();
        }
    }
}