public HttpResponseMessage GetForumsList()
        {
            var portalSettings = PortalSettings;
            var userInfo       = portalSettings.UserInfo;
            var forumUser      = new UserController().GetUser(portalSettings.PortalId, ActiveModule.ModuleID, userInfo.UserID);
            var fc             = new ForumController();
            var forumIds       = fc.GetForumsForUser(forumUser.UserRoles, portalSettings.PortalId, ActiveModule.ModuleID, "CanView", true);

            DataTable ForumTable = fc.GetForumView(portalSettings.PortalId, ActiveModule.ModuleID, userInfo.UserID, userInfo.IsSuperUser, forumIds);

            Dictionary <string, string> rows = new Dictionary <string, string>();;

            foreach (DataRow dr in ForumTable.Rows)
            {
                rows.Add(dr["ForumId"].ToString(), dr["ForumName"].ToString());
            }
            return(Request.CreateResponse(HttpStatusCode.OK, rows.ToJson()));
        }
        public User GetUser(int SiteId, int ModuleId, string userName)
        {
            User u = GetDNNUser(SiteId, ModuleId, userName);

            if (u != null)
            {
                u = FillProfile(SiteId, ModuleId, u);
                ForumController fc = new ForumController();
                string          fs = fc.GetForumsForUser(u.UserRoles, SiteId, ModuleId, "CanApprove");
                if (!(string.IsNullOrEmpty(fs)) || u.IsSuperUser || u.IsAdmin)
                {
                    u.Profile.IsMod = true;
                }
                else
                {
                    u.Profile.IsMod = false;
                }
            }
            return(u);
        }
예제 #3
0
        public User DNNGetCurrentUser(int SiteId, int ModuleId)
        {
            PortalSettings _portalSettings = PortalController.GetCurrentPortalSettings();
            User           u = new User();

            DotNetNuke.Entities.Users.UserInfo cu = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo();
            u = LoadUser(cu);

            u = FillProfile(SiteId, ModuleId, u);
            ForumController fc = new ForumController();
            string          fs = fc.GetForumsForUser(u.UserRoles, SiteId, ModuleId, "CanApprove");

            if (!(string.IsNullOrEmpty(fs)))
            {
                u.Profile.IsMod = true;
            }
            else
            {
                u.Profile.IsMod = false;
            }

            return(u);
        }
