mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-03 06:35:08 -04:00
* Added extra forum sorting method: Last Post.
This will hopefully be more useful than the existing ones. Extra childTS field was added & populated. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1628 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
a436af418a
commit
821855d16e
5 changed files with 48 additions and 25 deletions
|
@ -69,6 +69,7 @@ class ForumMsgInfo
|
||||||
std::wstring title;
|
std::wstring title;
|
||||||
std::wstring msg;
|
std::wstring msg;
|
||||||
time_t ts;
|
time_t ts;
|
||||||
|
time_t childTS;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -87,7 +88,7 @@ class ThreadInfoSummary
|
||||||
std::wstring msg;
|
std::wstring msg;
|
||||||
int count; /* file count */
|
int count; /* file count */
|
||||||
time_t ts;
|
time_t ts;
|
||||||
|
time_t childTS;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::ostream &operator<<(std::ostream &out, const ForumInfo &info);
|
std::ostream &operator<<(std::ostream &out, const ForumInfo &info);
|
||||||
|
|
|
@ -60,6 +60,7 @@ virtual std::ostream& print(std::ostream &out, uint16_t indent = 0);
|
||||||
/* Not Serialised */
|
/* Not Serialised */
|
||||||
|
|
||||||
std::string msgId; /* Msg Id */
|
std::string msgId; /* Msg Id */
|
||||||
|
uint32_t childTS; /* timestamp of most recent child */
|
||||||
RsTlvKeySignature publishSignature;
|
RsTlvKeySignature publishSignature;
|
||||||
RsTlvKeySignature personalSignature;
|
RsTlvKeySignature personalSignature;
|
||||||
};
|
};
|
||||||
|
|
|
@ -624,6 +624,9 @@ void p3GroupDistrib::loadMsg(RsDistribSignedMsg *newMsg, std::string src, bool l
|
||||||
/* accept message */
|
/* accept message */
|
||||||
(git->second).msgs[msg->msgId] = msg;
|
(git->second).msgs[msg->msgId] = msg;
|
||||||
|
|
||||||
|
/* now update parents TS */
|
||||||
|
locked_updateChildTS(git->second, msg);
|
||||||
|
|
||||||
#ifdef DISTRIB_DEBUG
|
#ifdef DISTRIB_DEBUG
|
||||||
std::cerr << "p3GroupDistrib::loadMsg() Msg Loaded Successfully" << std::endl;
|
std::cerr << "p3GroupDistrib::loadMsg() Msg Loaded Successfully" << std::endl;
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
|
@ -2567,6 +2570,42 @@ bool p3GroupDistrib::locked_checkDistribMsg(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* now update parents TS */
|
||||||
|
bool p3GroupDistrib::locked_updateChildTS(GroupInfo &gi, RsDistribMsg *msg)
|
||||||
|
{
|
||||||
|
/* find all parents - update timestamp */
|
||||||
|
time_t updateTS = msg->timestamp;
|
||||||
|
msg->childTS = updateTS;
|
||||||
|
|
||||||
|
while("" != msg->parentId)
|
||||||
|
{
|
||||||
|
std::string parentId = msg->parentId;
|
||||||
|
|
||||||
|
std::map<std::string, RsDistribMsg *>::iterator mit;
|
||||||
|
if (gi.msgs.end() == (mit = gi.msgs.find(parentId)))
|
||||||
|
{
|
||||||
|
/* not found - abandon */
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
RsDistribMsg *parent = mit->second;
|
||||||
|
if ((!parent) || (parent->childTS > updateTS))
|
||||||
|
{
|
||||||
|
/* we're too old - give up! */
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* update timestamp */
|
||||||
|
parent->childTS = updateTS;
|
||||||
|
msg = parent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***** DEBUG *****/
|
/***** DEBUG *****/
|
||||||
|
|
||||||
void p3GroupDistrib::printGroups(std::ostream &out)
|
void p3GroupDistrib::printGroups(std::ostream &out)
|
||||||
|
|
|
@ -329,6 +329,7 @@ void locked_publishPendingMsgs();
|
||||||
uint16_t locked_determineCacheSubId();
|
uint16_t locked_determineCacheSubId();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************************/
|
/***************************************************************************************/
|
||||||
/***************************************************************************************/
|
/***************************************************************************************/
|
||||||
|
|
||||||
|
@ -366,6 +367,7 @@ virtual bool locked_choosePublishKey(GroupInfo &info);
|
||||||
/* TO FINISH */
|
/* TO FINISH */
|
||||||
/* utilities */
|
/* utilities */
|
||||||
std::string HashRsItem(const RsItem *item);
|
std::string HashRsItem(const RsItem *item);
|
||||||
|
bool locked_updateChildTS(GroupInfo &gi, RsDistribMsg *msg);
|
||||||
|
|
||||||
/***************************************************************************************/
|
/***************************************************************************************/
|
||||||
/***************************************************************************************/
|
/***************************************************************************************/
|
||||||
|
|
|
@ -165,6 +165,7 @@ bool p3Forums::getForumThreadList(std::string fId, std::list<ThreadInfoSummary>
|
||||||
tis.threadId = msg->msgId; // these are the thread heads!
|
tis.threadId = msg->msgId; // these are the thread heads!
|
||||||
|
|
||||||
tis.ts = msg->timestamp;
|
tis.ts = msg->timestamp;
|
||||||
|
tis.childTS = msg->childTS;
|
||||||
|
|
||||||
/* the rest must be gotten from the derived Msg */
|
/* the rest must be gotten from the derived Msg */
|
||||||
|
|
||||||
|
@ -200,6 +201,7 @@ bool p3Forums::getForumThreadMsgList(std::string fId, std::string pId, std::list
|
||||||
tis.threadId = msg->threadId;
|
tis.threadId = msg->threadId;
|
||||||
|
|
||||||
tis.ts = msg->timestamp;
|
tis.ts = msg->timestamp;
|
||||||
|
tis.childTS = msg->childTS;
|
||||||
|
|
||||||
/* the rest must be gotten from the derived Msg */
|
/* the rest must be gotten from the derived Msg */
|
||||||
|
|
||||||
|
@ -230,6 +232,7 @@ bool p3Forums::getForumMessage(std::string fId, std::string mId, ForumMsgInfo &i
|
||||||
info.threadId = msg->threadId;
|
info.threadId = msg->threadId;
|
||||||
|
|
||||||
info.ts = msg->timestamp;
|
info.ts = msg->timestamp;
|
||||||
|
info.childTS = msg->childTS;
|
||||||
|
|
||||||
/* the rest must be gotten from the derived Msg */
|
/* the rest must be gotten from the derived Msg */
|
||||||
|
|
||||||
|
@ -303,29 +306,6 @@ std::string p3Forums::createForumMsg(std::string fId, std::string pId,
|
||||||
return msgId;
|
return msgId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* p3Config Serialiser */
|
|
||||||
RsSerialiser *p3Forums::setupSerialiser()
|
|
||||||
{
|
|
||||||
RsSerialiser *rss = new RsSerialiser();
|
|
||||||
|
|
||||||
rss->addSerialType(new RsForumSerialiser());
|
|
||||||
return rss;
|
|
||||||
}
|
|
||||||
|
|
||||||
pqistreamer *p3Forums::createStreamer(BinInterface *bio, std::string src, uint32_t bioflags)
|
|
||||||
{
|
|
||||||
RsSerialiser *rsSerialiser = new RsSerialiser();
|
|
||||||
//rsSerialiser->addSerialType(new RsForumSerialiser());
|
|
||||||
rsSerialiser->addSerialType(new RsDistribSerialiser());
|
|
||||||
|
|
||||||
pqistreamer *streamer = new pqistreamer(rsSerialiser, src, bio, bioflags);
|
|
||||||
return streamer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
RsSerialType *p3Forums::createSerialiser()
|
RsSerialType *p3Forums::createSerialiser()
|
||||||
{
|
{
|
||||||
return new RsForumSerialiser();
|
return new RsForumSerialiser();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue