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/wwwroot/CMSWebParts/Newsletters/NewsletterArchive.ascx.cs
using System;

using CMS.Helpers;
using CMS.Newsletters;
using CMS.PortalControls;
using CMS.SiteProvider;

public partial class CMSWebParts_Newsletters_NewsletterArchive : CMSAbstractWebPart
{
    #region "Public properties"

    /// <summary>
    /// Gets or sets the newsletter code name.
    /// </summary>
    public string NewsletterName
    {
        get
        {
            return ValidationHelper.GetString(GetValue("NewsletterName"), "");
        }
        set
        {
            SetValue("NewsletterName", value);
        }
    }


    /// <summary>
    /// Gets or sets the name of the transforamtion which is used for displaying the results.
    /// </summary>
    public string TransformationName
    {
        get
        {
            return ValidationHelper.GetString(GetValue("TransformationName"), "cms.root.newsletter_archive");
        }
        set
        {
            SetValue("TransformationName", value);
            repNewsArchive.TransformationName = value;
        }
    }


    /// <summary>
    /// Gets or sets the value that indicates whether only issues where mailout time is bigger than current time can be selected.
    /// </summary>
    public bool SelectOnlySendedIssues
    {
        get
        {
            return ValidationHelper.GetBoolean(GetValue("SelectOnlySendedIssues"), false);
        }
        set
        {
            SetValue("SelectOnlySendedIssues", value);
        }
    }


    /// <summary>
    /// Gets or sets the value that indicates whether value 'IgnoreShowInNewsletterArchive' for select issues will be ignored.
    /// </summary>
    public bool IgnoreShowInNewsletterArchive
    {
        get
        {
            return ValidationHelper.GetBoolean(GetValue("IgnoreShowInNewsletterArchive"), false);
        }
        set
        {
            SetValue("IgnoreShowInNewsletterArchive", value);
        }
    }


    /// <summary>
    /// Gets or sets the number which indicates how many issues should be displayed.
    /// </summary>
    public int SelectTopN
    {
        get
        {
            return ValidationHelper.GetInteger(GetValue("SelectTopN"), -1);
        }
        set
        {
            SetValue("SelectTopN", value);
            repNewsArchive.TopN = value;
        }
    }


    /// <summary>
    /// Gets or sets the Order By clause.
    /// </summary>
    public string OrderBy
    {
        get
        {
            return ValidationHelper.GetString(GetValue("OrderBy"), "IssueMailoutTime");
        }
        set
        {
            SetValue("OrderBy", value);
            repNewsArchive.OrderBy = value;
        }
    }

    #endregion


    /// <summary>
    /// Content loaded event handler.
    /// </summary>
    public override void OnContentLoaded()
    {
        base.OnContentLoaded();
        SetupControl();
    }


    /// <summary>
    /// Initializes the control properties.
    /// </summary>
    protected void SetupControl()
    {
        if (StopProcessing)
        {
            repNewsArchive.StopProcessing = true;
        }
        else
        {
            // Get the newsletter
            NewsletterInfo news = NewsletterInfoProvider.GetNewsletterInfo(NewsletterName, SiteContext.CurrentSiteID);

            if (news != null)
            {
                repNewsArchive.ControlContext = ControlContext;
                repNewsArchive.QueryName = "newsletter.issue.selectall";

                // Get newsletter's issues that are not A/B tests or finished A/B test winners
                string where = string.Format("(IssueNewsletterID = {0}) AND (IssueIsABTest=0 OR IssueIsABTest IS NULL OR (IssueIsABTest=1 AND IssueVariantOfIssueID IS NULL AND (IssueStatus={1} OR IssueStatus={2})))",
                    news.NewsletterID, (int)IssueStatusEnum.Sending, (int)IssueStatusEnum.Finished);

                if (!IgnoreShowInNewsletterArchive)
                {
                    where += " AND (IssueShowInNewsletterArchive = 1)";
                }

                if (SelectOnlySendedIssues)
                {
                    where += string.Format(" AND (IssueMailoutTime IS NOT NULL) AND (IssueMailoutTime < getDate()) AND (IssueStatus={0} OR IssueStatus={1})", (int)IssueStatusEnum.ReadyForSending, (int)IssueStatusEnum.Finished);
                }

                repNewsArchive.WhereCondition = where;
                repNewsArchive.OrderBy = OrderBy;
                repNewsArchive.TopN = SelectTopN;
                repNewsArchive.TransformationName = TransformationName;
                
                // Set caching properties
                repNewsArchive.CacheMinutes = CacheMinutes;
                repNewsArchive.CacheItemName = CacheItemName;
                repNewsArchive.CacheDependencies = CacheDependencies;
            }
        }
    }


    /// <summary>
    /// Reloads the data.
    /// </summary>
    public override void ReloadData()
    {
        base.ReloadData();
        SetupControl();
        repNewsArchive.ReloadData(true);
    }


    /// <summary>
    /// Clears cache.
    /// </summary>
    public override void ClearCache()
    {
        repNewsArchive.ClearCache();
    }


    /// <summary>
    /// OnPreRender override.
    /// </summary>
    protected override void OnPreRender(EventArgs e)
    {
        Visible = !StopProcessing;

        if (!repNewsArchive.HasData())
        {
            Visible = false;
        }
        base.OnPreRender(e);
    }
}