/// <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)
        {
            TabController objTabs = new TabController();
            SitemapUrl pageUrl = null;
            List<SitemapUrl> urls = new List<SitemapUrl>();

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

            this.ps = ps;

            foreach (TabInfo objTab in objTabs.GetTabsByPortal(portalId).Values)
            {

                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))
                {
                    if (includeHiddenPages | objTab.IsVisible)
                    {
                        foreach (string languageCode in CommonLibrary.Services.Localization.Localization.GetLocales(portalId).Keys)
                        {
                            pageUrl = GetPageUrl(objTab, languageCode);
                            urls.Add(pageUrl);
                        }
                    }
                }
            }

            return urls;
        }
 private void ClearPortalCacheInternal(int portalId, bool cascade, bool clearRuntime)
 {
     RemoveFormattedCacheKey(DataCache.PortalSettingsCacheKey, clearRuntime, portalId);
     Dictionary<string, Locale> locales = CommonLibrary.Services.Localization.Localization.GetLocales(portalId);
     if (locales.Count == 0)
     {
         //At least attempt to remove default locale
         string defaultLocale = PortalController.GetPortalDefaultLanguage(portalId);
         RemoveCacheKey(String.Format(DataCache.PortalCacheKey, portalId.ToString() + "-" + defaultLocale), clearRuntime);
     }
     else
     {
         foreach (Locale portalLocale in Localization.Localization.GetLocales(portalId).Values)
         {
             RemoveCacheKey(String.Format(DataCache.PortalCacheKey, portalId.ToString() + "-" + portalLocale.Code), clearRuntime);
         }
     }
     if (cascade)
     {
         TabController objTabs = new TabController();
         foreach (KeyValuePair<int, TabInfo> tabPair in objTabs.GetTabsByPortal(portalId))
         {
             ClearModuleCacheInternal(tabPair.Value.TabID, clearRuntime);
         }
         ModuleController moduleController = new ModuleController();
         foreach (ModuleInfo moduleInfo in moduleController.GetModules(portalId))
         {
             RemoveCacheKey("GetModuleSettings" + moduleInfo.ModuleID.ToString(), clearRuntime);
         }
     }
     ClearFolderCacheInternal(portalId, clearRuntime);
     ClearCacheKeysByPortalInternal(portalId, clearRuntime);
     ClearDesktopModuleCacheInternal(portalId, clearRuntime);
     ClearTabCacheInternal(portalId, clearRuntime);
 }
 private void ClearModulePermissionsCachesByPortalInternal(int portalId, bool clearRuntime)
 {
     TabController objTabs = new TabController();
     foreach (KeyValuePair<int, CommonLibrary.Entities.Tabs.TabInfo> tabPair in objTabs.GetTabsByPortal(portalId))
     {
         RemoveFormattedCacheKey(DataCache.ModulePermissionCacheKey, clearRuntime, tabPair.Value.TabID);
     }
 }
 public void UpdateModuleOrder(int TabId, int ModuleId, int ModuleOrder, string PaneName)
 {
     ModuleInfo objModule = GetModule(ModuleId, TabId, false);
     if (objModule != null)
     {
         if (ModuleOrder == -1)
         {
             IDataReader dr = null;
             try
             {
                 dr = dataProvider.GetTabModuleOrder(TabId, PaneName);
                 while (dr.Read())
                 {
                     ModuleOrder = Convert.ToInt32(dr["ModuleOrder"]);
                 }
             }
             catch (Exception ex)
             {
                 Exceptions.LogException(ex);
             }
             finally
             {
                 CBO.CloseDataReader(dr, true);
             }
             ModuleOrder += 2;
         }
         dataProvider.UpdateModuleOrder(TabId, ModuleId, ModuleOrder, PaneName);
         if (objModule.AllTabs == false)
         {
             ClearCache(TabId);
         }
         else
         {
             TabController objTabs = new TabController();
             foreach (KeyValuePair<int, TabInfo> tabPair in objTabs.GetTabsByPortal(objModule.PortalID))
             {
                 TabInfo objTab = tabPair.Value;
                 ClearCache(objTab.TabID);
             }
         }
     }
 }
 public void UpdateModule(ModuleInfo objModule)
 {
     //Update ContentItem If neccessary
     if (objModule.ContentItemId == Null.NullInteger && objModule.ModuleID != Null.NullInteger)
     {
         CreateContentItem(objModule);
     }
     dataProvider.UpdateModule(objModule.ModuleID, objModule.ContentItemId, objModule.ModuleTitle, objModule.AllTabs, objModule.Header, objModule.Footer, objModule.StartDate, objModule.EndDate, objModule.InheritViewPermissions, objModule.IsDeleted, UserController.GetCurrentUserInfo().UserID);
     //Update Tags
     ITermController termController = CommonLibrary.Entities.Content.Common.Util.GetTermController();
     termController.RemoveTermsFromContent(objModule);
     foreach (Term _Term in objModule.Terms)
     {
         termController.AddTermToContent(_Term, objModule);
     }
     Services.Log.EventLog.EventLogController objEventLog = new Services.Log.EventLog.EventLogController();
     objEventLog.AddLog(objModule, PortalController.GetCurrentPortalSettings(), UserController.GetCurrentUserInfo().UserID, "", Services.Log.EventLog.EventLogController.EventLogType.MODULE_UPDATED);
     ModulePermissionController.SaveModulePermissions(objModule);
     UpdateModuleSettings(objModule);
     if (!Null.IsNull(objModule.TabID))
     {
         dataProvider.UpdateTabModule(objModule.TabID, objModule.ModuleID, objModule.ModuleOrder, objModule.PaneName, objModule.CacheTime, objModule.CacheMethod, objModule.Alignment, objModule.Color, objModule.Border, objModule.IconFile,
         (int)objModule.Visibility, objModule.ContainerSrc, objModule.DisplayTitle, objModule.DisplayPrint, objModule.DisplaySyndicate, objModule.IsWebSlice, objModule.WebSliceTitle, objModule.WebSliceExpiryDate, objModule.WebSliceTTL, UserController.GetCurrentUserInfo().UserID);
         objEventLog.AddLog(objModule, PortalController.GetCurrentPortalSettings(), UserController.GetCurrentUserInfo().UserID, "", CommonLibrary.Services.Log.EventLog.EventLogController.EventLogType.TABMODULE_UPDATED);
         UpdateModuleOrder(objModule.TabID, objModule.ModuleID, objModule.ModuleOrder, objModule.PaneName);
         if (PortalSettings.Current != null)
         {
             if (objModule.IsDefaultModule)
             {
                 if (objModule.ModuleID != PortalSettings.Current.DefaultModuleId)
                 {
                     PortalController.UpdatePortalSetting(objModule.PortalID, "defaultmoduleid", objModule.ModuleID.ToString());
                 }
                 if (objModule.TabID != PortalSettings.Current.DefaultTabId)
                 {
                     PortalController.UpdatePortalSetting(objModule.PortalID, "defaulttabid", objModule.TabID.ToString());
                 }
             }
             else
             {
                 if (objModule.ModuleID == PortalSettings.Current.DefaultModuleId && objModule.TabID == PortalSettings.Current.DefaultTabId)
                 {
                     PortalController.DeletePortalSetting(objModule.PortalID, "defaultmoduleid");
                     PortalController.DeletePortalSetting(objModule.PortalID, "defaulttabid");
                 }
             }
         }
         if (objModule.AllModules)
         {
             TabController objTabs = new TabController();
             foreach (KeyValuePair<int, TabInfo> tabPair in objTabs.GetTabsByPortal(objModule.PortalID))
             {
                 TabInfo objTab = tabPair.Value;
                 foreach (KeyValuePair<int, ModuleInfo> modulePair in GetTabModules(objTab.TabID))
                 {
                     ModuleInfo objTargetModule = modulePair.Value;
                     dataProvider.UpdateTabModule(objTargetModule.TabID, objTargetModule.ModuleID, objTargetModule.ModuleOrder, objTargetModule.PaneName, objTargetModule.CacheTime, objModule.CacheMethod, objModule.Alignment, objModule.Color, objModule.Border, objModule.IconFile,
                     (int)objModule.Visibility, objModule.ContainerSrc, objModule.DisplayTitle, objModule.DisplayPrint, objModule.DisplaySyndicate, objModule.IsWebSlice, objModule.WebSliceTitle, objModule.WebSliceExpiryDate, objModule.WebSliceTTL, UserController.GetCurrentUserInfo().UserID);
                 }
             }
         }
     }
     foreach (ModuleInfo tabModule in GetModuleTabs(objModule.ModuleID))
     {
         ClearCache(tabModule.TabID);
     }
 }
 public static void RestoreTab(TabInfo objTab, PortalSettings PortalSettings, int UserId)
 {
     Services.Log.EventLog.EventLogController objEventLog = new Services.Log.EventLog.EventLogController();
     TabController objController = new TabController();
     objTab.IsDeleted = false;
     objController.UpdateTab(objTab);
     List<TabInfo> siblingTabs = objController.GetTabsByPortal(objTab.PortalID).WithParentId(objTab.ParentId);
     int siblingCount = siblingTabs.Count;
     objTab.TabOrder = 2 * siblingTabs.Count + 1;
     objController.UpdateTabOrder(objTab, false);
     objEventLog.AddLog(objTab, PortalSettings, UserId, "", Services.Log.EventLog.EventLogController.EventLogType.TAB_RESTORED);
     ModuleController objmodules = new ModuleController();
     ArrayList arrMods = objmodules.GetAllTabsModules(objTab.PortalID, true);
     foreach (ModuleInfo objModule in arrMods)
     {
         objmodules.CopyModule(objModule.ModuleID, objModule.TabID, objTab.TabID, "", true);
     }
     objController.ClearCache(objTab.PortalID);
 }
 public static bool DeleteTab(int tabId, PortalSettings PortalSettings, int UserId)
 {
     bool bDeleted = true;
     TabController objController = new TabController();
     TabInfo objTab = objController.GetTab(tabId, PortalSettings.PortalId, false);
     if (objTab != null)
     {
         List<TabInfo> siblingTabs = objController.GetTabsByPortal(objTab.PortalID).WithParentId(objTab.ParentId);
         int siblingCount = siblingTabs.Count;
         objController.UpdateTabOrder(siblingTabs, 2);
         int tabIndex = objController.GetIndexOfTab(objTab, siblingTabs);
         bDeleted = DeleteTab(objTab, PortalSettings, UserId);
         objTab.TabOrder = 0;
         objController.UpdateTabOrder(objTab, false);
         objController.UpdateTabOrder(siblingTabs, tabIndex + 1, siblingCount - 1, -2);
     }
     else
     {
         bDeleted = false;
     }
     return bDeleted;
 }
 public void PopulateBreadCrumbs(int portalID, ref ArrayList breadCrumbs, int tabID)
 {
     TabInfo objTab = null;
     TabController objTabController = new TabController();
     TabCollection portalTabs = objTabController.GetTabsByPortal(portalID);
     TabCollection hostTabs = objTabController.GetTabsByPortal(Null.NullInteger);
     bool blnFound = portalTabs.TryGetValue(tabID, out objTab);
     if (!blnFound)
     {
         blnFound = hostTabs.TryGetValue(tabID, out objTab);
     }
     if (blnFound)
     {
         breadCrumbs.Insert(0, objTab.Clone());
         if (!Null.IsNull(objTab.ParentId))
         {
             PopulateBreadCrumbs(portalID, ref breadCrumbs, objTab.ParentId);
         }
     }
 }
 private bool VerifyPortalTab(int PortalId, int TabId)
 {
     TabInfo objTab = null;
     TabInfo objSplashTab = null;
     TabInfo objHomeTab = null;
     bool isVerified = false;
     TabController objTabController = new TabController();
     TabCollection portalTabs = objTabController.GetTabsByPortal(PortalId);
     TabCollection hostTabs = objTabController.GetTabsByPortal(Null.NullInteger);
     if (TabId != Null.NullInteger)
     {
         if (portalTabs.TryGetValue(TabId, out objTab))
         {
             if (!objTab.IsDeleted)
             {
                 this.ActiveTab = objTab.Clone();
                 isVerified = true;
             }
         }
     }
     if (!isVerified && TabId != Null.NullInteger)
     {
         if (hostTabs.TryGetValue(TabId, out objTab))
         {
             if (!objTab.IsDeleted)
             {
                 this.ActiveTab = objTab.Clone();
                 isVerified = true;
             }
         }
     }
     if (!isVerified && this.SplashTabId > 0)
     {
         objSplashTab = objTabController.GetTab(this.SplashTabId, PortalId, false);
         this.ActiveTab = objSplashTab.Clone();
         isVerified = true;
     }
     if (!isVerified && this.HomeTabId > 0)
     {
         objHomeTab = objTabController.GetTab(this.HomeTabId, PortalId, false);
         this.ActiveTab = objHomeTab.Clone();
         isVerified = true;
     }
     if (!isVerified)
     {
         foreach (TabInfo tab in portalTabs.AsList())
         {
             if (!tab.IsDeleted && tab.IsVisible)
             {
                 this.ActiveTab = tab.Clone();
                 isVerified = true;
                 break;
             }
         }
     }
     if (Null.IsNull(this.ActiveTab.StartDate))
     {
         this.ActiveTab.StartDate = System.DateTime.MinValue;
     }
     if (Null.IsNull(this.ActiveTab.EndDate))
     {
         this.ActiveTab.EndDate = System.DateTime.MaxValue;
     }
     return isVerified;
 }
 private void GetBreadCrumbsRecursively(ref ArrayList objBreadCrumbs, int intTabId)
 {
     TabInfo objTab = null;
     TabController objTabController = new TabController();
     TabCollection portalTabs = objTabController.GetTabsByPortal(PortalId);
     TabCollection hostTabs = objTabController.GetTabsByPortal(Null.NullInteger);
     bool blnFound = portalTabs.TryGetValue(intTabId, out objTab);
     if (!blnFound)
     {
         blnFound = hostTabs.TryGetValue(intTabId, out objTab);
     }
     if (blnFound)
     {
         objBreadCrumbs.Insert(0, objTab.Clone());
         if (!Null.IsNull(objTab.ParentId))
         {
             GetBreadCrumbsRecursively(ref objBreadCrumbs, objTab.ParentId);
         }
     }
 }
 private void ParseTabs(XmlNode nodeTabs, int PortalId, bool IsAdminTemplate, PortalTemplateModuleAction mergeTabs, bool IsNewPortal)
 {
     Hashtable hModules = new Hashtable();
     Hashtable hTabs = new Hashtable();
     string tabname;
     if (!IsNewPortal)
     {
         Hashtable hTabNames = new Hashtable();
         TabController objTabs = new TabController();
         foreach (KeyValuePair<int, TabInfo> tabPair in objTabs.GetTabsByPortal(PortalId))
         {
             TabInfo objTab = tabPair.Value;
             if (!objTab.IsDeleted)
             {
                 tabname = objTab.TabName;
                 if (!Null.IsNull(objTab.ParentId))
                 {
                     tabname = Convert.ToString(hTabNames[objTab.ParentId]) + "/" + objTab.TabName;
                 }
                 hTabNames.Add(objTab.TabID, tabname);
             }
         }
         foreach (int i in hTabNames.Keys)
         {
             if (hTabs[hTabNames[i]] == null)
             {
                 hTabs.Add(hTabNames[i], i);
             }
         }
         hTabNames = null;
     }
     foreach (XmlNode nodeTab in nodeTabs.SelectNodes("//tab"))
     {
         ParseTab(nodeTab, PortalId, IsAdminTemplate, mergeTabs, ref hModules, ref hTabs, IsNewPortal);
     }
     foreach (XmlNode nodeTab in nodeTabs.SelectNodes("//tab[url/@type = 'Tab']"))
     {
         int tabId = XmlUtils.GetNodeValueInt(nodeTab, "tabid", Null.NullInteger);
         string tabPath = XmlUtils.GetNodeValue(nodeTab, "url", Null.NullString);
         if (tabId > Null.NullInteger)
         {
             TabController controller = new TabController();
             TabInfo objTab = controller.GetTab(tabId, PortalId, false);
             objTab.Url = TabController.GetTabByTabPath(PortalId, tabPath).ToString();
             controller.UpdateTab(objTab);
         }
     }
     foreach (XmlNode nodeTab in nodeTabs.SelectNodes("//tab[url/@type = 'File']"))
     {
         int tabId = XmlUtils.GetNodeValueInt(nodeTab, "tabid", Null.NullInteger);
         string filePath = XmlUtils.GetNodeValue(nodeTab, "url", Null.NullString);
         if (tabId > Null.NullInteger)
         {
             TabController controller = new TabController();
             TabInfo objTab = controller.GetTab(tabId, PortalId, false);
             objTab.Url = "FileID=" + new FileController().ConvertFilePathToFileId(filePath, PortalId).ToString();
             controller.UpdateTab(objTab);
         }
     }
 }
 public void ParseTemplate(int PortalId, string TemplatePath, string TemplateFile, int AdministratorId, PortalTemplateModuleAction mergeTabs, bool IsNewPortal)
 {
     XmlDocument xmlPortal = new XmlDocument();
     XmlNode node;
     try
     {
         xmlPortal.Load(TemplatePath + TemplateFile);
     }
     catch
     {
     }
     node = xmlPortal.SelectSingleNode("//portal/settings");
     if (node != null && IsNewPortal)
     {
         ParsePortalSettings(node, PortalId);
     }
     node = xmlPortal.SelectSingleNode("//portal/rolegroups");
     if (node != null)
     {
         ParseRoleGroups(node.CreateNavigator(), PortalId, AdministratorId);
     }
     node = xmlPortal.SelectSingleNode("//portal/roles");
     if (node != null)
     {
         ParseRoles(node.CreateNavigator(), PortalId, AdministratorId);
     }
     node = xmlPortal.SelectSingleNode("//portal/portalDesktopModules");
     if (node != null)
     {
         ParsePortalDesktopModules(node.CreateNavigator(), PortalId);
     }
     node = xmlPortal.SelectSingleNode("//portal/folders");
     if (node != null)
     {
         ParseFolders(node, PortalId);
     }
     var objController = new FolderController();
     if (objController.GetFolder(PortalId, "", false) == null)
     {
         int folderid = objController.AddFolder(PortalId, "", (int)Services.FileSystem.FolderController.StorageLocationTypes.InsecureFileSystem, true, false);
         AddFolderPermissions(PortalId, folderid);
     }
     if (objController.GetFolder(PortalId, "Templates/", false) == null)
     {
         int folderid = objController.AddFolder(PortalId, "Templates/", (int)Services.FileSystem.FolderController.StorageLocationTypes.InsecureFileSystem, true, false);
         AddFolderPermissions(PortalId, folderid);
     }
     // force creation of templates folder if not present on template
     if (objController.GetFolder(PortalId, "Users/", false) == null)
     {
         int folderid = objController.AddFolder(PortalId, "Users/", (int)Services.FileSystem.FolderController.StorageLocationTypes.InsecureFileSystem, true, false);
         AddFolderPermissions(PortalId, folderid);
     }
     if (mergeTabs == PortalTemplateModuleAction.Replace)
     {
         var objTabs = new TabController();
         TabInfo objTab;
         foreach (KeyValuePair<int, TabInfo> tabPair in objTabs.GetTabsByPortal(PortalId))
         {
             objTab = tabPair.Value;
             objTab.TabName = objTab.TabName + "_old";
             objTab.TabPath = Common.Globals.GenerateTabPath(objTab.ParentId, objTab.TabName);
             objTab.IsDeleted = true;
             objTabs.UpdateTab(objTab);
             var objModules = new ModuleController();
             ModuleInfo objModule;
             foreach (KeyValuePair<int, ModuleInfo> modulePair in objModules.GetTabModules(objTab.TabID))
             {
                 objModule = modulePair.Value;
                 objModules.DeleteTabModule(objModule.TabID, objModule.ModuleID, false);
             }
         }
     }
     node = xmlPortal.SelectSingleNode("//portal/tabs");
     if (node != null)
     {
         string version = xmlPortal.DocumentElement.GetAttribute("version");
         if (version != "5.0")
         {
             var xmlAdmin = new XmlDocument();
             try
             {
                 xmlAdmin.Load(TemplatePath + "admin.template");
             }
             catch
             {
             }
             XmlNode adminNode = xmlAdmin.SelectSingleNode("//portal/tabs");
             foreach (XmlNode adminTabNode in adminNode.ChildNodes)
             {
                 node.AppendChild(xmlPortal.ImportNode(adminTabNode, true));
             }
         }
         ParseTabs(node, PortalId, false, mergeTabs, IsNewPortal);
     }
 }