예제 #4
0
        private void BindPosts()
        {
            _pageSize = (UserId > 0) ? UserDefaultPageSize : MainSettings.PageSize;

            if (_pageSize < 5)
            {
                _pageSize = 10;
            }

            _rowIndex = (PageId - 1) * _pageSize;

            // If we don't have a search string, tag or user id, there is nothing we can do so exit
            if (SearchText == string.Empty && Tags == string.Empty && AuthorUsername == String.Empty && AuthorUserId <= 0)
            {
                return;
            }

            // Build the list of forums to search
            // An intersection of the forums allows vs forums requested.

            var parseId = 0;

            var fc = new ForumController();

            var sForumsAllowed  = fc.GetForumsForUser(ForumUser.UserRoles, PortalId, ModuleId, "CanRead", true); // Make sure and pass strict = true here
            var forumsAllowed   = sForumsAllowed.Split(new [] { ':', ';' }).Where(f => int.TryParse(f, out parseId)).Select(f => parseId).ToList();
            var forumsRequested = Forums.Split(new[] { ':', ';' }).Where(f => int.TryParse(f, out parseId)).Select(f => parseId).ToList();

            var forumsToSearch = string.Empty;

            // If forums requested is empty or contains and entry less than or equal to zero, return all available forums
            if (!forumsRequested.Any() || forumsRequested.Any(o => o <= 0))
            {
                forumsToSearch = forumsAllowed.Aggregate(forumsToSearch, (current, f) => current + ((current.Length == 0 ? string.Empty : ":") + f));
            }
            else
            {
                forumsToSearch = forumsRequested.Where(forumsAllowed.Contains).Aggregate(forumsToSearch, (current, f) => current + ((current.Length == 0 ? String.Empty : ":") + f));
            }

            const int maxCacheHours = 1;

            var ds = DataProvider.Instance().Search(PortalId, ModuleId, UserId, SearchId, _rowIndex, _pageSize, SearchText, SearchType, SearchColumns, SearchDays, AuthorUserId, AuthorUsername, forumsToSearch, Tags, ResultType, Sort, maxCacheHours, MainSettings.FullText);

            var dtSummary = (ds != null) ? ds.Tables[0] : null;

            _searchId       = (dtSummary != null) ? Convert.ToInt32(dtSummary.Rows[0][0]) : 0;
            _rowCount       = (dtSummary != null) ? Convert.ToInt32(dtSummary.Rows[0][1]) : 0;
            _searchDuration = (dtSummary != null) ? Convert.ToInt32(dtSummary.Rows[0][2]) : 0;
            _searchAge      = (dtSummary != null) ? Convert.ToInt32(dtSummary.Rows[0][3]) : 0;

            var totalSeconds = new TimeSpan(0, 0, 0, 0, _searchDuration.Value).TotalSeconds;
            var ageInMinutes = new TimeSpan(0, 0, 0, 0, _searchAge.Value).TotalMinutes;

            litSearchDuration.Text = string.Format(GetSharedResource("[RESX:SearchDuration]"), totalSeconds);

            if (ageInMinutes > 0.25)
            {
                litSearchAge.Text = string.Format(GetSharedResource("[RESX:SearchAge]"), ageInMinutes);
            }


            _parameters = null; // We reset this so we make sure to get an updated version

            var dtResults = (ds != null) ? ds.Tables[1] : null;

            if (dtResults != null && dtResults.Rows.Count > 0)
            {
                litRecordCount.Text = string.Format(GetSharedResource("[RESX:SearchRecords]"), _rowIndex + 1, _rowIndex + dtResults.Rows.Count, _rowCount);

                var rptResults = ResultType == 0 ? rptTopics : rptPosts;

                pnlMessage.Visible = false;

                try
                {
                    rptResults.Visible    = true;
                    rptResults.DataSource = dtResults;
                    rptResults.DataBind();
                    BuildPager(PagerTop);
                    BuildPager(PagerBottom);
                }
                catch (Exception ex)
                {
                    litMessage.Text    = ex.Message;
                    pnlMessage.Visible = true;
                    rptResults.Visible = false;
                }
            }
            else
            {
                litMessage.Text    = GetSharedResource("[RESX:SearchNoResults]");
                pnlMessage.Visible = true;
            }
        }
예제 #5
0
		public User DNNGetCurrentUser(int SiteId, int ModuleId)
		{
			PortalSettings _portalSettings = PortalController.GetCurrentPortalSettings();
			User u = new User();
			DotNetNuke.Entities.Users.UserInfo cu = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo();
			u = LoadUser(cu);

			u = FillProfile(SiteId, ModuleId, u);
			ForumController fc = new ForumController();
			string fs = fc.GetForumsForUser(u.UserRoles, SiteId, ModuleId, "CanApprove");
			if (! (string.IsNullOrEmpty(fs)))
			{
				u.Profile.IsMod = true;
			}
			else
			{
				u.Profile.IsMod = false;
			}


			return u;
		}
예제 #6
0
		public User GetUser(int SiteId, int ModuleId, string userName)
		{
			User u = GetDNNUser(SiteId, ModuleId, userName);
			if (u != null)
			{
				u = FillProfile(SiteId, ModuleId, u);
				ForumController fc = new ForumController();
				string fs = fc.GetForumsForUser(u.UserRoles, SiteId, ModuleId, "CanApprove");
				if (! (string.IsNullOrEmpty(fs)) || u.IsSuperUser || u.IsAdmin)
				{
					u.Profile.IsMod = true;
				}
				else
				{
					u.Profile.IsMod = false;
				}
			}
			return u;
		}
