public override List <SitemapUrl> GetUrls(int portalId, PortalSettings ps, string version)
        {
            var ctl = new DNNArticleController();

            var lst = ctl.GetTopArticlesBySQL(portalId, "", "", "publishdate desc", 5000,
                                              DisplayType.ActivedOnly, ApprovedDisplayType.ApprovedOnly, -1,
                                              FeaturedDisplayType.All, -1, true, -1, Null.NullDate, Null.NullDate);
            var urls = new List <SitemapUrl>();

            foreach (var dnnArticleInfo in lst)
            {
                var blogUrl = GetBlogUrl(dnnArticleInfo);
                urls.Add(blogUrl);
            }

            return(urls);
        }
Beispiel #2
0
        private List <DNNArticleInfo> GetDNNList()
        {
            var    ctl     = new DNNArticleController();
            string modules = "";

            modules = !MultiModules?SelectedModule.ToString(CultureInfo.InvariantCulture) : SelectedModules;

            int displaynumber = 64000;
            //if (!string.IsNullOrEmpty(Convert.ToString(_settings[MySettings.RssDisplayNumber])))
            //{
            //    displaynumber = int.Parse(Convert.ToString(_settings[MySettings.RssDisplayNumber]));
            //}
            FeaturedDisplayType featured = FeaturedType(_settings);

            var condition = new SearchCondition();

            condition.SearchKey = "";
            condition.portalid  = _selectedPortalID;
            condition.modules   = modules;
            if (!string.IsNullOrEmpty(SelectedCategory))
            {
                condition.categories.Add(SelectedCategory);
            }

            condition.activeType   = DisplayType.All;
            condition.ApprovedType = ApprovedDisplayType.All;
            condition.recent       = -1;
            condition.featuredType = featured;
            //condition.CreatedByUserID = uid;
            condition.BeginDate = Null.NullDate;
            condition.EndDate   = Null.NullDate;

            // Return ctl.GetTopArticlesBySQL(SelectedPortalID, modules, SelectedCategory, "publishdate desc", displaynumber, DisplayType.ActivedOnly, ApprovedDisplayType.ApprovedOnly, -1, featured, uid, Me.CheckPermission, -1, Null.NullDate, Null.NullDate)
            // return ctl.GetPageArticlesBySQL(condition, "publishdate desc", -1, uid, CheckPermission, 0, displaynumber);

            if (DataCache.GetCache("DNNARSS-" + SelectedModule + "_" + SelectedCategory) != null)
            {
                return((List <DNNArticleInfo>)DataCache.GetCache("DNNARSS-" + SelectedModule + "_" + SelectedCategory));
            }

            var lst = ctl.GetPageArticlesBySQL(condition, "publishdate desc", -1, -1, true, 0, displaynumber);

            //DataCache.SetCache("DNNARSS-" + SelectedModule + "_" + SelectedCategory, lst, TimeSpan.FromDays(1));
            return(lst);
        }
