diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-04-24 23:09:26 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-04-24 23:09:26 +0000 |
commit | 13e3bf867157226076fcc14a0d3875fd129a66c7 (patch) | |
tree | 173e406ad45bd94118d0400f7be91703be8cf0c7 /IkiWiki/UserInfo.pm | |
parent | 698aeb20168b7e22a2ce3618a28fdee32ed4a417 (diff) | |
download | ikiwiki-13e3bf867157226076fcc14a0d3875fd129a66c7.tar ikiwiki-13e3bf867157226076fcc14a0d3875fd129a66c7.tar.gz |
commit changes for email subscriptions
Diffstat (limited to 'IkiWiki/UserInfo.pm')
-rw-r--r-- | IkiWiki/UserInfo.pm | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/IkiWiki/UserInfo.pm b/IkiWiki/UserInfo.pm new file mode 100644 index 000000000..f4e261563 --- /dev/null +++ b/IkiWiki/UserInfo.pm @@ -0,0 +1,84 @@ +#!/usr/bin/perl + +use warnings; +use strict; +use Storable; + +package IkiWiki; + +sub userinfo_retrieve () { #{{{ + my $userinfo=eval{ Storable::lock_retrieve("$config{wikistatedir}/userdb") }; + return $userinfo; +} #}}} + +sub userinfo_store ($) { #{{{ + my $userinfo=shift; + + my $oldmask=umask(077); + my $ret=Storable::lock_store($userinfo, "$config{wikistatedir}/userdb"); + umask($oldmask); + return $ret; +} #}}} + +sub userinfo_get ($$) { #{{{ + my $user=shift; + my $field=shift; + + my $userinfo=userinfo_retrieve(); + if (! defined $userinfo || + ! exists $userinfo->{$user} || ! ref $userinfo->{$user} || + ! exists $userinfo->{$user}->{$field}) { + return ""; + } + return $userinfo->{$user}->{$field}; +} #}}} + +sub userinfo_set ($$$) { #{{{ + my $user=shift; + my $field=shift; + my $value=shift; + + my $userinfo=userinfo_retrieve(); + if (! defined $userinfo || + ! exists $userinfo->{$user} || ! ref $userinfo->{$user}) { + return ""; + } + + $userinfo->{$user}->{$field}=$value; + return userinfo_store($userinfo); +} #}}} + +sub userinfo_setall ($$) { #{{{ + my $user=shift; + my $info=shift; + + my $userinfo=userinfo_retrieve(); + if (! defined $userinfo) { + $userinfo={}; + } + $userinfo->{$user}=$info; + return userinfo_store($userinfo); +} #}}} + +sub is_admin ($) { #{{{ + my $user_name=shift; + + return grep { $_ eq $user_name } @{$config{adminuser}}; +} #}}} + +sub page_subscribers (@) { #{{{ + my @ret; + my $userinfo=userinfo_retrieve(); + foreach my $user (keys %{$userinfo}) { + if (exists $user->{subscriptions} && + length $user->{subscriptions} && + exists $user->{email} && + length $user->{email} && + grep { globmatch($_, $user->{subscriptions}) } @_) { + push @ret, $user->{email}; + } + } + return @ret; +} #}}} + +1 |