Changeset 5985 for branches/newosd

Show
Ignore:
Timestamp:
01/03/08 08:28:26 (11 months ago)
Author:
eugene
Message:

Added user group filtering.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/newosd/src/iface.cpp

    r5984 r5985  
    161161    return true; 
    162162 
    163   bool ret = false; 
    164  
    165163  ICQUser* u = gUserManager.FetchUser(sig->Id(), sig->PPID(), LOCK_R); 
    166164  if (u == NULL) 
    167165    return true; 
    168166 
    169   if (u->IgnoreList()) 
    170     ret = true; 
     167  bool ret = u->IgnoreList(); 
     168  bool on = u->OnlineNotify(); 
    171169 
    172170  gUserManager.DropUser(u); 
     
    179177    return true; 
    180178 
     179  if (sig->SubSignal() == USER_STATUS) 
     180  { 
     181    if (sig->Argument() == 0) 
     182    { 
     183      if (conf->statusChange == GROUP_TYPE_NONE || 
     184          (conf->statusChange == GROUP_TYPE_ONLINE_NOTIFY && !on)) 
     185        ret = true; 
     186    } 
     187    else 
     188      if (conf->logonLogoff == GROUP_TYPE_NONE || 
     189          (conf->logonLogoff == GROUP_TYPE_ONLINE_NOTIFY && !on)) 
     190        ret = true; 
     191  } 
     192 
     193  if (sig->SubSignal() == USER_EVENTS) 
     194  { 
     195    if (sig->Argument() < 0) 
     196      ret = true; 
     197    else 
     198      if (sig->Argument() == 0) 
     199      { 
     200        if (conf->statusChange == GROUP_TYPE_NONE || 
     201            (conf->statusChange == GROUP_TYPE_ONLINE_NOTIFY && !on)) 
     202          ret = true; 
     203      } 
     204      else 
     205      { 
     206        if (conf->showMessage == GROUP_TYPE_NONE || 
     207            (conf->showMessage == GROUP_TYPE_ONLINE_NOTIFY && !on && 
     208             strcmp(sig->Id(), o->IdString()) != 0)) 
     209          ret = true; 
     210      } 
     211  } 
     212 
     213  if (ret) 
     214  { 
     215    gUserManager.DropOwner(o->PPID()); 
     216    return true; 
     217  } 
     218 
    181219  do 
    182220  { 
     
    184222 
    185223    // Don't let owner messages (e.g. auth-reqs) be filtered 
    186     if (sig->Signal() == SIGNAL_UPDATExUSER && 
    187         sig->SubSignal() == USER_EVENTS && 
     224    if (sig->SubSignal() == USER_EVENTS && 
    188225        sig->Argument() > 0) 
    189226      break;