fixed: thread plugin didn't correctly set the last item and replies (in 'thread' table)
when deleting an answer added: ThreadInfo::Repair() method will be used by 'fsck' winix function added: plugins/groupitem directory for a new plugin: 'groupitem' git-svn-id: svn://ttmath.org/publicrep/winix/trunk@725 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
@@ -71,6 +71,67 @@ void ThreadInfo::RemoveThread(long file_id)
|
||||
|
||||
|
||||
|
||||
void ThreadInfo::RemoveThreadAnswer(long answer_id)
|
||||
{
|
||||
tdb->RemoveAnswer(answer_id);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void ThreadInfo::RepairAnswer(long answer_id)
|
||||
{
|
||||
iq.Clear();
|
||||
iq.SetAll(false, false);
|
||||
iq.WhereId(answer_id);
|
||||
iq.WhereType(Item::file); // !! moze w przyszlosci pozwolic takze na symlinki?
|
||||
|
||||
if( db->GetItem(repair_item, iq) == WINIX_ERR_NO_ITEM )
|
||||
{
|
||||
log << log3 << "ThreadInfo: there is no a file for thread answer_id: " << answer_id << logend;
|
||||
tdb->RemoveAnswerOnly(answer_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void ThreadInfo::RepairAnswers(long file_id)
|
||||
{
|
||||
tdb->GetAnswers(file_id, repair_answer_tab);
|
||||
|
||||
for(size_t i=0 ; i<repair_answer_tab.size() ; ++i)
|
||||
RepairAnswer(repair_answer_tab[i]);
|
||||
}
|
||||
|
||||
|
||||
void ThreadInfo::Repair(long file_id)
|
||||
{
|
||||
iq.Clear();
|
||||
iq.SetAll(false, false);
|
||||
iq.WhereId(file_id);
|
||||
iq.WhereType(Item::file); // !! moze w przyszlosci pozwolic takze na symlinki?
|
||||
|
||||
if( db->GetItem(repair_item, iq) == WINIX_ERR_NO_ITEM )
|
||||
{
|
||||
log << log3 << "ThreadInfo: there is no a file for thread file_id: " << file_id << logend;
|
||||
tdb->RemoveThread(file_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
RepairAnswers(file_id);
|
||||
tdb->RecalcThread(file_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ThreadInfo::Repair()
|
||||
{
|
||||
tdb->GetAllThreadsId(repair_id_tab);
|
||||
|
||||
for(size_t i=0 ; i<repair_id_tab.size() ; ++i)
|
||||
Repair(repair_id_tab[i]);
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user