Exemplo n.º 1
0
        public static Domain.Models.Submission Map(this Data.Models.Submission submission)
        {
            Domain.Models.Submission result = null;
            if (submission != null)
            {
                result = new Domain.Models.Submission()
                {
                    ID       = submission.ID,
                    UserName = (submission.IsAnonymized ? submission.ID.ToString() : submission.UserName),

                    Title   = submission.Title,
                    Url     = submission.Url,
                    Content = (submission.Type == 1 ? submission.Content : (string)null),

                    //Support For Backwards compat, if FormattedContent is empty, do it here.
                    FormattedContent = (submission.Type == 1 && String.IsNullOrEmpty(submission.FormattedContent) ? Formatting.FormatMessage(submission.Content, true) : submission.FormattedContent),

                    LastEditDate = submission.LastEditDate,
                    ThumbnailUrl = VoatPathHelper.ThumbnailPath(submission.Thumbnail, true, true),
                    CommentCount = CommentCounter.CommentCount(submission.ID),
                    CreationDate = submission.CreationDate,
                    UpCount      = (int)submission.UpCount,
                    Views        = (int)submission.Views,
                    DownCount    = (int)submission.DownCount,
                    Type         = submission.Type == 1 ? SubmissionType.Text : SubmissionType.Link,
                    Subverse     = submission.Subverse,
                    IsAnonymized = submission.IsAnonymized,
                    IsDeleted    = submission.IsDeleted,
                    Rank         = submission.Rank,
                    RelativeRank = submission.RelativeRank
                };
            }
            return(result);
        }
Exemplo n.º 2
0
        public static Domain.Models.Submission Map(this Data.Models.Submission submission)
        {
            Domain.Models.Submission result = null;
            if (submission != null)
            {
                result = new Domain.Models.Submission();


                result.ID       = submission.ID;
                result.UserName = (submission.IsAnonymized ? submission.ID.ToString() : submission.UserName);

                result.Title   = submission.Title;
                result.Url     = submission.Url;
                result.Content = (submission.Type == 1 ? submission.Content : (string)null);

                //Support For Backwards compat, if FormattedContent is empty, do it here.
                result.FormattedContent = (submission.Type == 1 && String.IsNullOrEmpty(submission.FormattedContent) ? Formatting.FormatMessage(submission.Content, true) : submission.FormattedContent);

                result.LastEditDate = submission.LastEditDate;
                result.ThumbnailUrl = FileManager.Instance.Uri(new FileKey(submission.Thumbnail, FileType.Thumbnail));
                //result.ThumbnailUrl = VoatUrlFormatter.ThumbnailPath(submission.Thumbnail, true, true);
                result.CommentCount = CommentCounter.CommentCount(submission.ID);
                result.CreationDate = submission.CreationDate;
                result.UpCount      = (int)submission.UpCount;
                result.Views        = (int)submission.Views;
                result.DownCount    = (int)submission.DownCount;
                result.Type         = submission.Type == 1 ? SubmissionType.Text : SubmissionType.Link;
                result.Subverse     = submission.Subverse;
                result.IsAnonymized = submission.IsAnonymized;
                result.IsAdult      = submission.IsAdult;
                result.IsDeleted    = submission.IsDeleted;
                result.Rank         = submission.Rank;
                result.RelativeRank = submission.RelativeRank;
                result.ArchiveDate  = submission.ArchiveDate;
                result.Domain       = submission.DomainReversed.ReverseSplit();

                //add flair if present
                if (!String.IsNullOrEmpty(submission.FlairLabel))
                {
                    result.Attributes.Add(new ContentAttribute()
                    {
                        ID = -1, Type = AttributeType.Flair, Name = submission.FlairLabel, CssClass = submission.FlairCss
                    });
                }
                if (result.IsAdult)
                {
                    result.Attributes.Add(new ContentAttribute()
                    {
                        ID = -1, Type = AttributeType.Data, Name = "NSFW", CssClass = "linkflairlabel"
                    });
                }
                if (result.ArchiveDate.HasValue)
                {
                    result.Attributes.Add(new ContentAttribute()
                    {
                        ID = -1, Type = AttributeType.Data, Name = "Archived", CssClass = "linkflairlabel"
                    });
                }
            }
            return(result);
        }
