####################################################
# by wiebe @ QuakeNet
#
####################################################


####################################################
# removeuser:help:msg
####################################################
bind msgm mn|mn "help removeuser" removeuser:help:msgm
proc removeuser:help:msgm { n u h t } {
  if {[matchattr $h bkZ]} { return 0 }
  lappend o "removeuser: usage removeuser <chan> <nick>|<#account>"
  lappend o "removeuser: "
  if {[string equal [info procs cnotice] ""]} { foreach l $o { puthelp "NOTICE $n :$l" }
  } else { foreach l $o { cnotice $n $l puthelp "removeuser: " } }
  putcmdlog "($n!$u) !$h! help removeuser"
  return 1
}


####################################################
# removeuser:msg
####################################################
bind msg mn|mn removeuser removeuser:msg
proc removeuser:msg { n u h t } {
  if {[matchattr $h bkZ]} { return 0 }
  set o [removeuser:removeuser $h $t]
  if {[string equal [info procs cnotice] ""]} { foreach l $o { puthelp "NOTICE $n :$l" }
  } else { foreach l $o { cnotice $n $l puthelp "removeuser: " } }
  return 1
}


####################################################
# removeuser:dcc
####################################################
bind dcc -|- removeuser removeuser:dcc
proc removeuser:dcc { h i t } {
  set o [removeuser:removeuser $h $t]
  foreach l $o { putidx $i $l }
  return 1
}


####################################################
# removeuser:removeuser
####################################################
proc removeuser:removeuser { h t } {
  set t [split $t]; set c [lindex $t 0]; set f [lindex $t 2]; set t [lindex $t 1]
  if {![validchan $c] && ![string equal [info procs whichchan] ""]} { set c [whichchan $h $c] }
  if {[string match "#*" $t]} {
    set a [string range $t 1 end]; if {[validuser $a]} { set s "account '[getuser $a HANDLE]'" }
  } else { set a [nick2hand $t]; set s "user $t (account $a)" }
  if {[string equal $a "*"]} { set a "" }
# no chan
  if {[string equal $c ""]} {
    lappend o "removeuser: usage removeuser <chan> <nick>|<#account>"
# no access
  } elseif {![validchan $c] || ![matchattr $h mn|mn $c]} {
    lappend o "removeuser: no access or unknown channel $c"
# unknown account
  } elseif {[string match "#*" $t] && ![validuser $a]} {
    lappend o "removeuser: unknown account $a"
# unknown user
  } elseif {![string match "#*" $t] && [string equal $a ""]} {
    lappend o "removeuser: unknown user $t"
# not known on channel
  } elseif {![haschanrec $a $c]} {
    lappend o "removeuser: $s is not known on $c"
# master cannot remove owner
  } elseif {![matchattr $h n|n $c] && [matchattr $a n|n $c]} { 
    lappend o "removeuser: cannot remove owner $s on $c"
# remove
  } else {
    delchanrec $a $c
    lappend o "removeuser: removed $s from $c"
    if {![string equal [info procs ircconsole] ""]} {
      ircconsole $c a removeuser "$h removes $s"
    }
  }
  return $o
}


set scriptdb(removeuser) {
  "provides removeuser command for remove users from the channel access list"
}

