コード例 #1
0
        private object GetUrlRuleConfigCallBack(CacheItemArgs cacheItemArgs)
        {
            int PortalId = (int)cacheItemArgs.ParamList[0];
            UrlRuleConfiguration config = UrlRuleConfiguration.GenerateConfig(PortalId);

            string[]      keys   = UrlRuleConfiguration.GetCacheKeys(PortalId);
            List <string> keyLst = new List <string>();

            foreach (string key in keys)
            {
                if (DataCache.GetCache(key) != null)
                {
                    keyLst.Add(CachingProvider.GetCacheKey(key));
                }
            }
            keys = keyLst.ToArray();

            int CacheTimeout = 20 * Convert.ToInt32(DotNetNuke.Entities.Host.Host.PerformanceSetting);

            cacheItemArgs.CacheTimeOut    = CacheTimeout;
            cacheItemArgs.CacheDependency = new DNNCacheDependency(null, keys);

            #if DEBUG
            cacheItemArgs.CacheCallback = new CacheItemRemovedCallback(this.RemovedCallBack);
            #endif

            return(config);
        }
コード例 #2
0
 private static IEnumerable <UrlRule> getRules(int PortalId)
 {
     /*
      * if (PortalId < 0) // host menu
      *  return new List<UrlRule>();
      * else
      */
     return(UrlRuleConfiguration.GetConfig(PortalId).Rules.Where(r => r.Action == UrlRuleAction.Rewrite));
 }
コード例 #3
0
ファイル: View.ascx.cs プロジェクト: robsiera/OpenUrlRewriter
        protected void gvPortals_RowDataBound(Object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                PortalInfo portal     = (PortalInfo)e.Row.DataItem;
                int        RulesCount = UrlRuleConfiguration.GetConfig(portal.PortalID).Rules.Count();
                e.Row.Cells[1].Text = RulesCount.ToString();

                /*
                 * int Memsize = 0;
                 * foreach (var rule in UrlRuleConfiguration.GetConfig(portal.PortalID).Rules) {
                 *  Memsize += sizeof(UrlRuleType);
                 *  if (rule.CultureCode != null)
                 *  Memsize += sizeof(char) * rule.CultureCode.Length;
                 *  Memsize += sizeof(int); // tabid
                 *  if (rule.Parameters != null)
                 *  Memsize += sizeof(char) * rule.Parameters.Length; // Parameters
                 *  Memsize += sizeof(Boolean); //RemoveTab
                 *  Memsize += sizeof(UrlRuleAction);
                 *  if (rule.Url != null)
                 *  Memsize += sizeof(char) * rule.Url.Length; // Url
                 *  if (rule.RedirectDestination != null)
                 *  Memsize += sizeof(char) * rule.RedirectDestination.Length; //
                 *  Memsize += sizeof(int); // RedirectionStatus
                 *
                 * }
                 */

#if DEBUG
                System.IO.MemoryStream stream       = new System.IO.MemoryStream();
                BinaryFormatter        objFormatter = new BinaryFormatter();
                objFormatter.Serialize(stream, UrlRuleConfiguration.GetConfig(portal.PortalID));
                long Memsize = stream.Length;



                e.Row.Cells[2].Text = Memsize / 1000 + " kb"; //(RulesCount * sizeof(UrlRule) / 1000) + "";
#endif
            }
        }
コード例 #4
0
 internal void ItemRemovedCallback(string key, object value, CacheItemRemovedReason removedReason)
 {
     try
     {
         if (Globals.Status == Globals.UpgradeStatus.None)
         {
             // track data removed from cache to synchonize UrlRule cache
             string[] CacheKeys = UrlRuleConfiguration.GetCacheKeys();
             if (CacheKeys != null)
             {
                 foreach (string CacheKey in CacheKeys)
                 {
                     if (key.Contains(CacheKey))
                     {
                         if (DotNetNuke.Entities.Portals.PortalSettings.Current != null)
                         {
                             int PortalId = DotNetNuke.Entities.Portals.PortalSettings.Current.PortalId;
                             Remove(GetCacheKey("UrlRuleConfig" + PortalId));
                             Logger.Trace("Clear cache " + key + " portal " + PortalId + " raison " + removedReason.ToString());
                         }
                         else
                         {
                             // Logger.Trace("Clear cache not executed " + key + " raison " + removedReason.ToString());
                         }
                     }
                 }
             }
             if (key.StartsWith("UrlRuleConfig"))
             {
                 Logger.Trace("cache " + key + "claired : " + removedReason.ToString());
             }
         }
     }
     catch (Exception exc)
     {
         //Swallow exception
         Logger.Error(exc);
     }
 }