Exemplo n.º 3
0
        // GET: rss/{subverseName}
        public ActionResult Rss(string subverseName)
        {
            var submissions = CacheHandler.Instance.Register <List <Submission> >(CachingKey.RssFeed(subverseName), new Func <List <Submission> >(() => {
                var result = new List <Submission>();
                using (var _db = new voatEntities())
                {
                    _db.EnableCacheableOutput();

                    if (subverseName != null && subverseName != "all")
                    {
                        // return only frontpage submissions from a given subverse
                        var subverse = DataCache.Subverse.Retrieve(subverseName); // _db.Subverse.Find(subverseName);
                        if (subverse != null)
                        {
                            //HACK: Disable subverse
                            if (subverse.IsAdminDisabled.HasValue && subverse.IsAdminDisabled.Value)
                            {
                                //ViewBag.Subverse = subverse.Name;
                                //return SubverseDisabledErrorView();
                                return(result);
                            }

                            result = (from message in _db.Submissions
                                      where !message.IsDeleted && message.Subverse == subverse.Name
                                      select message)
                                     .OrderByDescending(s => s.Rank)
                                     .Take(25)
                                     .ToList();
                        }
                    }
                    else if (subverseName == "all")
                    {
                        // return submissions from all subs
                        result = (from message in _db.Submissions
                                  join subverse in _db.Subverses on message.Subverse equals subverse.Name
                                  where !message.IsDeleted && subverse.IsPrivate != true && subverse.IsAdminPrivate != true && message.Rank > 0.00009
                                  where !(from bu in _db.BannedUsers select bu.UserName).Contains(message.UserName)
                                  select message).OrderByDescending(s => s.Rank).ThenByDescending(s => s.CreationDate).Take(25).ToList();
                    }
                    else
                    {
                        // return site-wide frontpage submissions
                        result = (from message in _db.Submissions
                                  where !message.IsDeleted
                                  join defaultsubverse in _db.DefaultSubverses on message.Subverse equals defaultsubverse.Subverse
                                  select message)
                                 .OrderByDescending(s => s.Rank)
                                 .Take(25)
                                 .ToList();
                    }
                }
                return(result);
            }), TimeSpan.FromMinutes(30));

            var feed = new SyndicationFeed("Voat", "Have your say", new Uri("http://www.voat.co"))
            {
                Language = "en-US",
                ImageUrl =
                    new Uri("http://" + System.Web.HttpContext.Current.Request.Url.Authority +
                            "/Graphics/voat-logo.png")
            };

            var feedItems = new List <SyndicationItem>();

            foreach (var submission in submissions)
            {
                var commentsUrl = new Uri("http://" + System.Web.HttpContext.Current.Request.Url.Authority + "/v/" + submission.Subverse + "/comments/" + submission.ID);
                var subverseUrl = new Uri("http://" + System.Web.HttpContext.Current.Request.Url.Authority + "/v/" + submission.Subverse);

                var authorName = submission.UserName;
                // submission type submission
                if (submission.IsAnonymized)
                {
                    authorName = submission.ID.ToString(CultureInfo.InvariantCulture);
                }

                if (submission.Type == 1)
                {
                    var item = new SyndicationItem(
                        submission.Title,
                        submission.Content + "</br>" + "Submitted by " + "<a href='u/" + authorName + "'>" + authorName + "</a> to <a href='" + subverseUrl + "'>" + submission.Subverse + "</a> | <a href='" + commentsUrl + "'>" + CommentCounter.CommentCount(submission.ID) + " comments",
                        commentsUrl,
                        submission.ID.ToString(CultureInfo.InvariantCulture),
                        submission.CreationDate);
                    feedItems.Add(item);
                }
                else
                {
                    // link type submission
                    var linkUrl = new Uri(submission.Url);

                    // add a thumbnail if submission has one
                    if (submission.Thumbnail != null)
                    {
                        string thumbnailUrl;

                        if (Settings.UseContentDeliveryNetwork)
                        {
                            thumbnailUrl = new Uri("http://cdn." + System.Web.HttpContext.Current.Request.Url.Authority + "/thumbs/" + submission.Thumbnail).ToString();
                        }
                        else
                        {
                            thumbnailUrl = new Uri("http://" + System.Web.HttpContext.Current.Request.Url.Authority + "/Thumbs/" + submission.Thumbnail).ToString();
                        }

                        var item = new SyndicationItem(
                            submission.Title,
                            "<a xmlns='http://www.w3.org/1999/xhtml' href='" + commentsUrl + "'><img title='" + submission.Title + "' alt='" + submission.Title + "' src='" + thumbnailUrl + "' /></a>" +
                            "</br>" +
                            "Submitted by " + "<a href='u/" + authorName + "'>" + authorName + "</a> to <a href='" + subverseUrl + "'>" + submission.Subverse + "</a> | <a href='" + commentsUrl + "'>" + CommentCounter.CommentCount(submission.ID) + " comments</a>" +
                            " | <a href='" + linkUrl + "'>link</a>",
                            commentsUrl,
                            submission.ID.ToString(CultureInfo.InvariantCulture),
                            submission.CreationDate);

                        feedItems.Add(item);
                    }
                    else
                    {
                        var item = new SyndicationItem(
                            submission.Title,
                            "Submitted by " + "<a href='u/" + authorName + "'>" + authorName + "</a> to <a href='" + subverseUrl + "'>" + submission.Subverse + "</a> | <a href='" + commentsUrl + "'>" + CommentCounter.CommentCount(submission.ID) + " comments",
                            commentsUrl,
                            submission.ID.ToString(CultureInfo.InvariantCulture),
                            submission.CreationDate);
                        feedItems.Add(item);
                    }
                }
            }

            feed.Items = feedItems;
            return(new FeedResult(new Rss20FeedFormatter(feed)));
        }