예제 #7
0
        private void BindPosts(string sort = "ASC")
        {
            _pageSize = MainSettings.PageSize;
            
            if (UserId > 0)
                _pageSize = UserDefaultPageSize;
            
            if (_pageSize < 5)
                _pageSize = 10;

            _rowIndex = (PageId == 1) ? 0 : ((PageId * _pageSize) - _pageSize);

            var db = new Data.Common();
            var fc = new ForumController();
            var forumIds = fc.GetForumsForUser(ForumUser.UserRoles, PortalId, ModuleId, "CanRead");
            
            var sCrumb = "<a href=\"" + Utilities.NavigateUrl(TabId, "", new[] { ParamKeys.ViewType + "=grid", "afgt=xxx" }) + "\">yyyy</a>";
            sCrumb = sCrumb.Replace("xxx", "{0}").Replace("yyyy", "{1}");
            
            if (Request.Params["afgt"] != null)
            {
                var gview = Utilities.XSSFilter(Request.Params["afgt"]).ToLowerInvariant();
                switch (gview)
                {
                    case "notread":

                        if (UserId != -1)
                        {
                            lblHeader.Text = GetSharedResource("[RESX:NotRead]");
                            _dtResults = db.UI_NotReadView(PortalId, ModuleId, UserId, _rowIndex, _pageSize, sort, forumIds).Tables[0];
                            if (_dtResults.Rows.Count > 0)
                            {
                                _rowCount = _dtResults.Rows[0].GetInt("RecordCount");
                                btnMarkRead.Visible = true;
                                btnMarkRead.InnerText = GetSharedResource("[RESX:MarkAllRead]");
                            }
                        }
                        else
                            Response.Redirect(NavigateUrl(TabId), true);
                        break;

                    case "unanswered":

                        lblHeader.Text = GetSharedResource("[RESX:Unanswered]");
                        _dtResults = db.UI_UnansweredView(PortalId, ModuleId, UserId, _rowIndex, _pageSize, sort, forumIds).Tables[0];
                        if (_dtResults.Rows.Count > 0)
                            _rowCount = _dtResults.Rows[0].GetInt("RecordCount");

                        break;

                    case "tags":

                        var tagId = -1;
                        if (Request.QueryString["aftg"] != null && SimulateIsNumeric.IsNumeric(Request.QueryString["aftg"]))
                            tagId = int.Parse(Request.QueryString["aftg"]);

                        lblHeader.Text = GetSharedResource("[RESX:Tags]");
                        _dtResults = db.UI_TagsView(PortalId, ModuleId, UserId, _rowIndex, _pageSize, sort, forumIds, tagId).Tables[0];
                        if (_dtResults.Rows.Count > 0)
                            _rowCount = _dtResults.Rows[0].GetInt("RecordCount");

                        break;

                    case "mytopics":

                        if (UserId != -1)
                        {
                            lblHeader.Text = GetSharedResource("[RESX:MyTopics]");
                            _dtResults = db.UI_MyTopicsView(PortalId, ModuleId, UserId, _rowIndex, _pageSize, sort, forumIds).Tables[0];
                            if (_dtResults.Rows.Count > 0)
                                _rowCount = _dtResults.Rows[0].GetInt("RecordCount");
                        }
                        else
                            Response.Redirect(NavigateUrl(TabId), true);

                        break;

                    case "activetopics":

                        lblHeader.Text = GetSharedResource("[RESX:ActiveTopics]");

                        /*
                        if (UserLastAccess != Utilities.NullDate())
                        {
                            timeFrame = Convert.ToInt32(SimulateDateDiff.DateDiff(SimulateDateDiff.DateInterval.Minute, UserLastAccess, DateTime.Now));
                            drpTimeFrame.Items.Insert(0, new ListItem(GetDate(UserLastAccess), "~" + timeFrame.ToString()));
                        }
                         */

                        var timeFrame = Utilities.SafeConvertInt(Request.Params["ts"], 1440);

                        if (timeFrame < 15 | timeFrame > 80640)
                            timeFrame = 1440;

                        drpTimeFrame.Visible = true;
                        drpTimeFrame.SelectedIndex = drpTimeFrame.Items.IndexOf(drpTimeFrame.Items.FindByValue(timeFrame.ToString()));
                        _dtResults = db.UI_ActiveView(PortalId, ModuleId, UserId, _rowIndex, _pageSize, sort, timeFrame, forumIds).Tables[0];
                        if (_dtResults.Rows.Count > 0)
                            _rowCount = Convert.ToInt32(_dtResults.Rows[0]["RecordCount"]);

                        break;

                    default:
                        Response.Redirect(NavigateUrl(TabId), true);
                        break;
                }

                sCrumb = string.Format(sCrumb, gview, lblHeader.Text);
               
                if (MainSettings.UseSkinBreadCrumb)
                    Environment.UpdateBreadCrumb(Page.Controls, sCrumb);

                var tempVar = BasePage;
                Environment.UpdateMeta(ref tempVar, "[VALUE] - " + lblHeader.Text, "[VALUE]", "[VALUE]");
            }


            if (_dtResults != null && _dtResults.Rows.Count > 0)
            {
                litRecordCount.Text = string.Format(GetSharedResource("[RESX:SearchRecords]"), _rowIndex + 1, _rowIndex + _dtResults.Rows.Count, _rowCount);

                pnlMessage.Visible = false;

                try
                {
                    rptTopics.Visible = true;
                    rptTopics.DataSource = _dtResults;
                    rptTopics.DataBind();
                    BuildPager(PagerTop);
                    BuildPager(PagerBottom);
                }
                catch (Exception ex)
                {
                    litMessage.Text = ex.Message;
                    pnlMessage.Visible = true;
                    rptTopics.Visible = false;
                }
            }
            else
            {
                litMessage.Text = GetSharedResource("[RESX:SearchNoResults]");
                pnlMessage.Visible = true;
            }

        }
