summaryrefslogtreecommitdiff
path: root/utilities.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utilities.cpp')
-rw-r--r--utilities.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/utilities.cpp b/utilities.cpp
index b56fa4b..4ffebd7 100644
--- a/utilities.cpp
+++ b/utilities.cpp
@@ -90,6 +90,7 @@ void DeleteCListGroupsByName(TCHAR* szGroupName)
DBWriteContactSettingByte(NULL, "CList", "ConfirmDelete",ConfirmDelete);
}
+
void RemoveExcludedUsers()
{
HANDLE hContact;
@@ -113,7 +114,16 @@ void RemoveExcludedUsers()
plist = first;
while(plist->hContact != INVALID_HANDLE_VALUE)
{
- CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0);
+ std::string proto=DBGetContactSettingStringPAN_A(plist->hContact,"Protocol","p","");
+ UINT status = CallProtoService(proto.c_str(), PS_GETSTATUS, 0, 0);
+
+ if(status>= ID_STATUS_CONNECTING && status <= ID_STATUS_OFFLINE){
+ LogSpamToFile(plist->hContact, _T("Mark for delete"));
+ DBWriteContactSettingByte(plist->hContact,"CList","Delete", 1);
+ }else{
+ LogSpamToFile(plist->hContact, _T("Deleted"));
+ CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0);
+ };
tmp = plist;
plist = plist->next;
delete tmp;
@@ -147,9 +157,18 @@ void RemoveTemporaryUsers()
plist = first;
while(plist->hContact != INVALID_HANDLE_VALUE)
{
- LogSpamToFile(plist->hContact, _T("Deleted"));
- CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0);
- tmp = plist;
+ std::string proto=DBGetContactSettingStringPAN_A(plist->hContact,"Protocol","p","");
+ UINT status = CallProtoService(proto.c_str(), PS_GETSTATUS, 0, 0);
+
+ if(status>= ID_STATUS_CONNECTING && status <= ID_STATUS_OFFLINE){
+ LogSpamToFile(plist->hContact, _T("Mark for delete"));
+ DBWriteContactSettingByte(plist->hContact,"CList","Delete", 1);
+ }else{
+ LogSpamToFile(plist->hContact, _T("Deleted"));
+ CallService(MS_DB_CONTACT_DELETE, (WPARAM)plist->hContact, 0);
+ };
+
+ tmp = plist;
plist = plist->next;
delete tmp;
}