Example #1
0
        private static void IndexItem(CanhCam.Business.News news)
        {
            if (WebConfigSettings.DisableSearchIndex)
            {
                return;
            }

            if (news == null)
            {
                if (log.IsErrorEnabled)
                {
                    log.Error("news object passed to NewsIndexBuilderProvider.IndexItem was null");
                }
                return;
            }

            Guid             newsFeatureGuid = CanhCam.Business.News.FeatureGuid;
            ModuleDefinition newsFeature     = new ModuleDefinition(newsFeatureGuid);

            List <ContentAttribute> listAttribute = new List <ContentAttribute>();
            // Language
            List <Language> listLanguages  = LanguageHelper.GetPublishedLanguages();
            string          defaultCulture = WebConfigSettings.DefaultLanguageCultureForContent;
            // End Language

            ZoneSettings zoneSettings = new ZoneSettings(news.SiteId, news.ZoneID);

            //don't index pending/unpublished pages
            if (!zoneSettings.IsPublished)
            {
                return;
            }

            foreach (Language lang in listLanguages)
            {
                CanhCam.SearchIndex.IndexItem indexItem = new CanhCam.SearchIndex.IndexItem();
                if (news.SearchIndexPath.Length > 0)
                {
                    indexItem.IndexPath = news.SearchIndexPath;
                }
                indexItem.SiteId        = news.SiteId;
                indexItem.ZoneId        = zoneSettings.ZoneId;
                indexItem.ZoneName      = zoneSettings.Name;
                indexItem.ViewRoles     = zoneSettings.ViewRoles;
                indexItem.ZoneViewRoles = zoneSettings.ViewRoles;

                indexItem.PageMetaDescription = news.MetaDescription;
                indexItem.PageMetaKeywords    = news.MetaKeywords;
                indexItem.ItemGuid            = news.NewsGuid;
                indexItem.Title               = news.Title;
                indexItem.Content             = news.FullContent;
                indexItem.ContentAbstract     = news.BriefContent;
                indexItem.FeatureId           = newsFeatureGuid.ToString();
                indexItem.FeatureName         = newsFeature.FeatureName;
                indexItem.FeatureResourceFile = newsFeature.ResourceFile;

                //indexItem.OtherContent = stringBuilder.ToString();
                indexItem.IsPublished      = news.IsPublished;
                indexItem.PublishBeginDate = news.StartDate;
                indexItem.PublishEndDate   = news.EndDate;

                indexItem.CreatedUtc = news.StartDate;
                indexItem.LastModUtc = news.LastModUtc;

                if (news.Url.Length > 0)
                {
                    if (news.Url.StartsWith("http"))
                    {
                        indexItem.ViewPage = news.Url;
                    }
                    else
                    {
                        indexItem.ViewPage = news.Url.Replace("~/", string.Empty);
                    }
                }
                else
                {
                    indexItem.ViewPage = "News/NewsDetail.aspx?zoneid="
                                         + indexItem.ZoneId.ToInvariantString()
                                         + "&NewsID=" + news.NewsID.ToInvariantString()
                    ;
                }

                indexItem.UseQueryStringParams = false;

                // Language
                string listGuid = zoneSettings.ZoneGuid.ToString()
                                  + ";" + news.NewsGuid.ToString();
                List <ContentLanguage> listContent = ContentLanguage.GetByListContent(listGuid);
                indexItem.LanguageCode = defaultCulture;
                if (lang.LanguageCode.ToLower() != defaultCulture.ToLower())
                {
                    indexItem.LanguageCode = lang.LanguageCode;
                    indexItem.RemoveOnly   = true;

                    foreach (ContentLanguage ct in listContent)
                    {
                        if (lang.LanguageID == ct.LanguageId)
                        {
                            if (ct.ContentGuid == zoneSettings.PageGuid)
                            {
                                indexItem.ZoneName = ct.Title;
                            }
                            else if (ct.ContentGuid == news.NewsGuid)
                            {
                                indexItem.PageMetaDescription = ct.MetaDescription;
                                indexItem.PageMetaKeywords    = ct.MetaKeywords;
                                indexItem.Title           = ct.Title;
                                indexItem.Content         = SecurityHelper.RemoveMarkup(ct.FullContent);
                                indexItem.ContentAbstract = SecurityHelper.RemoveMarkup(ct.BriefContent);

                                indexItem.ViewPage   = ct.Url.Replace("~/", string.Empty);
                                indexItem.RemoveOnly = false;
                            }
                        }
                    }

                    listAttribute = ContentAttribute.GetByContentAsc(news.NewsGuid, lang.LanguageID);
                }
                else
                {
                    listAttribute = ContentAttribute.GetByContentAsc(news.NewsGuid);
                }
                // End Language

                foreach (ContentAttribute attribute in listAttribute)
                {
                    indexItem.Content += " " + attribute.Title + " " + SecurityHelper.RemoveMarkup(attribute.ContentText);
                }

                if (news.IsDeleted)
                {
                    indexItem.RemoveOnly = true;
                }

                CanhCam.SearchIndex.IndexHelper.RebuildIndex(indexItem);
            }

            if (debugLog)
            {
                log.Debug("Indexed " + news.Title);
            }
        }
