Exemplo n.º 1
0
        public ContentHead Post(ContentHead content, [FromUri] int publishNow = 0)
        {
            cms.VerifyAuthorizationToEditContent(content.Kind);

            content.ContentUId      = Guid.NewGuid().ToString();
            content.CreateDate      = DateTime.Now.ToUniversalTime();
            content.Data.ContentUId = content.ContentUId;
            FormatContentTags(content);
            FormatContentCrossLinks(content);
            FormatLocation(content);
            if (content.ContentDate == DateTime.MinValue)
            {
                content.ContentDate = DateTime.Now.ToUniversalTime();
            }

            if (publishNow > 0)
            {
                DateTime now = DateTime.Now.ToUniversalTime();
                content.PublishAfter = new DateTime(now.Year, now.Month, now.Day, now.Hour, 0, 0);
            }

            SetCustomInfo(content);

            log.Log(String.Format(SharedStringsLog.CONTENT_0_CREATION_1, content.Kind, content.Name));

            return(cms.SaveContent(content));
        }
Exemplo n.º 2
0
        public ContentHead SaveContent(ContentHead content)
        {
            using (var context = new Data.CMSContext())
            {
                ContentHead      oldContent   = GetContent(content.ContentUId);
                List <CrossLink> removedLinks = new List <CrossLink>();
                List <CrossLink> addedLinks   = content.CrossLinks.ToList();

                if (oldContent == null)
                {
                    context.ContentHeads.Add(content);
                }
                else
                {
                    context.ContentHeads.Attach(oldContent);
                    context.Entry <ContentHead>(oldContent).CurrentValues.SetValues(content);
                    context.Entry <ContentData>(oldContent.Data).CurrentValues.SetValues(content.Data);
                    if (oldContent.CustomInfo != null)
                    {
                        context.Entry <ContentCustomInfo>(oldContent.CustomInfo).CurrentValues.SetValues(content.CustomInfo);
                    }
                }

                //context.ApplyCollectionValues<CrossLink>(oldContent != null ? oldContent.CrossLinks : null, content.CrossLinks, (t1, t2) => { return t1.PageArea == t2.PageArea; });
                ApplyCollectionValuesCrossLinks(oldContent != null ? oldContent.CrossLinks : null, content.CrossLinks);

                context.ApplyCollectionValues <ContentTag>(oldContent != null ? oldContent.Tags : null, content.Tags, (t1, t2) => { return(t1.Tag == t2.Tag); });


                context.SaveChanges();
            }
            return(content);
        }
Exemplo n.º 3
0
 private void FormatContentCrossLinks(ContentHead content)
 {
     foreach (CrossLink x in content.CrossLinks)
     {
         x.ContentUId = content.ContentUId;
     }
 }
Exemplo n.º 4
0
        public ContentHead WithData(string id)
        {
            ContentHead head = cms.GetContent(id);

            cms.VerifyAuthorizationToEditContent(head.Kind);
            return(head);
        }
Exemplo n.º 5
0
        public ContentHead SaveContent(ContentHead content)
        {
            ContentHead      oldContent   = GetContent(content.ContentUId);
            List <CrossLink> removedLinks = new List <CrossLink>();
            List <CrossLink> addedLinks   = content.CrossLinks.ToList();

            if (oldContent == null)
            {
                _context.ContentHeads.Add(content);
            }
            else
            {
                _context.ContentHeads.Attach(oldContent);
                _context.Entry <ContentHead>(oldContent).CurrentValues.SetValues(content);
                _context.Entry <ContentData>(oldContent.Data).CurrentValues.SetValues(content.Data);
                if (oldContent.CustomInfo != null)
                {
                    _context.Entry <ContentCustomInfo>(oldContent.CustomInfo).CurrentValues.SetValues(content.CustomInfo);
                }
            }


            ApplyCollectionValuesCrossLinks(oldContent != null ? oldContent.CrossLinks : null, content.CrossLinks);
            //_context.ApplyCollectionValues<CrossLink>(oldContent != null ? oldContent.CrossLinks : null, content.CrossLinks, (c1, c2) => { return c1.PageArea == c2.PageArea; });

            _context.ApplyCollectionValues <ContentTag>(oldContent != null ? oldContent.Tags : null, content.Tags, (t1, t2) => { return(t1.Tag == t2.Tag); });

            _context.SaveChanges();

            _log.Log($"Content '{content.Name}' ({content.Kind}) was created/updated.");

            return(content);
        }
