use utf8;
use warnings; no warnings "redefine";
use strict;

use Cf qw($NSI);
use Dbase::Globals qw(bignum find_descr flag_names);
use Dbase::Help qw(Do DoFn);
use Fehler qw(warnung);
use Loader qw(log_update select_flags);

my $flag_dnszone = bignum(1) << find_descr( domainflags => dnszone => 1 );

sub set_domain_flags($;$) {
	my($id,$kn) = @_;

	my $kl = DoFn("select flags from domainkunde where id=$id");
	my $nkl = select_flags($kl,"domainflags","Flags","!hide");
	
	return undef unless defined $nkl;
	return $nkl if $kl == $nkl;

	if ( defined( my $flag_noris_update = find_descr domainflags => 'noris_update' ) ) {
		$flag_noris_update = bignum(1) << $flag_noris_update;
		warnung "Bitte an <adm> wenden, da jetzt die Zugriffsrechte der Zonendatei auf $NSI geändert werden müssen!"
			if $nkl & $flag_dnszone && ($kl^$nkl) & $flag_noris_update;
	}

	log_update("domainkunde","id",$id,undef,"flags",undef,
		scalar flag_names($nkl,"domainflags",$kl));
	Do("update domainkunde set flags=$nkl where id=$id");
}

1;
