Change DXUser->get* to DXUser::get*
[spider.git] / cmd / show / users.pl
index 8cbe85770967388f43a8895c590f629f2930345b..1d665eba5a91858dbdfa89f33bb42879e776753b 100644 (file)
@@ -3,36 +3,52 @@
 #
 # Copyright (c) 1998 Dirk Koopman G1TLH
 #
-# $Id$
+#
 #
 
 my ($self, $line) = @_;
-my @list = map { uc } split /\s+/, $line;           # list of callsigns of nodes
+my @list = map { uc } split /\s+/, $line; # list of callsigns of nodes
 my @out;
-my $node = (DXNode->get($main::mycall));
 
-push @out, "Callsigns connected to $main::mycall";
-my $call;
-my $i = 0;
-my @l;
-my $nlist = $node->list;
-my @val = values %{$nlist};
-foreach $call (@val) {
-  if (@list) {
-    next if !grep $call->call eq $_, @list;
-  } 
-  if ($i >= 5) {
-    push @out, sprintf "%-12s %-12s %-12s %-12s %-12s %-12s", @l;
-       @l = ();
-       $i = 0;
-  }
-  my $s = $call->{call};
-  $s = sprintf "(%s)", $s if $call->{here} == 0;
-  push @l, $s;
-  $i++;
+if (@list) {
+       foreach my $call (sort @list) {
+               my $uref = DXUser::get_current($call);
+               if ($uref) {
+                       my $name = $uref->name || '?';
+                       my $qth = $uref->qth || '?';
+                       my $qra = $uref->qra || '';
+                       my $route = '';
+                       if (my $rref = Route::get($call)) {
+                               $route = '(at ' . join(',', $rref->parents) . ')';
+                       }
+                       push @out, "$call $route $name $qth $qra",
+               } else {
+                       push @out, $self->msg('usernf', $call);
+               }
+       }
+} else {
+       my $node = $main::routeroot;
+       push @out, join(' ', $self->msg('userconn'), $main::mycall);
+       my $call;
+       my @l;
+       my @val = sort $node->users;
+       foreach $call (@val) {
+               if (@l >= 5) {
+                       push @out, sprintf "%-12s %-12s %-12s %-12s %-12s", @l;
+                       @l = ();
+               }
+               my $uref = Route::User::get($call);
+               my $s = $call;
+               if ($uref) {
+                       $s = sprintf "(%s)", $call unless $uref->here;
+               } else {
+                       $s = "$call?";
+               }
+               push @l, $s;
+       }
+       push @l, "" while @l < 5;
+       push @out, sprintf "%-12s %-12s %-12s %-12s %-12s", @l;
 }
-push @out, sprintf "%-12s %-12s %-12s %-12s %-12s %-12s", @l;
-
 
 return (1, @out);