Exemplo n.º 6
0
        private void FormatLocation(ContentHead content)
        {
            content.Name          = content.Name.Trim();
            content.CanonicalName = cms.CanonicalName(content.Name);
            if (!content.Location.EndsWith("/"))
            {
                content.Location = content.Location + "/";
            }
            content.Location = content.Location.ToLower();

            ContentHead contentWithSameUrl = cms.GetContentHeadByUrlAndKind(content.Location + content.CanonicalName, null, false);

            if (contentWithSameUrl == null || contentWithSameUrl.ContentUId == content.ContentUId)
            {
                return;
            }

            // if already exists a different content with the same url and browsable, throws an error
            ContentKind ckind = cms.GetContentKind(content.Kind);

            if (ckind.Browsable.HasValue && (bool)ckind.Browsable)
            {
                content.CanonicalName = MakeCanonicalNameUnique(content);
            }
        }
Exemplo n.º 7
0
        public ContentHead Post([FromBody] ContentHead content, [FromQuery] int publishNow = 0)
        {
            this._cmsService.VerifyAuthorizationToEditContent(User, content.Kind);

            content.ContentUId = Guid.NewGuid().ToString();
            content.CreateDate = DateTime.Now.ToUniversalTime();
            if (content.Data == null)
            {
                content.Data = new ContentData();
            }
            content.Data.ContentUId = content.ContentUId;
            FormatContentTags(content);
            FormatContentCrossLinks(content);


            FormatLocation(content);


            if (content.ContentDate == DateTime.MinValue)
            {
                content.ContentDate = DateTime.Now.ToUniversalTime();
            }

            if (publishNow > 0)
            {
                DateTime now = DateTime.Now.ToUniversalTime();
                content.PublishAfter = new DateTime(now.Year, now.Month, now.Day, now.Hour, 0, 0);
            }

            SetCustomInfo(content);

            return(this._cmsService.SaveContent(content));
        }
Exemplo n.º 8
0
        public ContentHead Get(string id)
        {
            ContentHead head = _cmsService.GetContent(id);

            _cmsService.VerifyAuthorizationToEditContent(User, head.Kind);
            return(head);
        }
Exemplo n.º 9
0
        public void Put(string id, [FromBody] string area, [FromUri] short changeDisplayOrder)
        {
            ContentHead head = cms.GetContentHead(id);

            cms.VerifyAuthorizationToEditContent(head.Kind);

            cms.AddCrossLink(id, area, changeDisplayOrderBy: changeDisplayOrder);
        }
Exemplo n.º 10
0
 private void SetCustomInfo(ContentHead head)
 {
     if (head.CustomInfo == null)
     {
         return;
     }
     head.CustomInfo.ContentUId = head.ContentUId;
 }
Exemplo n.º 11
0
 private void FormatContentTags(ContentHead content)
 {
     foreach (ContentTag t in content.Tags)
     {
         t.ContentUId = content.ContentUId;
         t.Tag        = t.Tag.ToLower().Trim();
     }
     content.Tags = content.Tags.Distinct().ToArray();
 }
Exemplo n.º 12
0
        public void Delete(string id)
        {
            ContentHead head = cms.GetContentHead(id);

            cms.VerifyAuthorizationToEditContent(head.Kind);

            cms.RemoveContent(id);

            log.Log(String.Format(SharedStringsLog.CONTENT_0_REMOVE_1, head.Kind, head.Name));
        }
Exemplo n.º 13
0
        public void Delete(string id, string area)
        {
            ContentHead head = cms.GetContentHead(id);

            cms.VerifyAuthorizationToEditContent(head.Kind);

            cms.RemoveCrossLink(id, area);

            log.Log(String.Format(SharedStringsLog.CROSSLINK_0_REMOVE_1, head.Kind, head.Name));
        }