Beispiel #3
0
        public override List <UrlRule> GetRules(int portalId)
        {
            var rules = new List <UrlRule>();

            var articleController = new DNNArticleController();
            var ctl    = new ArticleAssignedCategoriesController();
            var ctlrel = new RelatedArticleController();


            try //sometimes a error occurs. we need to know about it.  //todo log the error
            {
                ArrayList modulesByDefinition;

                if (!Debugger.IsAttached)
                {
                    var catlist = new List <string>();
                    var modlist = new List <int>();

                    //CategoryArticleList modules
                    modulesByDefinition = GetModulesByDefinition(portalId, "CategoryArticleList");
                    foreach (ModuleInfo module in modulesByDefinition.OfType <ModuleInfo>())
                    {
                        if (module.PortalID == portalId && !modlist.Contains(module.ModuleID))
                        {
                            var categories = GetCategories(module);
                            foreach (CategoryInfo category in categories)
                            {
                                var catname = category.ItemID.ToString(CultureInfo.InvariantCulture) + "/" + module.ModuleID.ToString(CultureInfo.InvariantCulture); // + "/" + FullCategoryTitleAsPath(category, module.ModuleID);
                                if (!catlist.Contains(catname))
                                {
                                    AddRule(rules, GetCategoryRule(category, module, rules));
                                    catlist.Add(catname);
                                }
                            }
                            modlist.Add(module.ModuleID);
                        }
                    }
                }

                //Gather information of DNNArticleSearch List modules and exclude them from processing
                //because the display all article
                List <int> lstSeachtModules = new List <int>();
                modulesByDefinition = GetModulesByDefinition(portalId, "DNNArticleSearch");
                foreach (ModuleInfo module in modulesByDefinition.OfType <ModuleInfo>())
                {
                    if (ModuleSetting("ShowInDNNArticleList", module, false) == true)
                    {
                        lstSeachtModules.Add(ModuleSetting("DNNArticleListTab", module, -1));
                    }
                }


                List <string> urlTemplates = LoadConfig(portalId);

                // DNNA LIST
                // For each DNNA list, load all articles in the defined view
                modulesByDefinition = GetModulesByDefinition(portalId, "DNNArticleList");
                var listModules = modulesByDefinition.OfType <ModuleInfo>();
                foreach (ModuleInfo listModule in listModules)
                {
                    if (lstSeachtModules.Contains(listModule.TabID))
                    {
                        continue;
                    }
                    var repos           = new ArticleListRepository();
                    var viewmoduleTabid = ModuleSetting("ViewTab", listModule, -1);
                    if (viewmoduleTabid == -1)
                    {
                        //DnnLog.Error(string.Format("DNNArticle module with id [{0}] ", listModule.ModuleID));
                        //DnnLog.Error(string.Format("on Portal [{0}]", portalId));
                        //DnnLog.Error(string.Format("tab [{0}] ", listModule.TabID));
                        //DnnLog.Error(string.Format(" with name [{0}] has no View Module defined", listModule.ContentTitle));
                        DnnLog.Error(string.Format("DNNArticle module with id [{0}] on Portal [{3}], tab [{1}] with name [{2}] has no View Module defined", listModule.ModuleID, listModule.TabID, listModule.ContentTitle, portalId));
                    }
                    else
                    {
                        List <DNNArticleInfo> lst = repos.GetArticles(listModule, portalId);
                        foreach (var article in lst)
                        {
                            AddRule(rules, GetArticleRule(article, listModule, urlTemplates, rules));
                            foreach (CategoryInfo category in ctl.GetArticleCategoriesByArticleID(article.ItemId))
                            {
                                AddRule(rules, GetCategoryLinkRule(article, category, listModule, rules));
                            }

                            List <DNNArticleInfo> relatedArticles = ctlrel.GetRelatedDNNArticles(article.ItemId);
                            foreach (var relarticle in relatedArticles)
                            {
                                AddRule(rules, GetArticleRule(relarticle, listModule, urlTemplates, rules));

                                List <DNNArticleInfo> relatedArticles2 = ctlrel.GetRelatedDNNArticles(relarticle.ItemId);
                                foreach (var relarticle2 in relatedArticles2)
                                {
                                    AddRule(rules, GetArticleRule(relarticle2, listModule, urlTemplates, rules));
                                }
                            }
                        }
                    }
                }
                // DNNA DYNAMIC LIST


                //Not all articles are accessible via DNNAlist modules or via related articles. Some are maybe just used in html modules.
                //So we will fetch them all and see if we missed some. Those will we displayed in a default viewModule
                modulesByDefinition = GetModulesByDefinition(portalId, "DNNArticle");
                foreach (ModuleInfo sourceModule in modulesByDefinition.OfType <ModuleInfo>())
                {
                    // Analyse top 60000 articles
                    List <DNNArticleInfo> articles = articleController.GetTopArticlesBySQL(portalId, sourceModule.ModuleID.ToString(CultureInfo.InvariantCulture), "", "publishdate desc", 60000, DisplayType.All, ApprovedDisplayType.All, -1, FeaturedDisplayType.All, -1, false, -1, Null.NullDate, Null.NullDate);
                    foreach (DNNArticleInfo article in articles)
                    {
                        var param = "ArticleId=" + article.ItemId;
                        var found = rules.Any(rule => (rule.Parameters == param));
                        if (!found)
                        {
                            AddRule(rules, GetArticleRule(article, sourceModule, urlTemplates, rules));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                var a = ex.Message;
                DnnLog.Error(string.Format("Error HolonCom.DNNArticleURLProvider: Portal [{0}] failed with error [{1}]. Stacktrace: [{2}] ", portalId, ex.Message, ex.StackTrace));
            }
            return(rules);
        }