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/MBoogaard/oosting-horseriding.com/CMS/CMSFormControls/Filters/SiteFilter.ascx.cs
using System;

using CMS.Base;
using CMS.Controls;
using CMS.DataEngine;
using CMS.ExtendedControls;
using CMS.FormEngine;
using CMS.Helpers;
using CMS.SiteProvider;
using CMS.UIControls;

public partial class CMSFormControls_Filters_SiteFilter : CMSAbstractBaseFilterControl
{
    #region "Variables"

    private CMSUserControl filteredControl;
    private string mFilterMode;

    #endregion


    #region "Properties"

    /// <summary>
    /// Current filter mode.
    /// </summary>
    public override string FilterMode
    {
        get
        {
            return mFilterMode ?? (mFilterMode = ValidationHelper.GetString(filteredControl.GetValue("FilterMode"), "").ToLowerCSafe());
        }
        set
        {
            mFilterMode = value;
        }
    }


    /// <summary>
    /// Where condition.
    /// </summary>
    public override string WhereCondition
    {
        get
        {
            int selectedSite = ValidationHelper.GetInteger(siteSelector.Value, 0);

            return GenerateWhereCondition(selectedSite);
        }
        set
        {
            base.WhereCondition = value;
        }
    }


    /// <summary>
    /// Filter value.
    /// </summary>
    public override object Value
    {
        get
        {
            return siteSelector.Value;
        }
        set
        {
            SetValue(value);
        }
    }


    /// <summary>
    /// Indicates if label should be displayed.
    /// </summary>
    public bool ShowLabel
    {
        get
        {
            return plcLabel.Visible;
        }
        set
        {
            plcLabel.Visible = value;
            if (!plcLabel.Visible)
            {
                RemoveFormFilterStyles();
            }
        }
    }


    /// <summary>
    /// Gets inner uniselector.
    /// </summary>
    public UniSelector Selector
    {
        get
        {
            return siteSelector.UniSelector;
        }
    }

    #endregion


    #region "Page events"

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        filteredControl = FilteredControl as CMSUserControl;

        siteSelector.DropDownSingleSelect.AutoPostBack = true;
        siteSelector.UniSelector.OnSelectionChanged += Site_Changed;
        siteSelector.UniSelector.DialogWindowName = "SiteSelectionDialog";

        // All cultures field in cultures mode
        switch (FilterMode)
        {
            case "cultures":
                {
                    siteSelector.AllowEmpty = false;
                    siteSelector.AllowAll = false;
                    siteSelector.UniSelector.SpecialFields.Add(new SpecialField { Text = GetString("general.allcultures"), Value = String.Empty });
                }
                break;

            case "role":
                {
                    siteSelector.AllowEmpty = false;
                    siteSelector.AllowAll = false;
                    siteSelector.AllowGlobal = true;
                }
                break;

            case "user":
                {
                    siteSelector.AllowAll = true;
                    siteSelector.AllowEmpty = false;
                }
                break;

            case "notificationtemplate":
                {
                    siteSelector.AllowEmpty = false;
                    siteSelector.AllowAll = false;
                }
                break;

            case "notificationtemplateglobal":
                {
                    siteSelector.AllowEmpty = false;
                    siteSelector.AllowAll = false;
                    siteSelector.UniSelector.SpecialFields.Add(new SpecialField { Text = GetString("general.global"), Value = String.Empty });
                }
                break;

            case "department":
                {
                    siteSelector.AllowEmpty = false;
                    siteSelector.AllowAll = false;
                    siteSelector.AllowGlobal = true;
                }
                break;

            default:
                {
                    if ((Parameters != null) && (Parameters["ObjectType"] != null))
                    {
                        // Get object type
                        GeneralizedInfo currentObject = ModuleManager.GetObject(ValidationHelper.GetString(Parameters["ObjectType"], String.Empty));
                        if (currentObject != null)
                        {
                            // Show global value if supports global objects
                            if (currentObject.TypeInfo.SupportsGlobalObjects)
                            {
                                siteSelector.AllowGlobal = true;
                            }
                            siteSelector.AllowAll = false;
                            siteSelector.AllowEmpty = false;
                            siteSelector.Value = SiteContext.CurrentSiteID;
                        }
                    }
                    else
                    {
                        // Use default settings
                        siteSelector.AllowAll = true;
                        siteSelector.AllowEmpty = false;
                        plcLabel.Visible = false;
                        RemoveFormFilterStyles();
                    }
                }
                break;
        }

