- if ($fromdxcc) {
- @ans = Prefix::extract($spotter); # is it a callsign/prefix?
-
- if (@ans) {
-
- # first deal with the prefix
- my $pre = shift @ans;
- my $a;
- $expr .= ' && ' if $expr;
- $hint .= ' && ' if $hint;
- my $str = "Spotter: $pre";
- my $l = length $str;
- my @expr;
- my @hint;
-
- # build up a search string for this dxcc country/countries
- foreach $a (@ans) {
- my $n = $a->dxcc();
- push @expr, "\$f6 == $n";
- push @hint, "m{$n}";
- my $name = $a->name();
- $str .= " Dxcc: $n ($name)";
- push @out, $str;
- $str = ' ' x $l;
- }
- $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : $expr[0];
- $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
- }
- }
- unless (@ans) {
- $expr .= ' && ' if $expr;
- $spotter .= '*' unless $spotter =~ /[\*\?\[]/o;
- $spotter = shellregex($spotter);
- if ($usesql) {
- $spotter =~ s/\.\*/%/g;
- }
- else {
- $spotter =~ s/\.\*\$$//;
- }
- $expr .= "\$f4 =~ m{\U$spotter}";
- $hint .= ' && ' if $hint;
- $spotter =~ s/[\^\$]//g;
- $hint .= "m{\U$spotter}";
- }
- }
-
- # zone requests
- if ($zone) {
- my @expr;
- my @hint;
- $expr .= ' && ' if $expr;
- $hint .= ' && ' if $hint;
- for (split /[:,]/, $zone) {
- push @expr, "\$f9==$_";
- push @hint, "m{$_}";
- }
- $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : $expr[0];
- $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
- }
- if ($byzone) {
- my @expr;
- my @hint;
- $expr .= ' && ' if $expr;
- $hint .= ' && ' if $hint;
- for (split /[:,]/, $byzone) {
- push @expr, "\$f11==$_";
- push @hint, "m{$_}";
- }
- $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : $expr[0];
- $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
- }
-
- # itu requests
- if ($itu) {
- my @expr;
- my @hint;
- $expr .= ' && ' if $expr;
- $hint .= ' && ' if $hint;
- for (split /[:,]/, $itu) {
- push @expr, "\$f8==$_";
- push @hint, "m{$_}";
- }
- $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : $expr[0];
- $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
- }
- if ($byitu) {
- my @expr;
- my @hint;
- $expr .= ' && ' if $expr;
- $hint .= ' && ' if $hint;
- for (split /[:,]/, $byitu) {
- push @expr, "\$f10==$_";
- push @hint, "m{$_}";
- }
- $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : $expr[0];
- $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
- }
-
- # state requests
- if ($state) {
- my @expr;
- my @hint;
- $expr .= ' && ' if $expr;
- $hint .= ' && ' if $hint;
- for (split /[:,]/, $state) {
- push @expr, "\$f12 eq '$_'";
- push @hint, "m{$_}";
- }
- if ($usesql) {
- $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : "$expr[0]";
- }
- else {
- $expr .= @expr > 1 ? '(\$f12 && (' . join(' || ', @expr) . '))' : "(\$f12 && $expr[0])";
- }
- $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
- }
- if ($bystate) {
- my @expr;
- my @hint;
- $expr .= ' && ' if $expr;
- $hint .= ' && ' if $hint;
- for (split /[:,]/, $bystate) {
- push @expr, "\$f13 eq '$_'";
- push @hint, "m{$_}";
- }