using System; using System.Data; using System.Web.UI.WebControls; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.SiteProvider; using CMS.UIControls; public partial class CMSModules_Friends_Controls_FriendsUserList : CMSUserControl { #region "Variables" private bool mShowItemAsLink = true; private bool mShowAddLink = false; #endregion #region "Public properties" /// /// Zero rows text. /// public string ZeroRowsText { get { return gridFriends.ZeroRowsText; } set { gridFriends.ZeroRowsText = value; } } /// /// Size of the page. /// public string PageSize { get { return gridFriends.PageSize; } set { gridFriends.PageSize = value; } } /// /// Determines whether to show add new item link. /// public bool ShowAddLink { get { return mShowAddLink; } set { mShowAddLink = value; } } /// /// Determines whether to show items as links. /// public bool ShowItemAsLink { get { return mShowItemAsLink; } set { mShowItemAsLink = value; } } #endregion #region "Page events" protected void Page_Load(object sender, EventArgs e) { if (StopProcessing) { // Stop processing } else { CurrentUserInfo user = CMSContext.CurrentUser; // Content is visible only for authenticated users if (user.IsAuthenticated()) { if (string.IsNullOrEmpty(ZeroRowsText)) { ZeroRowsText = GetString("friends.nofriendsfound"); } // Register modal dialog JS function ScriptHelper.RegisterDialogScript(Page); gridFriends.OrderBy = "UserName"; gridFriends.OnExternalDataBound += gridFriends_OnExternalDataBound; gridFriends.IsLiveSite = IsLiveSite; // Where condition string where = "FriendStatus = " + Convert.ToInt32(FriendshipStatusEnum.Approved); // If not global admin, filter out friends from different sites if (!user.IsGlobalAdministrator) { where = SqlHelperClass.AddWhereCondition(where, "UserID IN(SELECT UserID FROM CMS_UserSite WHERE SiteID=" + CMSContext.CurrentSiteID + " )"); } gridFriends.WhereCondition = where; // Add parameter @UserID if (gridFriends.QueryParameters == null) { gridFriends.QueryParameters = new QueryDataParameters(); } gridFriends.QueryParameters.Add("@UserID", user.UserID); } else { Visible = false; } } } #endregion #region "Grid methods" protected object gridFriends_OnExternalDataBound(object sender, string sourceName, object parameter) { switch (sourceName) { case "formattedusername": DataRowView drv = parameter as DataRowView; int userId = ValidationHelper.GetInteger(drv["UserID"], 0); return GetItemText(userId, drv["UserName"], drv["FullName"], drv["UserNickName"]); } return parameter; } /// /// Renders row item according to control settings. /// /// Selected user id /// User Name /// User full name /// Nickname protected string GetItemText(int userId, object username, object fullname, object usernickname) { string usrName = ValidationHelper.GetString(username, string.Empty); string nick = HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(usrName, fullname.ToString(), usernickname.ToString(), IsLiveSite)); if (ShowItemAsLink) { return "" + nick + ""; } return nick; } #endregion }