Changeset 722 for trunk/DNSDB.pm
- Timestamp:
- 06/13/16 16:06:41 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/DNSDB.pm
r720 r722 4882 4882 return $loglist; 4883 4883 } # end getLogEntries() 4884 4885 4886 ## DNSDB::recSearchCount() 4887 # Get a total count for a global record search 4888 ## DNSDB::recSearch() 4889 # Find records matching the search string 4890 sub recSearch { 4891 my $self = shift; 4892 my $dbh = $self->{dbh}; 4893 4894 my %args = @_; 4895 4896 my $sql = q( 4897 SELECT r.domain_id,d.domain,g1.group_name AS domgroup,r.rdns_id,z.revnet AS revzone,g2.group_name AS 4898 revgroup,r.host,t.name AS rectype,r.val,l.description AS location 4899 FROM records r 4900 LEFT JOIN domains d ON r.domain_id = d.domain_id 4901 LEFT JOIN groups g1 ON d.group_id = g1.group_id 4902 LEFT JOIN revzones z ON r.rdns_id = z.rdns_id 4903 LEFT JOIN groups g2 on z.group_id = g2.group_id 4904 JOIN rectypes t ON r.type = t.val 4905 LEFT JOIN locations l ON r.location = l.location 4906 WHERE r.type <> 6 AND (r.host ~* ? OR r.val ~* ?) 4907 ); 4908 4909 # Limit scope based on group 4910 if ($args{group} != 1) { 4911 my @grouplist; 4912 $self->getChildren($args{group}, \@grouplist); 4913 my $groupset = join(',', $args{group}, @grouplist); 4914 # oh my aching HEAD. there has to be a better way to do conditions on joined tables... 4915 $sql .= "AND ( 4916 (g1.group_id IN ($groupset) AND g2.group_id IN ($groupset)) OR 4917 (g1.group_id IN ($groupset) AND g2.group_id IS NULL) OR 4918 (g1.group_id IS NULL AND g2.group_id IN ($groupset)) 4919 ) 4920 "; 4921 } 4922 4923 my $foo = q( 4924 SELECT r.domain_id,d.domain,g1.group_name AS domgroup,r.rdns_id,z.revnet AS revzone,g2.group_name AS 4925 revgroup,r.host,t.name AS rectype,r.val,l.description AS location 4926 FROM records r 4927 LEFT JOIN domains d on r.domain_id = d.domain_id 4928 LEFT JOIN groups g1 on d.group_id = g1.group_id 4929 LEFT JOIN revzones z on r.rdns_id = z.rdns_id 4930 LEFT JOIN groups g2 on z.group_id = g2.group_id 4931 JOIN rectypes t ON r.type = t.val 4932 LEFT JOIN locations l ON r.location = l.location 4933 WHERE r.type <> 6 AND (r.host ~* 'kings' OR r.val ~* 'kings'); 4934 ); 4935 #ORDER BY record_id 4936 4937 #warn "$sql\n"; 4938 # safety valve. probably need a way to flag this back to the caller. 4939 if (!$args{searchfor} || $args{searchfor} =~ /^.{0,2}$/) { $sql .= "LIMIT 10"; } 4940 4941 #$sql .= "LIMIT 20" if $sql !~ /LIMIT/; 4942 4943 return $dbh->selectall_arrayref($sql, { Slice => {} }, $args{searchfor}, $args{searchfor}) or warn $dbh->errstr; 4944 } # end recSearch() 4884 4945 4885 4946
Note:
See TracChangeset
for help on using the changeset viewer.