]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/notifyemail.pm
Added a comment
[git.ikiwiki.info.git] / IkiWiki / Plugin / notifyemail.pm
index 9f5a255aeed8487153fee9b0cd63f3f72a0d3e8e..079bb10d4fb7eda121916976ddd0945934a4557b 100644 (file)
@@ -34,7 +34,7 @@ sub formbuilder (@) {
        }
        elsif ($form->submitted eq "Save Preferences" && $form->validate &&
               defined $form->field("subscriptions")) {
-               setsubscriptions($username, $form->field('subscriptions'));
+               setsubscriptions($username, scalar $form->field('subscriptions'));
        }
 }
 
@@ -62,9 +62,23 @@ sub subscribe ($$) {
                length $pagespec ? $pagespec." or ".$addpagespec : $addpagespec);
 }
 
+# Called by other plugins to subscribe an email to a pagespec.
+sub anonsubscribe ($$) {
+       my $email=shift;
+       my $addpagespec=shift;
+       if (IkiWiki::Plugin::passwordauth->can("anonuser")) {
+               my $user=IkiWiki::Plugin::passwordauth::anonuser($email);
+               if (! defined $user) {
+                       error(gettext("Cannot subscribe your email address without logging in."));
+               }
+               subscribe($user, $addpagespec);
+       }
+}
+
 sub notify (@) {
        my @files=@_;
        return unless @files;
+       return if $config{rebuild};
 
        eval q{use Mail::Sendmail};
        error $@ if $@;
@@ -123,11 +137,20 @@ sub notify (@) {
                        if (pagetype($file) eq '_comment') {
                                $subject=gettext("comment notification:")." ".$pagedesc;
                        }
+                       my $prefsurl=IkiWiki::cgiurl_abs(do => 'prefs');
+                       if (IkiWiki::Plugin::passwordauth->can("anonusertoken")) {
+                               my $token=IkiWiki::Plugin::passwordauth::anonusertoken($userinfo->{$user});
+                               $prefsurl=IkiWiki::cgiurl_abs(
+                                       do => 'tokenauth',
+                                       name => $user,
+                                       token => $token,
+                               ) if defined $token;
+                       }
                        my $template=template("notifyemail.tmpl");
                        $template->param(
                                wikiname => $config{wikiname},
                                url => $url,
-                               prefsurl => IkiWiki::cgiurl_abs(do => 'prefs'),
+                               prefsurl => $prefsurl,
                                showcontent => $showcontent,
                                content => $content,
                        );