        // Set initial filter value
        if (!RequestHelper.IsPostBack())
        {
            if (filteredControl != null)
            {
                int defaultValue = ValidationHelper.GetInteger(filteredControl.GetValue("DefaultFilterValue"), 0);

                if (defaultValue > 0)
                {
                    siteSelector.Value = defaultValue;
                }
            }
        }
    }
    
    #endregion


    #region "Other methods"

    /// <summary>
    /// Generates where condition.
    /// </summary>
    protected string GenerateWhereCondition(int siteId)
    {
        switch (FilterMode)
        {
            case "user":
                {
                    // If some site selected filter users
                    if (siteId > 0)
                    {
                        return "UserID IN (SELECT UserID FROM CMS_UserSite WHERE SiteID = " + siteId + ")";
                    }
                }
                break;

            case "role":
                {
                    // If some site selected filter users
                    if (siteId > 0)
                    {
                        return "SiteID = " + siteId;
                    }
                    if (siteId.ToString() == siteSelector.GlobalRecordValue)
                    {
                        return "SiteID IS NULL";
                    }
                }
                break;

            case "subscriber":
                {
                    // If some site filters subscribers
                    if (siteId > 0)
                    {
                        return "SubscriberSiteID = " + siteId;
                    }
                }
                break;

            case "cultures":
                {
                    if (siteId > 0)
                    {
                        return "CultureID IN (SELECT CultureID FROM CMS_SiteCulture WHERE SiteID = " + siteId + ")";
                    }
                }
                break;

            case "bizform":
                {
                    if (siteId > 0)
                    {
                        return "FormSiteID = " + siteId;
                    }
                }
                break;

            case "notificationtemplate":
            case "notificationtemplateglobal":
                {
                    string where;

                    // Set the prefix for the item
                    SiteInfo si = SiteInfoProvider.GetSiteInfo(siteId);
                    if (si != null)
                    {
                        filteredControl.SetValue("ItemPrefix", si.SiteName + ".");
                        where = "TemplateSiteID = " + siteId;
                    }
                    // Add global templates
                    else
                    {
                        filteredControl.SetValue("ItemPrefix", null);
                        where = "TemplateSiteID IS NULL";
                    }

                    return where;
                }

            case "department":
                {
                    // If some site selected filter departments
                    if (siteId > 0)
                    {
                        return "DepartmentSiteID = " + siteId;
                    }
                    if (siteId.ToString() == siteSelector.GlobalRecordValue)
                    {
                        return "DepartmentSiteID IS NULL";
                    }
                }
                break;

            default:
                {
                    // Automatic filtering mode
                    if ((siteId > 0) || (siteId == UniSelector.US_GLOBAL_RECORD))
                    {
                        IObjectTypeDriven filtered = FilteredControl as IObjectTypeDriven;
                        if (filtered != null)
                        {
                            BaseInfo infoObj = ModuleManager.GetReadOnlyObject(filtered.ObjectType);
                            return infoObj.TypeInfo.GetSiteWhereCondition(siteId, false).ToString(true);
                        }
                    }
                }
                break;
        }

        return String.Empty;
    }


    private void SetValue(object value)
    {
        try
        {
            siteSelector.Value = value;
        }
        catch
        {
        }
    }


    /// <summary>
    /// Removes CSS styles intended for the form filter mode.
    /// </summary>
    private void RemoveFormFilterStyles()
    {
        pnlSearch.RemoveCssClass("form-horizontal");
        pnlSearch.RemoveCssClass("form-filter");
        pnlGroup.RemoveCssClass("form-group");
        pnlSelector.RemoveCssClass("filter-form-value-cell");
    }

    #endregion


    #region "Other events"

    /// <summary>
    /// Handles Site selector OnSelectionChanged event.
    /// </summary>
    protected void Site_Changed(object sender, EventArgs e)
    {
        FilterChanged = true;

        // Raise OnFilterChange event
        RaiseOnFilterChanged();
    }

    #endregion


    #region "State management"

    /// <summary>
    /// Resets filter to default state.
    /// </summary>
    public override void ResetFilter()
    {
        if (filteredControl != null)
        {
            int defaultValue = ValidationHelper.GetInteger(filteredControl.GetValue("DefaultFilterValue"), 0);
            siteSelector.SiteID = defaultValue;
            siteSelector.Reload(true);
            WhereCondition = GenerateWhereCondition(defaultValue);
        }
    }

    #endregion
}