X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FPromulger%2FList.pm;h=5238e99957cb4dc036e4d408b0ca8fe94725ce31;hb=8ad89cb2224232bdaad52a71ccb11e6855e59463;hp=eda923cfccb9b8ff2aa9fcb6e3161cfe0280c27b;hpb=e93133c754102001828fe572104327f7fe6aead5;p=p5sagit%2FPromulger.git diff --git a/lib/Promulger/List.pm b/lib/Promulger/List.pm index eda923c..5238e99 100644 --- a/lib/Promulger/List.pm +++ b/lib/Promulger/List.pm @@ -48,22 +48,24 @@ sub resolve { sub subscribe { my ($self, $new) = @_; - return if $self->subscribers->at($new); - $self->subscribers->put($new, 1); - $self->store(find_path_for($self->name)); + return if $self->subscribers->{$new}; + $self->subscribers->{$new} = 1; + $self->store(find_path_for($self->listname)->stringify); + return 1; } sub unsubscribe { my ($self, $ex) = @_; - return unless $self->subscribers->at($ex); - $self->subscribers->delete($ex); - $self->store(find_path_for($self->name)); + return unless exists $self->subscribers->{$ex}; + delete $self->subscribers->{$ex}; + $self->store(find_path_for($self->listname)->stringify); + return 1; } # XXX implement ACLs and other shinies -- apeiron, 2010-03-13 sub accept_posts_from { my ($self, $sender) = @_; - return grep { $sender eq $_ } @{$self->subscribers}; + return grep { $sender eq $_ } keys %{$self->subscribers}; } sub setup { @@ -102,7 +104,7 @@ sub delete { $_ !~ /^$list_aliases[1]:/ } @aliases; - unlink find_path_for($self->listname); + unlink find_path_for($self->listname)->stringify; } sub find_path_for {