Changeset 1680

Show
Ignore:
Timestamp:
02/16/10 19:58:18 (7 months ago)
Author:
tjfontaine
Message:

show the channels a group is on the access list for

Location:
trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/include/dbm.h

    r1619 r1680  
    203203  GET_GROUPS_OPER, 
    204204  GET_GROUPS, 
     205  GET_GROUP_CHAN_INFO, 
    205206  QUERY_COUNT 
    206207}; 
  • trunk/languages/groupserv.en.lang

    r1606 r1680  
    168168GS_INFO_REGTIME_UNKNOWN 
    169169          Time registered: Unknown 
     170GS_INFO_CHANS 
     171        This group is on the following channel access lists: 
     172GS_INFO_CHAN 
     173            %s: %s 
    170174GS_LIST_INVALID_OPTION 
    171175        Invalid LIST option %s. 
  • trunk/modules/groupserv.c

    r1616 r1680  
    292292  } 
    293293 
     294  reply_user(service, service, client, GS_INFO_OPTION, "PRIVATE", 
     295      group_get_priv(group) ? "ON" : "OFF"); 
     296 
    294297  if(group_masters_list(group_get_id(group), &list)) 
    295298  { 
     
    310313  reply_user(service, service, client, GS_INFO_MASTERS, buf); 
    311314 
    312   reply_user(service, service, client, GS_INFO_OPTION, "PRIVATE", 
    313       group_get_priv(group) ? "ON" : "OFF"); 
     315  if(IsOper(client) || (access != NULL && access->level >= GRPMEMBER_FLAG)) 
     316  { 
     317    if(group_chan_list(group_get_id(group), &list)) 
     318    { 
     319      struct InfoChanList *chan; 
     320      reply_user(service, service, client, GS_INFO_CHANS); 
     321 
     322      DLINK_FOREACH(ptr, list.head) 
     323      { 
     324        chan = (struct InfoChanList *)ptr->data; 
     325        reply_user(service, service, client, GS_INFO_CHAN, chan->channel, 
     326          chan->level); 
     327      } 
     328      group_chan_list_free(&list); 
     329    } 
     330  } 
    314331 
    315332  if(access != NULL) 
  • trunk/modules/pgsql.c

    r1622 r1680  
    317317  { GET_GROUPS, "SELECT name FROM \"group\" WHERE flag_private='f' ORDER BY lower(name) DESC", 
    318318    QUERY }, 
     319  { GET_GROUP_CHAN_INFO, "SELECT channel.id, channel, level FROM " 
     320    "channel, channel_access WHERE " 
     321    "channel.id=channel_access.channel_id AND channel_access.group_id=$1 " 
     322    "ORDER BY lower(channel.channel)", QUERY }, 
    319323}; 
    320324 
  • trunk/src/group.c

    r1614 r1680  
    630630  db_string_list_free(list); 
    631631} 
     632#endif 
    632633 
    633634static struct InfoChanList * 
     
    691692  struct InfoChanList *chan; 
    692693 
    693   ilog(L_DEBUG, "Freeing string list %p of length %lu", list, 
     694  ilog(L_DEBUG, "Freeing group chan list %p of length %lu", list, 
    694695    dlink_list_length(list)); 
    695696 
     
    704705} 
    705706 
    706  
     707#if 0 
    707708inline void 
    708709group_list_all_free(dlink_list *list)