public static List <URLEntity> AddURL(List <URLEntity> URLs, string Entity, int EntityID, string Language, string Slug, bool IsDefault, bool PageName) { URLEntity url = URLs.Where(u => u.Language == Language && u.Slug == Slug && u.EntityID == EntityID && u.Entity == Entity).FirstOrDefault(); if (IsDefault) { //There can only be one Default URL for each Language foreach (URLEntity u in URLs.Where(u => u.Language == Language)) { u.IsDefault = false; u.HasChanged = true; } } if (url != null) { url.IsDefault = IsDefault; url.HasChanged = true; } else { url = new URLEntity() { EntityID = EntityID, Entity = Entity, IsDefault = IsDefault, Language = Language, Slug = Slug, PageName = PageName }; URLs.Add(url); } return(URLs); }
public static string GetEntityURL(int ModuleID, int EntityID, string Entity, int?ActiveModuleID = null) { PortalSettings pS = PortalSettings.Current; if (pS == null && ModuleID > 0) { ModuleInfo minfo = ModuleController.Instance.GetModule(ModuleID, Null.NullInteger, false); if (minfo != null) { pS = new PortalSettings(minfo.PortalID); } } if (pS != null) { URLEntity u = GetDefaultURL(ModuleID, EntityID, Entity, GetCurrentLanguage(pS)); if (u != null) { return(GetFriendlyURL(ActiveModuleID == null ? ModuleID : ActiveModuleID.Value, pS, null, u)); } else { return(string.Empty); } } else { throw new Exception("PortalSettings.Current must be Non-Nullable to generate an entity url"); } }
public static void Add(URLEntity URL) { URL.CreatedOn = DateTime.Now; URL.UpdatedOn = DateTime.Now; URL.Insert(); Cache.Clear(); //DataCache.RemoveCache(Cache.Keys.URLEntity + URL.ModuleID.ToString() + "-" + URL.EntityID.ToString() + "-" + URL.Entity.ToString()); }
private static string Redirect(out int status, out string location, int PortalID, PortalSettings pS, int TabID, string result, URLEntity CurrentURL, string QueryParameters) { URLEntity RedirectURL = URLManager.GetDefaultURL(CurrentURL.ModuleID, CurrentURL.EntityID, CurrentURL.Entity, CurrentURL.Language); location = URLFactory.GetFriendlyURL(null, pS, RedirectURL.Slug, QueryParameters, RedirectURL.Language, RedirectURL.PageName); status = 301; return(result); }
public static string GetFriendlyURL(int?ModuleID, PortalSettings pS, string Slug, string QueryParameters, string Language, bool IncludePageName) { URLEntity u = new URLEntity() { Slug = Slug, Language = Language, PageName = IncludePageName }; return(GetFriendlyURL(ModuleID, pS, QueryParameters, u)); }
public static List <URLEntity> GetURLs(int ModuleID, int EntityID, string Entity) { List <URLEntity> URls = DataCache.GetCache <List <URLEntity> >(Cache.Keys.URLEntity + ModuleID.ToString() + "-" + EntityID.ToString() + "-" + Entity.ToString()); if (URls == null) { URls = URLEntity.Fetch("WHERE ModuleID=@0 AND EntityID=@1 AND Entity=@2", ModuleID, EntityID, Entity); DataCache.SetCache(Cache.Keys.URLEntity + ModuleID.ToString() + "-" + EntityID.ToString() + "-" + Entity.ToString(), URls, Cache.Keys.Cache_Time_Heavy); } return(URls); }
public static void DeleteUrls(int ModuleID, int EntityID, string Entity) { List <URLEntity> URls = URLEntity.Fetch("WHERE ModuleID=@0 AND EntityID=@1 AND Entity=@2", ModuleID, EntityID, Entity); foreach (URLEntity url in URls) { url.Delete(); } if (URls.Count > 0) { Cache.Clear(); } }
/// <summary> /// Returns the first matched slug in the Slugs Array /// </summary> /// <param name="Slugs"></param> /// <returns></returns> public static URLEntity GetURL(int ModuleID, string[] Slugs) { foreach (string s in Slugs) { URLEntity urlEntity = GetURL(ModuleID, s); if (urlEntity != null) { return(urlEntity); } } return(null); }
public static void InitDefaultURLs <T>(int ModuleID, List <T> Entities, string Language) { if (Entities.Count == 0) { return; } PortalSettings pS = PortalSettings.Current; if (pS == null) { throw new Exception("PortalSettings.Current must be Non-Nullable to generate an entity url"); } Sql sql = Sql.Builder.Append("WHERE ModuleID = @0 AND IsDefault=@1 AND (", ModuleID, true); foreach (IURLService e in Entities) { sql.Append("(EntityID=@0 AND Entity=@1) OR ", e.EntityID, e.Entity); } string s = sql.SQL.TrimEnd('O', 'R', ' ') + ")"; List <URLEntity> URLs = URLEntity.Fetch(s, sql.Arguments); List <URLEntity> DefaultURLs = new List <URLEntity>(); foreach (IURLService url in Entities) { URLEntity DefaultURL = null; if (!string.IsNullOrEmpty(Language)) //Looking for language specific url { DefaultURL = URLs.Where(u => u.EntityID == url.EntityID && u.Entity == url.Entity && u.Language == Language).OrderByDescending(u => u.Updatedby).FirstOrDefault(); } if (DefaultURL == null) //Language Specific URL Not Found { DefaultURL = URLs.Where(u => u.EntityID == url.EntityID && u.Entity == url.Entity && u.Language == null).OrderByDescending(u => u.Updatedby).FirstOrDefault(); } //if (DefaultURL == null) //Language Invariant URL Not Found // throw new Exception(LocalizationMananger.GetString(ResourceKeys.URL_Default_NotFound, LocalizationMananger.SharedResources, string.Format(ResourceKeys.URL_Default_NotFound_Message, url.Entity, url.EntityID))); if (DefaultURL != null) { url.PermLink = GetFriendlyURL(ModuleID, pS, DefaultURL.Slug, null, Language, DefaultURL.PageName); } } }
public static Dictionary <string, string> GetFriendlyURLs(PortalSettings pS, int ModuleID, string Language, Dictionary <string, int> Entities) { Dictionary <string, string> results = DataCache.GetCache <Dictionary <string, string> >(Cache.Keys.FriendlyUrls + "-" + pS.PortalId + "-" + ModuleID + "-" + Language + "-" + string.Join("-", Entities.Keys)); if (results == null) { results = new Dictionary <string, string>(); Sql sql = Sql.Builder.Append("WHERE ModuleID = @0 AND (", ModuleID); foreach (var e in Entities) { if (!string.IsNullOrEmpty(e.Key)) { sql.Append("(EntityID=@0 AND Entity=@1) OR ", e.Value, e.Key); } } string s = sql.SQL.TrimEnd('O', 'R', ' ') + ")"; List <URLEntity> URLs = URLEntity.Fetch(s, sql.Arguments); foreach (var e in Entities) { if (!string.IsNullOrEmpty(e.Key)) { URLEntity DefaultURL = null; if (!string.IsNullOrEmpty(Language)) //Looking for language specific url { DefaultURL = URLs.Where(u => u.IsDefault && u.Language == Language && u.Entity == e.Key && u.EntityID == e.Value).OrderByDescending(u => u.Updatedby).FirstOrDefault(); } if (DefaultURL == null) //Language Specific URL Not Found { DefaultURL = URLs.Where(u => u.IsDefault && u.Language == null && u.Entity == e.Key && u.EntityID == e.Value).OrderByDescending(u => u.Updatedby).FirstOrDefault(); } if (DefaultURL != null) { results.Add(e.Key, GetFriendlyURL(ModuleID, pS, DefaultURL.Slug, null, Language, true)); } } else { results.Add(e.Key, GetFriendlyURL(ModuleID, pS, string.Empty, null, null, true)); } } DataCache.SetCache(Cache.Keys.FriendlyUrls + "-" + pS.PortalId + "-" + ModuleID + "-" + Language + "-" + string.Join("-", Entities.Keys), results); } return(results); }
public static List <URLEntity> RemoveURL(List <URLEntity> URLs, string Language, string Slug) { URLEntity url = URLs.Where(u => u.Language == Language && u.Slug == Slug).FirstOrDefault(); if (url.IsDefault) { throw new Exception("Cannot remove default URL of this language."); } if (url != null) { url.HasChanged = true; url.HasDeleted = true; } return(URLs); }
public int Insert(URLEntity uRLEntity) { var id = -1; using (var connection = new SqlConnection(_connectionString)) { connection.Open(); var query = @$ "INSERT INTO dbo.URLs VALUES (N'{uRLEntity.Alias}',N'{uRLEntity.Url}') SELECT @@IDENTITY"; var command = new SqlCommand(query, connection); var reader = command.ExecuteReader(); while (reader.Read()) { id = (int)reader.GetDecimal(0); } } return(id); }
private void ProcessHTML(string URL) { Table = CloudConfiguration.GetTable(); WebRequest myWebRequest = WebRequest.Create(URL); WebResponse myWebResponse = myWebRequest.GetResponse(); // Returns a response from an Internet resource Stream streamResponse = myWebResponse.GetResponseStream(); // return the data stream from the internet and save it in the stream StreamReader reader = new StreamReader(streamResponse); // reads the data stream string content = reader.ReadToEnd(); // reads it to the end string title = GetTitle(content); URLEntity link = new URLEntity(URL, title, DateTime.Now); // Create the TableOperation object that inserts the customer entity. TableOperation insertOperation = TableOperation.Insert(link); // Execute the insert operation. Table.Execute(insertOperation); //Regex regexLink = new Regex("(?<=<a\\s*?href=(?:'|\"))[^'\"]*?(?=(?:'|\"))"); //Regex regexURL = new Regex("href\\s*=\\s*\"(?<url>.*?)\""); //foreach (Match match in regexLink.Matches(content)) //{ // string link = regexURL.Match(match.Value).Value; // if (CheckLinkDomain(link) && CheckLinkIsCorrectType(link) && CheckIfAllowed(link)) // { // CloudQueueMessage message = new CloudQueueMessage(link); // CrawlQueue.AddMessage(message); // } //} //Regex plzMatch = new Regex(""); //foreach (Match m in plzMatch.Matches(content)) //{ // string link = m.Value; //} streamResponse.Close(); reader.Close(); myWebResponse.Close(); }
public static URLEntity GetDefaultURL(int ModuleID, int EntityID, string Entity, string Language) { URLEntity DefaultURL = null; List <URLEntity> URLs = GetURLs(ModuleID, EntityID, Entity); if (!string.IsNullOrEmpty(Language)) //Looking for language specific url { DefaultURL = URLs.Where(u => u.IsDefault && u.Language == Language).OrderByDescending(u => u.Updatedby).FirstOrDefault(); } if (DefaultURL == null) //Language Specific URL Not Found { DefaultURL = URLs.Where(u => u.IsDefault && u.Language == null).OrderByDescending(u => u.Updatedby).FirstOrDefault(); } //if (DefaultURL == null) //Language Invariant URL Not Found // throw new Exception(LocalizationMananger.GetString(ResourceKeys.URL_Default_NotFound,LocalizationMananger.SharedResources,string.Format(ResourceKeys.URL_Default_NotFound_Message,Entity,EntityID))); return(DefaultURL); }
private static Dictionary <string, int> GetSlugIndex() { Dictionary <string, int> Index = DataCache.GetCache <Dictionary <string, int> >(Cache.Keys.SlugIndex); if (Index == null) { Index = URLEntity.Fetch("").ToList().ToDictionary(u => u.Slug, u => u.ModuleID); if (Index == null) { Index = new Dictionary <string, int>(); } ModuleController mc = new ModuleController(); //Generate TabID Index Dictionary <int, int> ModuleTabIndex = new Dictionary <int, int>(); foreach (int i in Index.Values.Distinct()) { ModuleInfo m = mc.GetModule(i, Null.NullInteger, false); if (m != null) { ModuleTabIndex.Add(m.ModuleID, m.TabID); } else { ModuleTabIndex.Add(i, -1); } } foreach (int ModuleId in ModuleTabIndex.Keys) //Swap ModuleIDs for TabIDs { Index.Where(i => i.Value == ModuleId).ToList().ForEach(i => Index[i.Key] = ModuleTabIndex[ModuleId]); } DataCache.SetCache(Cache.Keys.SlugIndex, Index); } return(Index); }
public static URLEntity GetURL(int ModuleID, string Slug) { if (Slug == null) { throw new Exception("Slug cannot be empty or null"); } //Handle multiple slugs or query parameters with null key string[] Slugs = Slug.Split(','); foreach (string s in Slugs) { URLEntity URL = DataCache.GetCache <URLEntity>(Cache.Keys.Slug + ModuleID.ToString() + "-" + s); if (URL == null) { if (ModuleID > 0) { URL = URLEntity.Fetch("WHERE ModuleID=@0 AND Slug=@1", ModuleID, s).SingleOrDefault(); } else { URL = URLEntity.Fetch("WHERE Slug=@0", s).SingleOrDefault(); } DataCache.SetCache(Cache.Keys.Slug + ModuleID.ToString() + "-" + s, URL, Cache.Keys.Cache_Time_Heavy); } if (URL != null) { return(URL); } } return(null); }
public static void Add(URLEntity URL) { URLFactory.Add(URL); }
//public static string GetFriendlyURL(int PortalID, int HomeTabID, int TabID, string portalAlias, string Slug, string QueryParameters, string Language, bool IncludePageName) //{ // string strLanguage = string.IsNullOrEmpty(Language) ? pS.DefaultLanguage : Language; // string URL = "~/Default.aspx"; // TabInfo tab; // if (IncludePageName) // tab = new TabController().GetTab(TabID, PortalID); // else // tab = new TabController().GetTab(HomeTabID, PortalID); // URL += "&TabId=" + TabID; // if (!string.IsNullOrEmpty(Language)) // URL += "&language=" + Language; // URL += QueryParameters; // URL = URL.ReplaceFirst("&", "?"); // return FriendlyUrlProvider.Instance().FriendlyUrl(tab, URL, Slug, portalAlias); //} private static string AppendQueryParameters(PortalSettings pS, int?TabID, string URL, string QueryParameters, string Language, URLEntity u) { if (QueryParameters == null) { QueryParameters = string.Empty; } if (TabID != pS.HomeTabId) { URL += "&TabId=" + TabID.Value; if (LocaleController.Instance.GetLocales(pS.PortalId).Count() > 1) { URL += "&language=" + Language; } } //Apps that support same slug on multiple tabs //Handle homepage by including page name else if (TabID == pS.HomeTabId && u.IgnorePageName) { string PageName = string.Empty; GetPageName(ref PageName, -1, pS); if (!string.IsNullOrEmpty(PageName)) { URL += "&" + PageName; } } URL += QueryParameters; URL = URL.ReplaceFirst("&", "?"); return(URL); }
public static string GetFriendlyURL(int?ModuleID, PortalSettings pS, string QueryParameters, URLEntity u) { string strLanguage = string.IsNullOrEmpty(u.Language) ? URLManager.GetCurrentLanguage() : u.Language; string path = "~/Default.aspx"; if (!string.IsNullOrEmpty(strLanguage)) { pS.CultureCode = strLanguage; } else { pS.CultureCode = pS.DefaultLanguage; } TabInfo tab = null; if (u.PageName) { if (ModuleID.HasValue) { int?ModuleTabID = null; var Index = GetModuleTabIndex(); if (Index.ContainsKey(ModuleID.Value)) { ModuleTabID = Index[ModuleID.Value]; } else { ModuleInfo minfo = new ModuleController().GetModule(ModuleID.Value, Null.NullInteger, false); ModuleTabID = minfo.TabID; } if (ModuleTabID.HasValue) { tab = new TabController().GetTab(ModuleTabID.Value, pS.PortalId); } } else if (pS.HomeTabId != pS.ActiveTab.TabID) { tab = pS.ActiveTab; } } if (tab == null) { tab = new TabController().GetTab(pS.HomeTabId, pS.PortalId); } path = AppendQueryParameters(pS, tab.TabID, path, QueryParameters, strLanguage, u); if (pS != null && pS.PortalAlias != null) { return(FriendlyUrlProvider.Instance().FriendlyUrl(tab, path, u.Slug, pS as IPortalSettings)); } else { return(path.TrimStart('~', '/') + "&" + u.Slug); } }
public static string GetFriendlyURL(int ModuleID, PortalSettings pS, URLEntity urlEntity) { return(GetFriendlyURL(ModuleID, pS, urlEntity.Slug, null, urlEntity.Language, urlEntity.PageName)); }
public static List <URLEntity> GetUrlHistory(int ModuleID, int EntityID, string Entity) { return(URLEntity.Fetch("WHERE ModuleID=@0 AND EntityID=@1 AND Entity=@2", ModuleID, EntityID, Entity).ToList()); }
public override string TransformFriendlyUrlToQueryString(string[] urlParms, int tabId, int portalId, FriendlyUrlOptions options, string cultureCode, DotNetNuke.Entities.Portals.PortalAliasInfo portalAlias, ref List <string> messages, out int status, out string location) { status = 200; location = null; string result = string.Empty, Slug = string.Empty, PageName = string.Empty; PortalSettings pS = null; bool PageNameRedirect = false; urlParms = urlParms.Select(s => s.ToLower()).Distinct().ToArray(); List <string> urlParmsList = new List <string>(urlParms).ConvertAll(u => u.ToLower()); int SlugTabID = URLManager.GetSlugTabID(urlParms, ref Slug, tabId, PortalController.Instance.GetPortal(portalId)); if (SlugTabID != -1) //Slug Found { URLEntity CurrentURL = URLManager.GetURL(Slug); //Redirect if it's not the default URL if (CurrentURL != null && !CurrentURL.IsDefault) { InitPortalSettings(ref pS, tabId, portalAlias); return(Redirect(out status, out location, portalId, pS, SlugTabID, result, CurrentURL, null)); } if (pS == null) { pS = new PortalSettings(tabId, portalAlias); } //DNN 8580 //https://dnntracker.atlassian.net/browse/DNN-8580?page=com.googlecode.jira-suite-utilities%3Atransitions-summary-tabpanel ClearUrlParams(ref urlParmsList, ref PageName, Slug, SlugTabID, pS); //Tab not identified...need redirect if (tabId == -1) { InitPortalSettings(ref pS, tabId, portalAlias); if (CurrentURL.IgnorePageName) { return(string.Empty); } else { //Redirect based on Include PageName if we're not on homepage if (SlugTabID != pS.HomeTabId && CurrentURL.PageName && !urlParmsList.Contains(PageName) && !string.Join("/", urlParmsList).Contains(PageName)) { PageNameRedirect = true; } else if (!CurrentURL.PageName && (urlParmsList.Contains(PageName) || string.Join("/", urlParmsList).Contains(PageName))) { PageNameRedirect = true; } //Remove PageName foreach (var item in PageName.Split('/')) { urlParmsList.Remove(item); } //Setup Rewrite Path result = "?TabId=" + SlugTabID.ToString(); } } string remainder = base.CreateQueryStringFromParameters(urlParmsList.ToArray(), -1); string Prefix = urlParmsList.Count % 2 == 0 ? string.Empty : "="; if (PageNameRedirect) { InitPortalSettings(ref pS, tabId, portalAlias); return(Redirect(out status, out location, portalId, pS, SlugTabID, result, CurrentURL, remainder)); } //Rewrite URL to appropriate page if (result.StartsWith("?TabId=") && !string.IsNullOrEmpty(Slug)) { result += "&" + Slug + remainder; } else { result += Slug + remainder; } } return(result); }
public static bool IsUnique(string Slug) { return(URLEntity.Query("where Slug=@0", Slug).Count() == 0); }