All pastes #824142 Raw Edit

Stuff

public text v1 · immutable
·published 2007-12-19 20:39 UTC
rendered paste body
Index: src/services/Deki/DekiWiki-Site.cs
===================================================================
--- src/services/Deki/DekiWiki-Site.cs	(revision 6633)
+++ src/services/Deki/DekiWiki-Site.cs	(working copy)
@@ -134,6 +134,14 @@
             foreach(PageBE page in pagesById.Values) {
                 DekiContext.Current.Instance.LuceneIndexClient.QueueUpdate(page, false);
             }
+            PageDA.GetDescendantPages(PageBL.GetTemplatePage(), out pagesById, out childrenInfo);
+            foreach(PageBE page in pagesById.Values) {
+                DekiContext.Current.Instance.LuceneIndexClient.QueueUpdate(page, false);
+            }
+            PageDA.GetDescendantPages(PageBL.GetUserPage(), out pagesById, out childrenInfo);
+            foreach(PageBE page in pagesById.Values) {
+                DekiContext.Current.Instance.LuceneIndexClient.QueueUpdate(page, false);
+            }
             attachments[] attachments = AttachmentDA.GetAttachments(0, int.MaxValue);
             foreach(attachments att in attachments) {
                 DekiContext.Current.Instance.LuceneIndexClient.QueueUpdate(att, false);
Index: src/services/Deki/Logic/PageBL.cs
===================================================================
--- src/services/Deki/Logic/PageBL.cs	(revision 6633)
+++ src/services/Deki/Logic/PageBL.cs	(working copy)
@@ -176,6 +176,20 @@
         public static PageBE GetHomePage() {
             return PageDA.GetPageById(HomePageId);
         }
+        /// <summary>
+        /// Retrieves the template root page object
+        /// </summary>
+        /// <returns></returns>
+        public static PageBE GetTemplatePage() {
+            return PageDA.GetPageById(TemplatePageId);
+        }
+        /// <summary>
+        /// Retrieves the user root page object
+        /// </summary>
+        /// <returns></returns>
+        public static PageBE GetUserPage() {
+            return PageDA.GetPageById(UserPageId);
+        }
 
         //--- Properties ---
 
@@ -194,7 +208,31 @@
                 return homepageId;
             }
         }
+        public static uint TemplatePageId {
+            get {
+                uint templatepageId = DekiContext.Current.PerRequestCache.Get<uint>(TEMPLATEPAGEIDKEY, 0);
 
+                //Resolve templatepageId if not cached
+                if(templatepageId == 0) {
+                    templatepageId = (uint)DekiContext.Current.Instance.Catalog.NewQuery("SELECT page_id FROM pages WHERE page_parent=0 AND page_namespace=10").ReadAs<uint>();
+                    DekiContext.Current.PerRequestCache[HOMEPAGEIDKEY] = templatepageId;
+                }
+                return templatepageId;
+            }
+        }
+        public static uint UserPageId {
+            get {
+                uint userpageId = DekiContext.Current.PerRequestCache.Get<uint>(USERPAGEIDKEY, 0);
+
+                //Resolve userpageId if not cached
+                if(userpageId == 0) {
+                    userpageId = (uint)DekiContext.Current.Instance.Catalog.NewQuery("SELECT page_id FROM pages WHERE page_parent=0 AND page_namespace=2").ReadAs<uint>();
+                    DekiContext.Current.PerRequestCache[HOMEPAGEIDKEY] = userpageId;
+                }
+                return userpageId;
+            }
+        }
+
         public static PageBE EnsureParent(bool isRedirect, Title title) {
             PageBE parentPage = null;
             Title parentTitle = title.GetParent();