예제 #8
0
        private void BindPosts()
        {
            _pageSize = (UserId > 0) ? UserDefaultPageSize : MainSettings.PageSize;

            if (_pageSize < 5)
                _pageSize = 10;

            _rowIndex = (PageId - 1) * _pageSize;
        
            // If we don't have a search string, tag or user id, there is nothing we can do so exit
            if (SearchText == string.Empty && Tags == string.Empty && AuthorUsername == String.Empty && AuthorUserId <= 0) 
                return;

            // Build the list of forums to search
            // An intersection of the forums allows vs forums requested.

            var parseId = 0;

            var fc = new ForumController();

            var sForumsAllowed = fc.GetForumsForUser(ForumUser.UserRoles, PortalId, ModuleId, "CanRead", true); // Make sure and pass strict = true here
            var forumsAllowed = sForumsAllowed.Split(new [] {':',';'}).Where(f => int.TryParse(f, out parseId)).Select(f => parseId).ToList();
            var forumsRequested = Forums.Split(new[] { ':', ';' }).Where(f => int.TryParse(f, out parseId)).Select(f => parseId).ToList();

            var forumsToSearch = string.Empty;
            
            // If forums requested is empty or contains and entry less than or equal to zero, return all available forums
            if(!forumsRequested.Any() || forumsRequested.Any(o => o <= 0))
                forumsToSearch = forumsAllowed.Aggregate(forumsToSearch, (current, f) => current + ((current.Length == 0 ? string.Empty : ":") + f));
            else
                forumsToSearch = forumsRequested.Where(forumsAllowed.Contains).Aggregate(forumsToSearch, (current, f) => current + ((current.Length == 0 ? String.Empty : ":") + f));

            const int maxCacheHours = 1;

            var ds = DataProvider.Instance().Search(PortalId, ModuleId, UserId, SearchId, _rowIndex, _pageSize, SearchText, SearchType, SearchColumns, SearchDays, AuthorUserId, AuthorUsername, forumsToSearch, Tags, ResultType, Sort, maxCacheHours, MainSettings.FullText);

            var dtSummary = (ds != null) ? ds.Tables[0] : null;

            _searchId = (dtSummary != null) ? Convert.ToInt32(dtSummary.Rows[0][0]) : 0;
            _rowCount = (dtSummary != null) ? Convert.ToInt32(dtSummary.Rows[0][1]) : 0;
            _searchDuration = (dtSummary != null) ? Convert.ToInt32(dtSummary.Rows[0][2]) : 0;
            _searchAge = (dtSummary != null) ? Convert.ToInt32(dtSummary.Rows[0][3]) : 0;

            var totalSeconds = new TimeSpan(0, 0, 0, 0, _searchDuration.Value).TotalSeconds;
            var ageInMinutes = new TimeSpan(0, 0, 0, 0, _searchAge.Value).TotalMinutes;

            litSearchDuration.Text = string.Format(GetSharedResource("[RESX:SearchDuration]"), totalSeconds); 

            if(ageInMinutes > 0.25)
                litSearchAge.Text = string.Format(GetSharedResource("[RESX:SearchAge]"), ageInMinutes); 


            _parameters = null; // We reset this so we make sure to get an updated version

            var dtResults = (ds != null) ? ds.Tables[1] : null;
            if (dtResults != null && dtResults.Rows.Count > 0)
            {
                litRecordCount.Text = string.Format(GetSharedResource("[RESX:SearchRecords]"), _rowIndex + 1, _rowIndex + dtResults.Rows.Count, _rowCount);

                var rptResults = ResultType == 0 ? rptTopics : rptPosts;

                pnlMessage.Visible = false;
                
                try
                {
                    rptResults.Visible = true;
                    rptResults.DataSource = dtResults;
                    rptResults.DataBind();
                    BuildPager(PagerTop);
                    BuildPager(PagerBottom);
                }
                catch (Exception ex)
                {
                    litMessage.Text = ex.Message;
                    pnlMessage.Visible = true;
                    rptResults.Visible = false;
                }
            }
            else
            {
                litMessage.Text = GetSharedResource("[RESX:SearchNoResults]");
                pnlMessage.Visible = true;
            }
        }