Exemplo n.º 14
0
        public static IHtmlContent ContentsRelatedWithHotestThread(Func<ContentHead, HelperResult> itemTemplate = null, string location = null, string[] kinds = null, ContentRanks rankBy = ContentRanks.PageViews, Periods period = Periods.LastDay, int top = 5, string navigationId = null)
        {
            DateTime? lastPublished = DateTime.Now;
            if (period != Periods.AnyTime)
                lastPublished = BoxLib.GetLastPublishDate(location, kinds);

            ContentHead hotContent = BoxLib.GetHotestContent(kinds, location, rankBy, period.StartDate(lastPublished), null);
            if (hotContent == null)
                return new HtmlString("");
            return ContentsRelated(hotContent.TagsToArray(), itemTemplate, null, null, null, false, top, navigationId);
        }
Exemplo n.º 15
0
        public void RemoveContent(string contentUId)
        {
            ContentHead content = _context.ContentHeads.SingleOrDefault(c => c.ContentUId == contentUId);

            if (content == null)
            {
                return;
            }
            _context.ContentHeads.Remove(content);
            _context.SaveChanges();
        }
Exemplo n.º 16
0
 private void FormatContentCrossLinks(ContentHead content)
 {
     if (content.CrossLinks == null)
     {
         content.CrossLinks = new CrossLink[0];
     }
     foreach (CrossLink x in content.CrossLinks)
     {
         x.ContentUId = content.ContentUId;
     }
 }
Exemplo n.º 17
0
        /// <summary>
        /// Gets a BOX content.
        /// The content data will be parsed at the CONTENT property.
        /// </summary>
        /// <param name="contentUId">The content UId</param>
        /// <returns>The content</returns>
        public ContentHead GetContent(string contentUId)
        {
            ContentHead content = _cmsService.GetContent(contentUId, false);

            if (content == null)
            {
                return(null);
            }

            _cmsService.ParseContentData(content);
            return(content);
        }
Exemplo n.º 18
0
 public void RemoveContent(string contentUId)
 {
     using (var context = new Data.CMSContext()) {
         ContentHead content = context.ContentHeads.SingleOrDefault(c => c.ContentUId == contentUId);
         if (content == null)
         {
             return;
         }
         context.ContentHeads.Remove(content);
         context.SaveChanges();
     }
 }
Exemplo n.º 19
0
 private void FormatContentTags(ContentHead content)
 {
     if (content.Tags == null)
     {
         content.Tags = new ContentTag[0];
     }
     foreach (ContentTag t in content.Tags)
     {
         t.ContentUId = content.ContentUId;
         t.Tag        = t.Tag.Trim();
     }
     content.Tags = content.Tags.Distinct().ToArray();
 }
Exemplo n.º 20
0
        public RedirectResult Preview(string id)
        {
            string      siteHost = cms.SiteHost;
            string      token    = security.GetSignedUserToken();
            ContentHead content  = cms.GetContentHead(id);

            if (content == null)
            {
                throw new System.Exception("Colud not preview content. Content '" + id + "' not found.");
            }

            return(new RedirectResult("http://" + siteHost + content.Location + content.CanonicalName + "?previewToken=" + token));
        }
Exemplo n.º 21
0
        private string MakeCanonicalNameUnique(ContentHead content)
        {
            string currentcanonicalname = content.CanonicalName += "-" + content.ContentDate.ToString("dd-MMM-yyyy-HH-mm-ss");

            ContentHead contentWithSameUrl = cms.GetContentHeadByUrlAndKind(content.Location + content.CanonicalName, null, false);

            if (contentWithSameUrl == null || contentWithSameUrl.ContentUId == content.ContentUId)
            {
                return(currentcanonicalname);
            }

            throw new HttpResponseException(System.Net.HttpStatusCode.Conflict);
        }
