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

use Dbase::Help qw(Do DoFn qquote);
use Dbase::Globals qw(content def_or_minus mpersinfo is_valid_username);
use Fehler qw(problem);
use Loader qw(line_in log_update);

sub set_person_kurzname($;$) {
	my($pers,$kn) = @_;

	content ( my $nick = line_in "Kurzname    : " ) or return;
	return problem("Kurznamen beginnen mit einem Kleinbuchstaben und bestehen aus den Zeichen a-z 0-9 % - . _")
		unless $nick eq '-' || is_valid_username($nick);

	my $old_nick = DoFn("SELECT suchbegriff FROM person WHERE id = $pers");
	return if $nick eq '-' ? !defined $old_nick : defined $old_nick && $old_nick eq $nick;

	if ( my $other = DoFn("SELECT id FROM person WHERE suchbegriff =  ${\ qquote($nick) }") ) {
		return problem("Dieser Kurzname ist schon an Person #$other:".mpersinfo($other).' vergeben.');
	}

	log_update( person => id => $pers, undef, suchbegriff => undef, def_or_minus($nick) );
	Do("update person set suchbegriff=${\qquote $nick,1} where id=$pers");
}

1;
