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/TDijk1/erp-apps.eu/wwwroot/CMSModules/Friends/Controls/Friends_Request.ascx.cs
using System;
using System.Collections;

using CMS.Community;
using CMS.Core;
using CMS.Helpers;
using CMS.Membership;
using CMS.Base;
using CMS.ExtendedControls;
using CMS.DataEngine;
using CMS.SiteProvider;


public partial class CMSModules_Friends_Controls_Friends_Request : FriendsActionControl
{
    #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
        {
            base.IsLiveSite = value;
            selectUser.IsLiveSite = value;
            plcMess.IsLiveSite = value;
        }
    }

    #endregion


    #region "Methods"

    protected void Page_Load(object sender, EventArgs e)
    {
        // Set user id
        UserID = QueryHelper.GetInteger("userid", 0);
        RequestedUserID = QueryHelper.GetInteger("requestid", 0);
        int siteId = QueryHelper.GetInteger("siteid", -1);

        if (RequestedUserID != 0)
        {
            plcUserSelect.Visible = false;
        }

        bool isGlobalAdmin = MembershipContext.AuthenticatedUser.IsGlobalAdministrator;

        RedirectIfRequestIsInvalid(UserID, RequestedUserID);

        // Show site filter for global admin only and if the site is not specified
        selectUser.ShowSiteFilter = ((siteId == 0) && isGlobalAdmin);

        selectUser.WhereCondition = "UserName NOT LIKE N'public'";

        if (!isGlobalAdmin)
        {
            selectUser.HideDisabledUsers = true;
            selectUser.HideHiddenUsers = true;
            selectUser.HideNonApprovedUsers = true;
        }

        // Enable automatic approval
        plcAdministrator.Visible = CanApprove();

        if (!ModuleManager.IsModuleLoaded(ModuleName.MESSAGING))
        {
            chkSendMessage.Visible = false;
            chkSendMessage.Checked = false;
        }
    }


    /// <summary>
    /// Formats username of sender and recipients.
    /// </summary>
    public override string GetFormattedUserName(string userName, string fullName, string nickName)
    {
        return Functions.GetFormattedUserName(userName, fullName, nickName, IsLiveSite);
    }


    /// <summary>
    /// Redirects user to an AccessDenied Page with proper error message if
    /// request parameters are not correct.
    /// </summary>
    /// <param name="userID">ID of the user, sending the request.</param>
    /// <param name="requestID">ID of th recepient of the request.</param>
    private void RedirectIfRequestIsInvalid(int userID, int requestID)
    {
        string message = VerifyRequestParameters(userID, requestID);

        if (!String.IsNullOrEmpty(message))
        {
            UseCMSDeskAccessDeniedPage = !IsLiveSite;
            RedirectToAccessDenied(message);
        }
    }

    /// <summary>
    /// Verifies request parameters and generates a proper erroe message if
    /// request parameters are not correct.
    /// </summary>
    /// <param name="userID">ID of the user, sending the request.</param>
    /// <param name="requestID">ID of th recepient of the request.</param>
    private string VerifyRequestParameters(int userID, int requestID)
    {
        UserInfo requestedUser = null;
        if (requestID > 0)
        {
            requestedUser = UserInfoProvider.GetUserInfo(requestID);
        }
        UserInfo requestingUser = UserInfoProvider.GetUserInfo(userID);

        if (((requestedUser == null) && (requestID != 0)) || (requestingUser == null))
        {
            return GetString("user.error_doesnoteexist");
        }

        string errMsg = VerifyRequestedUser(requestedUser) ?? VerifyRequestingUser(requestingUser);

        return errMsg;
    }


    /// <summary>
    /// Verifies whether current user has permissions to create a friend-request on behalf of <paramref name="requestingUser"/>
    /// </summary>
    /// <param name="requestingUser">User on behalf of which the friend request is attempted.</param>
    /// <returns>Error message if there is an error. Null otherwise.</returns>
    private string VerifyRequestingUser(UserInfo requestingUser)
    {
        if (!currentUser.IsGlobalAdministrator)
        {
            if (CanApprove())
            {
                if (!requestingUser.IsInSite(SiteContext.CurrentSiteName))
                {
                    return GetString("user.error_doesnoteexist");
                }
            }
            else if (requestingUser.UserID != currentUser.UserID)
            {
                return GetString("friends.error_permission_createfriendsonbehalf");
            }
        }

        return null;
    }


    /// <summary>
    /// Verifies whether current user has permissions to send a friend-request to <paramref name="requestedUser"/>
    /// </summary>
    /// <param name="requestedUser">User to which the friend request is being sent.</param>
    /// <returns>Error message if there is an error. Null otherwise.</returns>
    private string VerifyRequestedUser(UserInfo requestedUser)
    {
        if (!currentUser.IsGlobalAdministrator && (requestedUser != null))
        {
            if (!requestedUser.IsInSite(SiteContext.CurrentSiteName)
                    || (requestedUser.UserIsHidden)
                    || (!requestedUser.Enabled)
                    || (requestedUser.UserSettings.UserWaitingForApproval))
            {
                return GetString("user.error_doesnoteexist");
            }
        }

        return null;
    }

    #endregion


    #region "Button handling"

    protected void btnRequest_Click(object senderObject, EventArgs e)
    {
        RaiseOnCheckPermissions(PERMISSION_MANAGE, this);

        string message = string.Empty;

        // Requested user id not set explicitly
        if (RequestedUserID == 0)
        {
            RequestedUserID = ValidationHelper.GetInteger(selectUser.Value, 0);
        }

        // Both users have to be specified
        if ((RequestedUserID == 0) || (UserID == 0))
        {
            message = GetString("friends.friendrequired");
        }
        else
        {
            UserInfo requestedUser = UserInfoProvider.GetUserInfo(RequestedUserID);
            message = requestedUser == null ? GetString("user.error_doesnoteexist") : VerifyRequestedUser(requestedUser);
            if (String.IsNullOrEmpty(message))
            {
                if (!FriendInfoProvider.FriendshipExists(UserID, RequestedUserID))
                {
                    // Set up control
                    Comment = txtComment.Text;
                    SendMail = chkSendEmail.Checked;
                    SendMessage = chkSendMessage.Checked;
                    SelectedFriends = new ArrayList();
                    SelectedFriends.Add(RequestedUserID);
                    AutomaticApprovment = chkAutomaticApprove.Checked;

                    message = PerformAction(FriendsActionEnum.Request);
                }
                else
                {
                    message = GetString("friends.friendshipexists");
                }
            }
        }

        if (!String.IsNullOrEmpty(message))
        {
            ShowError(message);
        }
        else
        {
            // Register wopener script
            ScriptHelper.RegisterWOpenerScript(Page);

            btnRequest.Enabled = false;
            selectUser.Enabled = false;
            txtComment.Enabled = false;
            chkAutomaticApprove.Enabled = false;
            chkSendEmail.Enabled = false;
            chkSendMessage.Enabled = false;
            ShowConfirmation(GetString("friends.friendshiprequested"));

            const string refreshScript = "if (window.top && window.top.refreshFriendsList) { window.top.refreshFriendsList(); } else if (window.opener && window.opener.refreshFriendsList) { window.opener.refreshFriendsList(); }";
            ScriptHelper.RegisterStartupScript(Page, typeof(string), "closeFriendsDialogFriendsList", refreshScript, true);

            ScriptHelper.RegisterStartupScript(Page,typeof(string),"closeFriendsDialog","CloseDialog(true);",true);
        }
    }

    #endregion
}