Exemplo n.º 22
0
        public ContentHead Post(string id, [FromBody] int selectedAlternative)
        {
            ContentHead contentHead = cms.GetContent(id);

            cms.ParseContentData(contentHead);

            if (selectedAlternative == 1)
            {
                contentHead.CONTENT.TotalVotes1 += 1;
            }

            if (selectedAlternative == 2)
            {
                contentHead.CONTENT.TotalVotes2 += 1;
            }

            if (selectedAlternative == 3)
            {
                contentHead.CONTENT.TotalVotes3 += 1;
            }

            if (selectedAlternative == 4)
            {
                contentHead.CONTENT.TotalVotes4 += 1;
            }

            if (selectedAlternative == 5)
            {
                contentHead.CONTENT.TotalVotes5 += 1;
            }

            decimal total = SumOfAlternatives(contentHead.CONTENT);

            //Calculates percent for all alternatives
            contentHead.CONTENT.Percent1 = (contentHead.CONTENT.TotalVotes1 / total) * 100;
            contentHead.CONTENT.Percent2 = (contentHead.CONTENT.TotalVotes2 / total) * 100;
            contentHead.CONTENT.Percent3 = (contentHead.CONTENT.TotalVotes3 / total) * 100;
            contentHead.CONTENT.Percent4 = (contentHead.CONTENT.TotalVotes4 / total) * 100;
            contentHead.CONTENT.Percent5 = (contentHead.CONTENT.TotalVotes5 / total) * 100;

            contentHead.Data.JSON = contentHead.CONTENT.ToString();

            cms.SaveContent(contentHead);

            //PageviewCount means number of votes
            SiteService site = new Box.CMS.Services.SiteService();

            site.LogPageView(id);

            return(contentHead);
        }
Exemplo n.º 23
0
        public static string ContentTags(ContentHead content)
        {
            string str = String.Empty;

            foreach (ContentTag tag in content.Tags)
            {
                str = str + ", " + tag.Tag;
            }
            if (str.Length <= 2)
            {
                return(str);
            }
            return(str.Substring(2));
        }
Exemplo n.º 24
0
        protected override void InitializePage()
        {
            base.InitializePage();
            string id = UrlData[0];

            SiteService site = new Box.CMS.Services.SiteService();

            HEAD = site.GetContent(id);
            if (HEAD == null)
            {
                throw new System.Web.HttpException(404, "page not found");
            }

            site.LogPageView(id);

            CONTENT_URL = Request.Url.Scheme + "://" + Request.Url.Host + (Request.Url.Port != 80?":" + Request.Url.Port:"") + HEAD.Location + HEAD.CanonicalName;
            CONTENT     = HEAD.CONTENT;
        }
Exemplo n.º 25
0
        public static string GetContentLink(ContentHead head)
        {
            SiteService site = new SiteService();

            if (!String.IsNullOrEmpty(head.ExternalLinkUrl))
            {
                return(head.ExternalLinkUrl);
            }

            if (site.IgnoreVirtualAppPath)
            {
                return(head.Location + head.CanonicalName);
            }
            else
            {
                return(AppName + head.Location + head.CanonicalName);
            }
        }
Exemplo n.º 26
0
        public ContentHead Put(string id, ContentHead content, [FromUri] int publishNow = 0)
        {
            cms.VerifyAuthorizationToEditContent(content.Kind);
            content.Data.ContentUId = content.ContentUId;
            FormatContentCrossLinks(content);
            FormatContentTags(content);
            FormatLocation(content);

            if (publishNow > 0)
            {
                DateTime now = DateTime.Now.ToUniversalTime();
                content.PublishAfter = new DateTime(now.Year, now.Month, now.Day, now.Hour, 0, 0);
            }

            SetCustomInfo(content);

            log.Log(String.Format(SharedStringsLog.CONTENT_0_UPDATE_1, content.Kind, content.Name));

            return(cms.SaveContent(content));
        }
