aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki/UserInfo.pm
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-04-24 23:09:26 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-04-24 23:09:26 +0000
commit13e3bf867157226076fcc14a0d3875fd129a66c7 (patch)
tree173e406ad45bd94118d0400f7be91703be8cf0c7 /IkiWiki/UserInfo.pm
parent698aeb20168b7e22a2ce3618a28fdee32ed4a417 (diff)
downloadikiwiki-13e3bf867157226076fcc14a0d3875fd129a66c7.tar
ikiwiki-13e3bf867157226076fcc14a0d3875fd129a66c7.tar.gz
commit changes for email subscriptions
Diffstat (limited to 'IkiWiki/UserInfo.pm')
-rw-r--r--IkiWiki/UserInfo.pm84
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