Changeset 459 for trunk/DNSDB.pm
- Timestamp:
- 01/22/13 17:24:43 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/DNSDB.pm
r457 r459 3796 3796 return ($retcode, $retmsg); 3797 3797 } # end updateRec() 3798 3799 3800 ## DNSDB::downconvert() 3801 # A mostly internal (not exported) semiutilty sub to downconvert from pseudotype <x> 3802 # to a compatible component type. Only a handful of operations are valid, anything 3803 # else is a null-op. 3804 # Takes the record ID and the new type. Returns boolean. 3805 sub downconvert { 3806 my $dbh = shift; 3807 my $recid = shift; 3808 my $newtype = shift; 3809 3810 # also, only work on live records; little to no value trying to do this on default records. 3811 my $rec = getRecLine($dbh, 'n', 'y', $recid); 3812 3813 # hm? 3814 #return 1 if !$rec; 3815 3816 return 1 if $rec->{type} < 65000; # Only the reverse-record pseudotypes can be downconverted 3817 return 1 if $rec->{type} == 65282; # Nowhere to go 3818 3819 my $delpar; 3820 my @sqlargs; 3821 if ($rec->{type} == 65280) { 3822 return 1 if $newtype != 1 && $newtype != 12; 3823 $delpar = ($newtype == 1 ? 'rdns_id' : 'domain_id'); 3824 push @sqlargs, 0, $newtype, $recid; 3825 } elsif ($rec->{type} == 65281) { 3826 return 1 if $newtype != 28 && $newtype != 12; 3827 $delpar = ($newtype == 28 ? 'rdns_id' : 'domain_id'); 3828 push @sqlargs, 0, $newtype, $recid; 3829 } elsif ($rec->{type} == 65283) { 3830 return 1 if $newtype != 65282; 3831 $delpar = 'rdns_id'; 3832 } elsif ($rec->{type} == 65284) { 3833 return 1 if $newtype != 65282; 3834 $delpar = 'rdns_id'; 3835 } else { 3836 # Your llama is on fire. 3837 } 3838 3839 local $dbh->{AutoCommit} = 0; 3840 local $dbh->{RaiseError} = 1; 3841 3842 eval { 3843 $dbh->do("UPDATE records SET $delpar = ?, type = ? WHERE record_id = ?", undef, @sqlargs); 3844 $dbh->commit; 3845 }; 3846 if ($@) { 3847 $errstr = $@; 3848 eval { $dbh->rollback; }; 3849 return 0; 3850 } 3851 return 1; 3852 } # end downconvert() 3798 3853 3799 3854
Note:
See TracChangeset
for help on using the changeset viewer.