/// <summary>
        /// Read the custom redirects from the dynamic data store, and
        /// stores them in the CustomRedirect property
        /// </summary>
        protected void LoadCustomRedirects(int siteId)
        {
            DataStoreHandler dynamicHandler = new DataStoreHandler();

            _customRedirects = new CustomRedirectCollection();

            foreach (CustomRedirect redirect in dynamicHandler.GetCustomRedirects(false, siteId))
            {
                _customRedirects.Add(redirect);
            }
        }
Exemple #2
0
        /// <summary>
        /// Parses the xml file and reads all redirects.
        /// </summary>
        /// <returns>A collection of CustomRedirect objects</returns>
        public CustomRedirectCollection Load(int siteId)
        {
            // ReSharper disable InconsistentNaming
            const string URLPATH      = "/redirects/urls/url";
            const string NEWURL       = "new";
            const string OLDURL       = "old";
            const string SKIPWILDCARD = "onWildCardMatchSkipAppend";
            // ReSharper restore InconsistentNaming

            CustomRedirectCollection redirects = new CustomRedirectCollection();

            // Parse all url nodes
            XmlNodeList nodes = _customRedirectsXmlFile.SelectNodes(URLPATH);

            if (nodes != null)
            {
                foreach (XmlNode node in nodes)
                {
                    // Each url new url can have several old values
                    // we need to create a redirect object for each pair
                    XmlNode newNode = node.SelectSingleNode(NEWURL);

                    XmlNodeList oldNodes = node.SelectNodes(OLDURL);
                    if (oldNodes != null)
                    {
                        foreach (XmlNode oldNode in oldNodes)
                        {
                            bool skipWildCardAppend = false;
                            if (oldNode.Attributes != null)
                            {
                                XmlAttribute skipWildCardAttr = oldNode.Attributes[SKIPWILDCARD];
                                if (skipWildCardAttr != null)
                                {
                                    // If value parsing fails, it will be false by default. We do
                                    // not really care to check if it fails, as we cannot do anything
                                    // about it (throwing an exception is not a good idea here)
                                    bool.TryParse(skipWildCardAttr.Value, out skipWildCardAppend);
                                }
                            }

                            // Create new custom redirect nodes
                            if (newNode != null)
                            {
                                CustomRedirect redirect = new CustomRedirect(oldNode.InnerText, newNode.InnerText, skipWildCardAppend, siteId);
                                redirects.Add(redirect);
                            }
                        }
                    }
                }
            }

            return(redirects);
        }
        /// <summary>
        /// Save a collection of redirects, and call method to raise an event in order to clear cache on all servers.
        /// </summary>
        /// <param name="redirects"></param>
        public void SaveCustomRedirects(CustomRedirectCollection redirects)
        {
            DataStoreHandler dynamicHandler = new DataStoreHandler();
            var siteId = DataHandler.GetCurrentSiteId();

            foreach (CustomRedirect redirect in redirects)
            {
                if (redirect.SiteId <= 0)
                {
                    redirect.SiteId = siteId;
                }
                // Add redirect
                dynamicHandler.SaveCustomRedirect(redirect);
            }
            DataStoreEventHandlerHook.DataStoreUpdated();
        }