From eaacbeb2d5fece7fe9cab570f262a8f29be96863 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Mon, 10 Sep 2012 20:01:06 +0200 Subject: Internationalization. --- lib/Fripost/Schema/List.pm | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'lib/Fripost/Schema/List.pm') diff --git a/lib/Fripost/Schema/List.pm b/lib/Fripost/Schema/List.pm index ec66f76..c6fb4f2 100644 --- a/lib/Fripost/Schema/List.pm +++ b/lib/Fripost/Schema/List.pm @@ -18,6 +18,8 @@ use utf8; use parent 'Fripost::Schema'; use Fripost::Schema::Misc qw/concat explode must_attrs email_valid/; +use Net::IDN::Encode qw/domain_to_ascii + email_to_ascii email_to_unicode/; =head1 METHODS @@ -33,7 +35,7 @@ is a array of hash references, sorted by list. sub search { my $self = shift; - my $domain = shift; + my $domain = domain_to_ascii(shift); my %options = @_; my $concat = $options{'-concat'}; @@ -49,7 +51,7 @@ sub search { die $options{'-die'}."\n" if defined $options{'-die'}; die $lists->error; } - return map { { list => $_->get_value('fvl') + return map { { list => email_to_unicode($_->get_value('fvl')) , isactive => $_->get_value('fripostIsStatusActive') eq 'TRUE' , description => concat($concat, $_->get_value('description')) , transport => $_->get_value('fripostListManager') @@ -73,9 +75,8 @@ sub replace { $l->{description} = explode ($options{'-concat'}, $l->{description}) if defined $l->{description}; - my ($l2,$d) = split /\@/, $l->{list}, 2; - eval { + my ($l2,$d) = split /\@/, email_to_ascii($l->{list}), 2; &_is_valid($l); my $l3 = { fripostIsStatusActive => $l->{isactive} ? 'TRUE' : 'FALSE' , description => $l->{description} }; @@ -103,14 +104,14 @@ sub add { $l->{description} = explode ($options{'-concat'}, $l->{description}) if defined $l->{description}; - my ($l2,$d) = split /\@/, $l->{list}, 2; eval { + my ($l2,$d) = split /\@/, email_to_ascii($l->{list}), 2; die "Missing list name\n" if $l eq ''; must_attrs( $l, 'transport' ); &_is_valid($l); die "‘".$l->{list}."‘ alread exists\n" - if $self->local->exists($l2,$d,%options); + if $self->local->exists($l->{list},%options); my %attrs = ( objectClass => 'FripostVirtualList' , fripostIsStatusActive => $l->{isactive} ? 'TRUE' : 'FALSE' @@ -143,7 +144,7 @@ sub add { } -=item B (I, I, I) +=item B (I, I) Delete the given list. Note: this will NOT wipe the archives off the disk, but merely delete the list entry in the LDAP directory. @@ -152,8 +153,7 @@ disk, but merely delete the list entry in the LDAP directory. sub delete { my $self = shift; - my $l = shift; - my $d = shift; + my ($l,$d) = split /\@/, email_to_ascii(shift), 2; my %options = @_; my $mesg = $self->ldap->delete( "fvl=$l,fvd=$d,".$self->suffix ); @@ -184,7 +184,7 @@ The B<-die> option, if present, overides LDAP croaks and errors. sub _is_valid { my $l = shift; must_attrs( $l, qw/list isactive/ ); - email_valid( $l->{list}, -exact => 1 ); + $l->{list} = email_valid( $l->{list}, -exact => 1 ); die "Invalid transport: ‘".$l->{transport}."‘\n" if defined $l->{transport} and -- cgit v1.2.3