version 0.3.33
[fms.git] / src / threadbuilder.cpp
index 7df5a54..5e6b1ea 100644 (file)
@@ -20,7 +20,7 @@ const bool ThreadBuilder::Build(const long messageid, const long boardid, const
        mt.Load(messageid,boardid,bydate);\r
        m_threadmessages=mt.GetNodes();\r
 \r
-       //m_db->Execute("BEGIN;");\r
+       m_db->Execute("BEGIN;");\r
 \r
        // find threadid of this mesage if it already exists in a thread\r
        SQLite3DB::Statement st=m_db->Prepare("SELECT tblThread.ThreadID FROM tblThread INNER JOIN tblThreadPost ON tblThread.ThreadID=tblThreadPost.ThreadID WHERE tblThread.BoardID=? AND tblThreadPost.MessageID=?;");\r
@@ -95,6 +95,7 @@ const bool ThreadBuilder::Build(const long messageid, const long boardid, const
                        st.Reset();\r
 \r
                }\r
+               st.Finalize();\r
 \r
                // thread doesn't exist - create it\r
                if(threadid==-1)\r
@@ -137,26 +138,15 @@ const bool ThreadBuilder::Build(const long messageid, const long boardid, const
                        logmessage+="update bind fmessageid=" + temp1 + " lmessageid=" + temp2 + " threadid=" + temp3 + " | ";\r
                }\r
 \r
-               SQLite3DB::Statement st3=m_db->Prepare("DELETE FROM tblThreadPost WHERE ThreadID=?;");\r
-               st3.Bind(0,threadid);\r
-               st3.Step();\r
-\r
-               if(ll=="8")\r
-               {\r
-                       std::string temp1("");\r
-                       StringFunctions::Convert(threadid,temp1);\r
-\r
-                       logmessage+="delete bind threadid=" + temp1 + " | ";\r
-               }\r
-\r
-               SQLite3DB::Statement deleteotherst=m_db->Prepare("DELETE FROM tblThread WHERE ThreadID IN (SELECT tblThread.ThreadID FROM tblThreadPost INNER JOIN tblThread ON tblThreadPost.ThreadID=tblThread.ThreadID WHERE tblThread.BoardID=? AND tblThreadPost.MessageID=?);");\r
+               SQLite3DB::Statement deleteotherst=m_db->Prepare("DELETE FROM tblThread WHERE ThreadID IN (SELECT tblThread.ThreadID FROM tblThreadPost INNER JOIN tblThread ON tblThreadPost.ThreadID=tblThread.ThreadID WHERE tblThread.ThreadID<>? AND tblThread.BoardID=? AND tblThreadPost.MessageID=?);");\r
 \r
                count=0;\r
-               SQLite3DB::Statement st4=m_db->Prepare("INSERT INTO tblThreadPost(ThreadID,MessageID,PostOrder) VALUES(?,?,?);");\r
+               SQLite3DB::Statement st4=m_db->Prepare("INSERT OR REPLACE INTO tblThreadPost(ThreadID,MessageID,PostOrder) VALUES(?,?,?);");\r
                for(std::vector<MessageThread::threadnode>::const_iterator i=m_threadmessages.begin(); i!=m_threadmessages.end(); i++, count++)\r
                {\r
-                       deleteotherst.Bind(0,boardid);\r
-                       deleteotherst.Bind(1,(*i).m_messageid);\r
+                       deleteotherst.Bind(0,threadid);\r
+                       deleteotherst.Bind(1,boardid);\r
+                       deleteotherst.Bind(2,(*i).m_messageid);\r
                        deleteotherst.Step();\r
                        deleteotherst.Reset();\r
 \r
@@ -209,7 +199,7 @@ const bool ThreadBuilder::Build(const long messageid, const long boardid, const
 \r
        st.Finalize();\r
 \r
-       //m_db->Execute("COMMIT;");\r
+       m_db->Execute("COMMIT;");\r
 \r
        if(ll=="8")\r
        {\r