version 0.2.10
[fms.git] / src / freenet / siteinserter.cpp
index 76bfb95..9db9651 100644 (file)
@@ -192,7 +192,7 @@ std::string SiteInserter::GenerateTrustList(const std::string &htmltemplate, con
 \r
        date.SetToGMTime();\r
        date.Add(0,0,0,-20);\r
-       SQLite3DB::Statement st=m_db->Prepare("SELECT Name,PublicKey,tblIdentityTrust.LocalMessageTrust,tblIdentityTrust.LocalTrustListTrust,tblIdentity.IdentityID,tblIdentityTrust.MessageTrustComment,tblIdentityTrust.TrustListTrustComment FROM tblIdentity LEFT JOIN (SELECT IdentityID,LocalMessageTrust,LocalTrustListTrust,MessageTrustComment,TrustListTrustComment FROM tblIdentityTrust WHERE LocalIdentityID=?) AS 'tblIdentityTrust' ON tblIdentity.IdentityID=tblIdentityTrust.IdentityID WHERE PublicKey IS NOT NULL AND LastSeen IS NOT NULL AND LastSeen>=? ORDER BY Name COLLATE NOCASE;");\r
+       SQLite3DB::Statement st=m_db->Prepare("SELECT Name,PublicKey,tblIdentityTrust.LocalMessageTrust,tblIdentityTrust.LocalTrustListTrust,tblIdentity.IdentityID,tblIdentityTrust.MessageTrustComment,tblIdentityTrust.TrustListTrustComment,tblIdentity.FreesiteEdition FROM tblIdentity LEFT JOIN (SELECT IdentityID,LocalMessageTrust,LocalTrustListTrust,MessageTrustComment,TrustListTrustComment FROM tblIdentityTrust WHERE LocalIdentityID=?) AS 'tblIdentityTrust' ON tblIdentity.IdentityID=tblIdentityTrust.IdentityID WHERE PublicKey IS NOT NULL AND LastSeen IS NOT NULL AND LastSeen>=? ORDER BY Name COLLATE NOCASE;");\r
        st.Bind(0,localidentityid);\r
        st.Bind(1,date.Format("%Y-%m-%d %H:%M:%S"));\r
        st.Step();\r
@@ -212,6 +212,7 @@ std::string SiteInserter::GenerateTrustList(const std::string &htmltemplate, con
                std::string trustlisttrust="";\r
                std::string publickey="";\r
                std::string uskkey="";\r
+               std::string freesiteedition="";\r
 \r
                st.ResultText(0,idname);\r
                st.ResultText(1,publickey);\r
@@ -220,17 +221,28 @@ std::string SiteInserter::GenerateTrustList(const std::string &htmltemplate, con
                st.ResultText(4,thisid);\r
                st.ResultText(5,messagetrustcomment);\r
                st.ResultText(6,trustlisttrustcomment);\r
+               st.ResultText(7,freesiteedition);\r
 \r
-               if(publickey.find("SSK@")==0)\r
+               if(freesiteedition!="")\r
                {\r
-                       uskkey=publickey;\r
-                       uskkey.erase(0,3);\r
-                       uskkey="USK"+uskkey;\r
-                       uskkey+=m_messagebase+"/0/";\r
+                       if(publickey.find("SSK@")==0)\r
+                       {\r
+                               uskkey=publickey;\r
+                               uskkey.erase(0,3);\r
+                               uskkey="USK"+uskkey;\r
+                               uskkey+=m_messagebase+"/"+freesiteedition+"/";\r
+                       }\r
                }\r
 \r
                content+="<tr>";\r
-               content+="<td><a href=\""+uskkey+"\">"+SanitizeOutput(CreateShortIdentityName(idname,publickey))+"</a></td>";\r
+               if(freesiteedition!="")\r
+               {\r
+                       content+="<td><a href=\""+uskkey+"\">"+SanitizeOutput(CreateShortIdentityName(idname,publickey))+"</a></td>";\r
+               }\r
+               else\r
+               {\r
+                       content+="<td>"+SanitizeOutput(CreateShortIdentityName(idname,publickey))+"</td>";\r
+               }\r
                content+="<td "+GetClassString(messagetrust)+">"+messagetrust+"</td>";\r
                content+="<td>"+SanitizeOutput(messagetrustcomment)+"</td>";\r
                content+="<td "+GetClassString(trustlisttrust)+">"+trustlisttrust+"</td>";\r
@@ -279,7 +291,9 @@ const bool SiteInserter::HandlePutFailed(FCPMessage &message)
 const bool SiteInserter::HandlePutSuccessful(FCPMessage &message)\r
 {\r
        std::vector<std::string> idparts;\r
+       std::vector<std::string> uriparts;\r
        long localidentityid;\r
+       int edition=-1;\r
        DateTime now;\r
 \r
        now.SetToGMTime();\r
@@ -287,9 +301,17 @@ const bool SiteInserter::HandlePutSuccessful(FCPMessage &message)
        StringFunctions::Split(message["Identifier"],"|",idparts);\r
        StringFunctions::Convert(idparts[1],localidentityid);\r
 \r
-       SQLite3DB::Statement st=m_db->Prepare("UPDATE tblLocalIdentity SET LastInsertedFreesite=? WHERE LocalIdentityID=?;");\r
+       // edition is very last part of uri\r
+       StringFunctions::Split(message["URI"],"/",uriparts);\r
+       if(uriparts.size()>0)\r
+       {\r
+               StringFunctions::Convert(uriparts[uriparts.size()-1],edition);\r
+       }\r
+\r
+       SQLite3DB::Statement st=m_db->Prepare("UPDATE tblLocalIdentity SET LastInsertedFreesite=?, FreesiteEdition=? WHERE LocalIdentityID=?;");\r
        st.Bind(0,now.Format("%Y-%m-%d %H:%M:%S"));\r
-       st.Bind(1,localidentityid);\r
+       st.Bind(1,edition);\r
+       st.Bind(2,localidentityid);\r
        st.Step();\r
 \r
        m_log->WriteLog(LogFile::LOGLEVEL_INFO,"SiteInserter::HandlePutSuccessful successfully inserted Freesite.");\r