コード例 #5
0
ファイル: View.ascx.cs プロジェクト: robsiera/OpenUrlRewriter
        private void ShowCache()
        {
            var Rules = UrlRuleConfiguration.GetConfig(PortalId).Rules;

            var stats = from r in Rules

                        group r by new { r.RuleTypeString, r.ActionString } into g
            orderby g.Key.RuleTypeString, g.Key.ActionString
                select new { Type = g.Key.RuleTypeString, Action = g.Key.ActionString, Count = g.Count() };

            gvCache.DataSource = stats;
            gvCache.DataBind();

            var clashes = from r in Rules /* .Where(r=> r.RuleType != UrlRuleType.Custom)*/

                          group r by new { r.RuleTypeString, r.CultureCode, r.TabId, r.Url } into g
            where g.Count() > 1
            select new { Type = g.Key.RuleTypeString, Culture = g.Key.CultureCode, g.Key.TabId, g.Key.Url, Count = g.Count() };

            //clashes = clashes.Where(c => c.Count > 1);

            gvClashes.DataSource = clashes;
            gvClashes.DataBind();
        }
コード例 #6
0
        /// <summary>
        ///   Includes page urls on the sitemap
        /// </summary>
        /// <remarks>
        ///   Pages that are included:
        ///   - are not deleted
        ///   - are not disabled
        ///   - are normal pages (not links,...)
        ///   - are visible (based on date and permissions)
        /// </remarks>
        public override List <SitemapUrl> GetUrls(int portalId, PortalSettings ps, string version)
        {
            var            objTabs = new TabController();
            OpenSitemapUrl pageUrl = null;
            var            urls    = new List <SitemapUrl>();

            useLevelBasedPagePriority = bool.Parse(PortalController.GetPortalSetting("SitemapLevelMode", portalId, "False"));
            minPagePriority           = float.Parse(PortalController.GetPortalSetting("SitemapMinPriority", portalId, "0.1"), CultureInfo.InvariantCulture);
            includeHiddenPages        = bool.Parse(PortalController.GetPortalSetting("SitemapIncludeHidden", portalId, "False"));

            PortalController portalController = new PortalController();
            PortalInfo       objPortal        = new PortalController().GetPortal(portalId);

            this.ps = ps;

            var Locales = ps.ContentLocalizationEnabled ?
                          LocaleController.Instance.GetPublishedLocales(ps.PortalId).Values :
                          LocaleController.Instance.GetLocales(ps.PortalId).Values;

            bool MultiLanguage = Locales.Count > 1;

            foreach (Locale loc in Locales)
            {
                foreach (TabInfo objTab in objTabs.GetTabsByPortal(portalId).Values)
                {
                    if (objTab.CultureCode == loc.Code || objTab.IsNeutralCulture)
                    {
                        if (MultiLanguage)
                        {
                            objPortal = new PortalController().GetPortal(portalId, loc.Code);
                        }
                        if (!objTab.IsDeleted && !objTab.DisableLink && objTab.TabType == TabType.Normal && (Null.IsNull(objTab.StartDate) || objTab.StartDate < DateTime.Now) &&
                            (Null.IsNull(objTab.EndDate) || objTab.EndDate > DateTime.Now) && IsTabPublic(objTab.TabPermissions) &&
                            objTab.TabID != objPortal.SearchTabId && objTab.TabID != objPortal.UserTabId && (objPortal.UserTabId == Null.NullInteger || objTab.ParentId != objPortal.UserTabId) && objTab.TabID != objPortal.LoginTabId && objTab.TabID != objPortal.RegisterTabId)
                        {
                            var allowIndex = true;
                            if ((!objTab.TabSettings.ContainsKey("AllowIndex") || !bool.TryParse(objTab.TabSettings["AllowIndex"].ToString(), out allowIndex) || allowIndex) &&
                                (includeHiddenPages || objTab.IsVisible))
                            {
                                // page url
                                pageUrl = GetPageUrl(objTab, MultiLanguage ? loc.Code : null);
                                pageUrl.Alternates.AddRange(GetAlternates(objTab.TabID));
                                urls.Add(pageUrl);

                                // modules urls
                                var rules = UrlRuleConfiguration.GetConfig(portalId).Rules;
                                foreach (var rule in rules.Where(r => r.RuleType == UrlRuleType.Module && r.Action == UrlRuleAction.Rewrite && r.TabId == objTab.TabID && r.InSitemap == true))
                                {
                                    if (rule.CultureCode == null || rule.CultureCode == loc.Code)
                                    {
                                        string[] pars = rule.Parameters.Split('&');
                                        pageUrl = GetPageUrl(objTab, MultiLanguage ? loc.Code : null, pars);
                                        // if module support ML
                                        //pageUrl.Alternates.AddRange(GetAlternates(objTab.TabID, pars));
                                        urls.Add(pageUrl);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(urls);
        }
コード例 #7
0
 private void ShowCache()
 {
     GridView1.DataSource = UrlRuleConfiguration.GetConfig(PortalId).Rules;
     GridView1.DataBind();
 }