예제 #9
0
        private void BindPosts(string sort = "ASC")
        {
            _pageSize = MainSettings.PageSize;

            if (UserId > 0)
            {
                _pageSize = UserDefaultPageSize;
            }

            if (_pageSize < 5)
            {
                _pageSize = 10;
            }

            _rowIndex = (PageId == 1) ? 0 : ((PageId * _pageSize) - _pageSize);

            var db       = new Data.Common();
            var fc       = new ForumController();
            var forumIds = fc.GetForumsForUser(ForumUser.UserRoles, PortalId, ModuleId, "CanRead");

            var sCrumb = "<a href=\"" + Utilities.NavigateUrl(TabId, "", new[] { ParamKeys.ViewType + "=grid", "afgt=xxx" }) + "\">yyyy</a>";

            sCrumb = sCrumb.Replace("xxx", "{0}").Replace("yyyy", "{1}");

            if (Request.Params["afgt"] != null)
            {
                var gview = Utilities.XSSFilter(Request.Params["afgt"]).ToLowerInvariant();
                switch (gview)
                {
                case "notread":

                    if (UserId != -1)
                    {
                        lblHeader.Text = GetSharedResource("[RESX:NotRead]");
                        _dtResults     = db.UI_NotReadView(PortalId, ModuleId, UserId, _rowIndex, _pageSize, sort, forumIds).Tables[0];
                        if (_dtResults.Rows.Count > 0)
                        {
                            _rowCount             = _dtResults.Rows[0].GetInt("RecordCount");
                            btnMarkRead.Visible   = true;
                            btnMarkRead.InnerText = GetSharedResource("[RESX:MarkAllRead]");
                        }
                    }
                    else
                    {
                        Response.Redirect(NavigateUrl(TabId), true);
                    }
                    break;

                case "unanswered":

                    lblHeader.Text = GetSharedResource("[RESX:Unanswered]");
                    _dtResults     = db.UI_UnansweredView(PortalId, ModuleId, UserId, _rowIndex, _pageSize, sort, forumIds).Tables[0];
                    if (_dtResults.Rows.Count > 0)
                    {
                        _rowCount = _dtResults.Rows[0].GetInt("RecordCount");
                    }

                    break;

                case "tags":

                    var tagId = -1;
                    if (Request.QueryString["aftg"] != null && SimulateIsNumeric.IsNumeric(Request.QueryString["aftg"]))
                    {
                        tagId = int.Parse(Request.QueryString["aftg"]);
                    }

                    lblHeader.Text = GetSharedResource("[RESX:Tags]");
                    _dtResults     = db.UI_TagsView(PortalId, ModuleId, UserId, _rowIndex, _pageSize, sort, forumIds, tagId).Tables[0];
                    if (_dtResults.Rows.Count > 0)
                    {
                        _rowCount = _dtResults.Rows[0].GetInt("RecordCount");
                    }

                    break;

                case "mytopics":

                    if (UserId != -1)
                    {
                        lblHeader.Text = GetSharedResource("[RESX:MyTopics]");
                        _dtResults     = db.UI_MyTopicsView(PortalId, ModuleId, UserId, _rowIndex, _pageSize, sort, forumIds).Tables[0];
                        if (_dtResults.Rows.Count > 0)
                        {
                            _rowCount = _dtResults.Rows[0].GetInt("RecordCount");
                        }
                    }
                    else
                    {
                        Response.Redirect(NavigateUrl(TabId), true);
                    }

                    break;

                case "activetopics":

                    lblHeader.Text = GetSharedResource("[RESX:ActiveTopics]");

                    /*
                     * if (UserLastAccess != Utilities.NullDate())
                     * {
                     *  timeFrame = Convert.ToInt32(SimulateDateDiff.DateDiff(SimulateDateDiff.DateInterval.Minute, UserLastAccess, DateTime.Now));
                     *  drpTimeFrame.Items.Insert(0, new ListItem(GetDate(UserLastAccess), "~" + timeFrame.ToString()));
                     * }
                     */

                    var timeFrame = Utilities.SafeConvertInt(Request.Params["ts"], 1440);

                    if (timeFrame < 15 | timeFrame > 80640)
                    {
                        timeFrame = 1440;
                    }

                    drpTimeFrame.Visible       = true;
                    drpTimeFrame.SelectedIndex = drpTimeFrame.Items.IndexOf(drpTimeFrame.Items.FindByValue(timeFrame.ToString()));
                    _dtResults = db.UI_ActiveView(PortalId, ModuleId, UserId, _rowIndex, _pageSize, sort, timeFrame, forumIds).Tables[0];
                    if (_dtResults.Rows.Count > 0)
                    {
                        _rowCount = Convert.ToInt32(_dtResults.Rows[0]["RecordCount"]);
                    }

                    break;

                default:
                    Response.Redirect(NavigateUrl(TabId), true);
                    break;
                }

                sCrumb = string.Format(sCrumb, gview, lblHeader.Text);

                if (MainSettings.UseSkinBreadCrumb)
                {
                    Environment.UpdateBreadCrumb(Page.Controls, sCrumb);
                }

                var tempVar = BasePage;
                Environment.UpdateMeta(ref tempVar, "[VALUE] - " + lblHeader.Text, "[VALUE]", "[VALUE]");
            }


            if (_dtResults != null && _dtResults.Rows.Count > 0)
            {
                litRecordCount.Text = string.Format(GetSharedResource("[RESX:SearchRecords]"), _rowIndex + 1, _rowIndex + _dtResults.Rows.Count, _rowCount);

                pnlMessage.Visible = false;

                try
                {
                    rptTopics.Visible    = true;
                    rptTopics.DataSource = _dtResults;
                    rptTopics.DataBind();
                    BuildPager(PagerTop);
                    BuildPager(PagerBottom);
                }
                catch (Exception ex)
                {
                    litMessage.Text    = ex.Message;
                    pnlMessage.Visible = true;
                    rptTopics.Visible  = false;
                }
            }
            else
            {
                litMessage.Text    = GetSharedResource("[RESX:SearchNoResults]");
                pnlMessage.Visible = true;
            }
        }
        public HttpResponseMessage GetForumsList()
        {
            var portalSettings = PortalSettings;
            var userInfo = portalSettings.UserInfo;
            var forumUser = new UserController().GetUser(portalSettings.PortalId, ActiveModule.ModuleID, userInfo.UserID);
            var fc = new ForumController();
            var forumIds = fc.GetForumsForUser(forumUser.UserRoles, portalSettings.PortalId, ActiveModule.ModuleID, "CanView", true);

            DataTable ForumTable = fc.GetForumView(portalSettings.PortalId, ActiveModule.ModuleID, userInfo.UserID, userInfo.IsSuperUser, forumIds);

            Dictionary<string, string> rows = new Dictionary<string, string>();;
            foreach (DataRow dr in ForumTable.Rows)
            {
                rows.Add(dr["ForumId"].ToString(),dr["ForumName"].ToString());
            }
            return Request.CreateResponse(HttpStatusCode.OK, rows.ToJson());
        }