Move the thread matching from the blog to a more generic place.
[citadel.git] / webcit / sitemap.c
index cab60d43ec01307ceef379db619a34fe0a22c485..20dace9577e0fdfd7d21c4a310b90df3e0a1b151 100644 (file)
@@ -1,21 +1,15 @@
 /*
  * XML sitemap generator
  *
- * Copyright (c) 2010-2011 by the citadel.org team
+ * Copyright (c) 2010-2012 by the citadel.org team
  *
  * This program is open source software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
+ * it under the terms of the GNU General Public License, version 3.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
 #include "webcit.h"
@@ -61,6 +55,8 @@ void sitemap_do_blog(void) {
        int i;
        SharedMessageStatus Stat;
        message_summary *Msg = NULL;
+       StrBuf *Buf = NewStrBuf();
+       StrBuf *FoundCharset = NewStrBuf();
 
        memset(&Stat, 0, sizeof Stat);
        Stat.maxload = INT_MAX;
@@ -72,16 +68,18 @@ void sitemap_do_blog(void) {
        for (i=0; i<num_msgs; ++i) {
                Msg = GetMessagePtrAt(i, WCC->summ);
                if (Msg != NULL) {
-                       struct bltr bltr = blogview_learn_thread_references(Msg->msgnum);
+                       ReadOneMessageSummary(Msg, FoundCharset, Buf);
                        /* Show only top level posts, not comments */
-                       if ((bltr.id != 0) && (bltr.refs == 0)) {
-                               WC->bptlid = bltr.id;
+                       if ((Msg->reply_inreplyto_hash != 0) && (Msg->reply_references_hash == 0)) {
+                               WCC->bptlid = Msg->reply_inreplyto_hash;
                                wc_printf("<url><loc>%s", ChrPtr(site_prefix));
                                tmplput_blog_permalink(NULL, NULL);
                                wc_printf("</loc></url>\r\n");
                        }
                }
        }
+       FreeStrBuf(&Buf);
+       FreeStrBuf(&FoundCharset);
 }
 
 
@@ -177,24 +175,27 @@ void sitemap(void) {
 
        while (roomlist != NULL)
        {
+               struct sitemap_room_list *ptr;
+
                gotoroom(roomlist->roomname);
 
                /* Output the messages in this room only if it's a room type we can make sense of */
                switch(roomlist->defview) {
-                       case VIEW_BBS:
-                               sitemap_do_bbs();
-                               break;
-                       case VIEW_WIKI:
-                               sitemap_do_wiki();
-                               break;
-                       case VIEW_BLOG:
-                               sitemap_do_blog();
-                               break;
-                       default:
-                               break;
+               case VIEW_BBS:
+                       sitemap_do_bbs();
+                       break;
+               case VIEW_WIKI:
+               case VIEW_WIKIMD:
+                       sitemap_do_wiki();
+                       break;
+               case VIEW_BLOG:
+                       sitemap_do_blog();
+                       break;
+               default:
+                       break;
                }
 
-               struct sitemap_room_list *ptr = roomlist;
+               ptr = roomlist;
                roomlist = roomlist->next;
                FreeStrBuf(&ptr->roomname);
                free(ptr);