Example #2
0
        public override void RebuildIndex(
            ZoneSettings zoneSettings,
            string indexPath)
        {
            if (WebConfigSettings.DisableSearchIndex)
            {
                return;
            }

            if (zoneSettings == null)
            {
                log.Error("zoneSettings object passed to NewsIndexBuilderProvider.RebuildIndex was null");
                return;
            }

            //don't index pending/unpublished zones
            if (!zoneSettings.IsPublished)
            {
                return;
            }

            log.Info("NewsIndexBuilderProvider indexing zone - " + zoneSettings.Name);

            //try
            //{
            Guid             newsFeatureGuid = CanhCam.Business.News.FeatureGuid;
            ModuleDefinition newsFeature     = new ModuleDefinition(newsFeatureGuid);

            List <CanhCam.Business.News> lstNews = CanhCam.Business.News.GetByZone(zoneSettings.SiteId, zoneSettings.ZoneId);

            // Language
            string listGuid     = zoneSettings.ZoneGuid.ToString();
            string listNewsGuid = string.Empty;

            foreach (CanhCam.Business.News news in lstNews)
            {
                if (!listGuid.Contains(news.NewsGuid.ToString()))
                {
                    listGuid     += ";" + news.NewsGuid.ToString();
                    listNewsGuid += ";" + news.NewsGuid.ToString();
                }
            }

            List <ContentLanguage> listContent   = ContentLanguage.GetByListContent(listGuid);
            List <Language>        listLanguages = LanguageHelper.GetPublishedLanguages();
            string defaultCulture = WebConfigSettings.DefaultLanguageCultureForContent;
            // End Language

            List <ContentAttribute> listAttribute = new List <ContentAttribute>();

            foreach (Language lang in listLanguages)
            {
                if (lang.LanguageCode.ToLower() != defaultCulture.ToLower())
                {
                    listAttribute = ContentAttribute.GetByListContent(listNewsGuid, lang.LanguageID);
                }
                else
                {
                    listAttribute = ContentAttribute.GetByListContent(listNewsGuid);
                }

                foreach (CanhCam.Business.News news in lstNews)
                {
                    CanhCam.SearchIndex.IndexItem indexItem = new CanhCam.SearchIndex.IndexItem();
                    indexItem.SiteId              = zoneSettings.SiteId;
                    indexItem.ZoneId              = zoneSettings.ZoneId;
                    indexItem.ZoneName            = zoneSettings.Name;
                    indexItem.ViewRoles           = zoneSettings.ViewRoles;
                    indexItem.ZoneViewRoles       = zoneSettings.ViewRoles;
                    indexItem.FeatureId           = newsFeatureGuid.ToString();
                    indexItem.FeatureName         = newsFeature.FeatureName;
                    indexItem.FeatureResourceFile = newsFeature.ResourceFile;

                    indexItem.ItemGuid = news.NewsGuid;
                    indexItem.Title    = news.Title;

                    string url = news.Url;
                    if (url.Length > 0)
                    {
                        if (url.StartsWith("http"))
                        {
                            indexItem.ViewPage = url;
                        }
                        else
                        {
                            indexItem.ViewPage = url.Replace("~/", string.Empty);
                        }
                    }
                    else
                    {
                        indexItem.ViewPage = "News/NewsDetail.aspx?zoneid="
                                             + indexItem.ZoneId.ToInvariantString()
                                             + "&NewsID=" + news.NewsID.ToString();
                    }

                    indexItem.PageMetaDescription = news.MetaDescription;
                    indexItem.PageMetaKeywords    = news.MetaKeywords;

                    indexItem.CreatedUtc = news.StartDate;
                    indexItem.LastModUtc = news.LastModUtc;

                    //if (indexItem.ViewPage.Length > 0)
                    //{
                    indexItem.UseQueryStringParams = false;
                    //}
                    //else
                    //{
                    //    indexItem.ViewPage = "News/NewsDetail.aspx";
                    //}
                    indexItem.Content         = SecurityHelper.RemoveMarkup(news.FullContent);
                    indexItem.ContentAbstract = SecurityHelper.RemoveMarkup(news.BriefContent);

                    indexItem.IsPublished      = news.IsPublished;
                    indexItem.PublishBeginDate = news.StartDate;
                    indexItem.PublishEndDate   = news.EndDate;

                    // Language
                    indexItem.LanguageCode = defaultCulture;
                    if (lang.LanguageCode.ToLower() != defaultCulture.ToLower())
                    {
                        indexItem.ZoneName     = string.Empty;
                        indexItem.LanguageCode = lang.LanguageCode;
                        indexItem.RemoveOnly   = true;

                        foreach (ContentLanguage ct in listContent)
                        {
                            if (lang.LanguageID == ct.LanguageId)
                            {
                                if (ct.ContentGuid == zoneSettings.ZoneGuid)
                                {
                                    indexItem.ZoneName = ct.Title;
                                }
                                else if (ct.ContentGuid == news.NewsGuid)
                                {
                                    indexItem.PageMetaDescription = ct.MetaDescription;
                                    indexItem.PageMetaKeywords    = ct.MetaKeywords;
                                    indexItem.Title           = ct.Title;
                                    indexItem.Content         = SecurityHelper.RemoveMarkup(ct.FullContent);
                                    indexItem.ContentAbstract = SecurityHelper.RemoveMarkup(ct.BriefContent);

                                    indexItem.ViewPage   = ct.Url.Replace("~/", string.Empty);
                                    indexItem.RemoveOnly = false;
                                }
                            }
                        }
                    }
                    // End Language

                    foreach (ContentAttribute attribute in listAttribute)
                    {
                        if (attribute.ContentGuid == news.NewsGuid)
                        {
                            indexItem.Content += " " + attribute.Title + " " + SecurityHelper.RemoveMarkup(attribute.ContentText);
                        }
                    }

                    CanhCam.SearchIndex.IndexHelper.RebuildIndex(indexItem, indexPath);

                    if (debugLog)
                    {
                        log.Debug("Indexed " + indexItem.Title);
                    }
                }
            }
            //}
            //catch (Exception ex)
            //{
            //    log.Error(ex);
            //}
        }