Exemplo n.º 27
0
        public ContentHead Post(ContentHead content, [FromUri] int publishNow = 0)
        {
            cms.VerifyAuthorizationToEditContent(content.Kind);

            content.ContentUId = Guid.NewGuid().ToString();
            content.CreateDate = DateTime.Now.ToUniversalTime();
            content.Data.ContentUId = content.ContentUId;
            FormatContentTags(content);
            FormatContentCrossLinks(content);
            FormatLocation(content);
            if (content.ContentDate == DateTime.MinValue)
                content.ContentDate = DateTime.Now.ToUniversalTime();

            if (publishNow > 0) {
                DateTime now = DateTime.Now.ToUniversalTime();
                content.PublishAfter = new DateTime(now.Year, now.Month, now.Day, now.Hour, 0, 0);
            }

            SetCustomInfo(content);

            log.Log(String.Format(SharedStringsLog.CONTENT_0_CREATION_1, content.Kind, content.Name));

            return cms.SaveContent(content);
        }
Exemplo n.º 28
0
 private void SetCustomInfo(ContentHead head)
 {
     if (head.CustomInfo == null)
         return;
     head.CustomInfo.ContentUId = head.ContentUId;
 }
Exemplo n.º 29
0
        private string MakeCanonicalNameUnique(ContentHead content)
        {
            string currentcanonicalname = content.CanonicalName += "/" + content.ContentDate.ToString("dd/MMM/yyyy");

            ContentHead contentWithSameUrl = cms.GetContentHeadByUrlAndKind(content.Location + content.CanonicalName, null, false);
            if (contentWithSameUrl == null || contentWithSameUrl.ContentUId == content.ContentUId)
                return currentcanonicalname;

            throw new HttpResponseException(System.Net.HttpStatusCode.Conflict);
        }
Exemplo n.º 30
0
        private void FormatLocation(ContentHead content)
        {
            content.Name = content.Name.Trim();
            content.CanonicalName = cms.CanonicalName(content.Name);
            if (!content.Location.EndsWith("/"))
                content.Location = content.Location + "/";
            content.Location = content.Location.ToLower();

            ContentHead contentWithSameUrl = cms.GetContentHeadByUrlAndKind(content.Location + content.CanonicalName, null, false);
            if (contentWithSameUrl == null || contentWithSameUrl.ContentUId == content.ContentUId)
                return;

            // if already exists a different content with the same url and browsable, throws an error
            ContentKind ckind = cms.GetContentKind(content.Kind);
            if (ckind.Browsable.HasValue && (bool)ckind.Browsable)
                content.CanonicalName = MakeCanonicalNameUnique(content);
        }
Exemplo n.º 31
0
 private void FormatContentTags(ContentHead content)
 {
     foreach (ContentTag t in content.Tags) {
         t.ContentUId = content.ContentUId;
         t.Tag = t.Tag.ToLower().Trim();
     }
     content.Tags =  content.Tags.Distinct().ToArray();
 }
Exemplo n.º 32
0
 private void FormatContentCrossLinks(ContentHead content)
 {
     foreach (CrossLink x in content.CrossLinks)
         x.ContentUId = content.ContentUId;
 }
Exemplo n.º 33
0
 public void ParseContentData(ContentHead content)
 {
     content.CONTENT = JObject.Parse(content.Data.JSON);
 }
Exemplo n.º 34
0
        void context_AuthorizeRequest(object sender, EventArgs e)
        {
            System.Web.HttpApplication app = sender as System.Web.HttpApplication;
            if (app == null)
            {
                return;
            }

            string fullUrl     = BoxLib.RemoveAppNameFromUrl(app.Context.Request.RawUrl);
            string redirectUrl = null;

            if (fullUrl.StartsWith("/where-is-my-db.htm"))
            {
                return;
            }

            // if true, can see not published contents
            bool canSeeOnlyPublished = GetShowOnlyPublished(app, fullUrl);

            string url = BoxLib.RemoveAppNameFromUrl(app.Request.FilePath);

            redirectCache.TryGetValue(url, out redirectUrl);

            if (redirectUrl == null)
            {
                Services.CMSService cms = new Services.CMSService();

                ContentHead c = null;
                try
                {
                    c = cms.GetContentHeadByUrlAndKind(url, null, canSeeOnlyPublished);
                }
                catch (Exception ex)
                {
                    var SQLexception = Box.Core.Services.SecurityService.GetSqlException(ex);
                    if (SQLexception != null && !Box.Core.Services.SecurityService.IsDebug)
                    {
                        app.Context.Response.Redirect("~/where-is-my-db.htm#" + SQLexception.Number);
                    }
                    else
                    {
                        throw ex;
                    }
                }

                if (c == null)
                {
                    return;
                }

                redirectUrl = "~/box_templates/" + c.Kind + "/" + c.ContentUId;

                // only add at cache published urls
                if (canSeeOnlyPublished)
                {
                    redirectCache.TryAdd(url, redirectUrl);
                }
            }

            app.Context.RewritePath(redirectUrl + "?" + app.Context.Request.QueryString);
        }
Exemplo n.º 35
0
        public void LogPageShare(ContentHead content, string serverHost, bool logShare = true, bool logComments = false)
        {
            string url = serverHost + content.Location + content.CanonicalName;

            string appDataPath = System.Web.HttpContext.Current.Server.MapPath("~/App_Data");

            System.Net.Http.HttpClient wc = new System.Net.Http.HttpClient();

            wc.GetAsync("https://graph.facebook.com/?id=" + url)
                .ContinueWith(task => {

                    if (task.IsFaulted && DebugCMS) {
                        string filePath = appDataPath + "\\logShareError" + DateTime.Now.ToString().Replace("/", ".").Replace(":", ".") + ".txt";
                        using (StreamWriter sw = System.IO.File.CreateText(filePath)) {
                            sw.WriteLine("https://graph.facebook.com/?id=" + url);
                            sw.WriteLine("Exception: " + task.Exception.Message);
                            if(task.Exception.InnerException!=null)
                                sw.WriteLine("InnerException: " + task.Exception.InnerException.Message);
                            if (task.Exception.InnerException.InnerException != null)
                                sw.WriteLine("InnerException 2: " + task.Exception.InnerException.InnerException.Message);
                        }
                    }

                    if (task.IsFaulted || task.IsCanceled)
                        return;
                    var msg = task.Result;
                    dynamic data = null;

                    if (msg.StatusCode != System.Net.HttpStatusCode.OK)
                        return;

                    string json = msg.Content.ReadAsStringAsync().Result;
                    data = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);

                    if (logShare) {
                        if (data.shares == null)
                            UpdateShareCount(content.ContentUId, 0);
                        else
                            UpdateShareCount(content.ContentUId, (long)data.shares);
                    }

                    if (logComments) {
                        if (data.comments == null)
                            UpdateCommentCount(content.ContentUId, 0);
                        else
                            UpdateCommentCount(content.ContentUId, (int)data.comments);
                    }

                });
        }
Exemplo n.º 36
0
 public void ParseContentData(ContentHead content)
 {
     content.CONTENT = JObject.Parse(content.Data.JSON);
 }
Exemplo n.º 37
0
 /* Some enviroments does not supports HTTP VERB PUT
  * Use this workaround */
 public ContentHead UPDATE(string id, ContentHead content, [FromUri] int publishNow = 0)
 {
     return(Put(id, content, publishNow));
 }
Exemplo n.º 38
0
        public ContentHead Put(string id, ContentHead content, [FromUri] int publishNow = 0)
        {
            cms.VerifyAuthorizationToEditContent(content.Kind);
            content.Data.ContentUId = content.ContentUId;
            FormatContentCrossLinks(content);
            FormatContentTags(content);
            FormatLocation(content);

            if (publishNow > 0) {
                DateTime now = DateTime.Now.ToUniversalTime();
                content.PublishAfter = new DateTime(now.Year, now.Month, now.Day, now.Hour, 0, 0);
            }

            SetCustomInfo(content);

            log.Log(String.Format(SharedStringsLog.CONTENT_0_UPDATE_1, content.Kind, content.Name));

            return cms.SaveContent(content);
        }
Exemplo n.º 39
0
 public ContentHead UPDATE(string id, ContentHead content, [FromUri] int publishNow = 0)
 {
     return Put(id, content, publishNow);
 }
Exemplo n.º 40
0
        public ContentHead SaveContent(ContentHead content)
        {
            using (var context = new Data.CMSContext()) {

                ContentHead oldContent = GetContent(content.ContentUId);
                List<CrossLink> removedLinks = new List<CrossLink>();
                List<CrossLink> addedLinks = content.CrossLinks.ToList();

                if (oldContent == null) {
                    context.ContentHeads.Add(content);
                }
                else {
                    context.ContentHeads.Attach(oldContent);
                    context.Entry<ContentHead>(oldContent).CurrentValues.SetValues(content);
                    context.Entry<ContentData>(oldContent.Data).CurrentValues.SetValues(content.Data);
                    if(oldContent.CustomInfo!=null)
                        context.Entry<ContentCustomInfo>(oldContent.CustomInfo).CurrentValues.SetValues(content.CustomInfo);
                }

                //context.ApplyCollectionValues<CrossLink>(oldContent != null ? oldContent.CrossLinks : null, content.CrossLinks, (t1, t2) => { return t1.PageArea == t2.PageArea; });
                ApplyCollectionValuesCrossLinks(oldContent != null ? oldContent.CrossLinks : null, content.CrossLinks);

                context.ApplyCollectionValues<ContentTag>(oldContent != null ? oldContent.Tags : null, content.Tags, (t1, t2) => { return t1.Tag == t2.Tag; });

                context.SaveChanges();
            }
            return content;
        }
Exemplo n.º 41
0
        public async Task LogFBPageShare(ContentHead content, string serverHost, bool logShare = true, bool logComments = false)
        {
            string url = serverHost + content.Location + content.CanonicalName;


            System.Net.Http.HttpClient wc = new System.Net.Http.HttpClient();

            var msg = await wc.GetAsync("https://graph.facebook.com/?id=" + url);

            // if (task.IsFaulted && _cmsService.Settings.CMS_DEBUG) {
            //     string filePath = System.IO.Path.Combine(_cmsService.AppPath, "App_Data/logShareError" + DateTime.Now.ToString().Replace("/", ".").Replace(":", ".") + ".txt");
            //     using (StreamWriter sw = System.IO.File.CreateText(filePath)) {
            //         sw.WriteLine("https://graph.facebook.com/?id=" + url);
            //         sw.WriteLine("Exception: " + task.Exception.Message);
            //         if(task.Exception.InnerException!=null)
            //             sw.WriteLine("InnerException: " + task.Exception.InnerException.Message);
            //         if (task.Exception.InnerException.InnerException != null)
            //             sw.WriteLine("InnerException 2: " + task.Exception.InnerException.InnerException.Message);
            //     }
            // }

            // if (task.IsFaulted || task.IsCanceled)
            //     return;
            // var msg = task.Result;
            dynamic data = null;

            if (msg.StatusCode != System.Net.HttpStatusCode.OK)
            {
                if (_cmsService.Settings.CMS_DEBUG)
                {
                    string filePath = System.IO.Path.Combine(_cmsService.AppPath, "App_Data/logShareError" + DateTime.Now.ToString().Replace("/", ".").Replace(":", ".") + ".txt");
                    using (StreamWriter sw = System.IO.File.CreateText(filePath)) {
                        sw.WriteLine("https://graph.facebook.com/?id=" + url);
                        sw.WriteLine("ERROR CODE: " + msg.StatusCode);
                        sw.WriteLine("ERROR: " + await msg.Content.ReadAsStringAsync());
                    }
                }
                return;
            }

            string json = msg.Content.ReadAsStringAsync().Result;

            data = Newtonsoft.Json.JsonConvert.DeserializeObject <dynamic>(json);

            if (logShare)
            {
                if (data.shares == null)
                {
                    UpdateShareCount(content.ContentUId, 0);
                }
                else
                {
                    UpdateShareCount(content.ContentUId, (long)data.shares);
                }
            }

            if (logComments)
            {
                if (data.comments == null)
                {
                    UpdateCommentCount(content.ContentUId, 0);
                }
                else
                {
                    UpdateCommentCount(content.ContentUId, (int)data.comments);
                }
            }
        }