fix comment matching pagespecs
authorJoey Hess <joey@kitenet.net>
Fri, 7 May 2010 17:59:08 +0000 (13:59 -0400)
committerJoey Hess <joey@kitenet.net>
Fri, 7 May 2010 18:02:30 +0000 (14:02 -0400)
test isinternal first, because match_glob with internal => 1 also returns
non-internal pages that match. This order should also be faster.

Remove test to see if pagesources is set. isinternal will not succeed if it
is not.

IkiWiki/Plugin/comments.pm
debian/changelog

index 5d7176a8c7a4da8f90f01e026b660e1c4ff571bb..348d91fd85ae567e5288f1306dcf83062f34e277 100644 (file)
@@ -904,28 +904,30 @@ sub match_comment ($$;@) {
        my $page = shift;
        my $glob = shift;
 
-       my $match=match_glob($page, "$glob/*", internal => 1, @_);
-       if ($match && exists $IkiWiki::pagesources{$page}) {
-               my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page});
-               if (defined $type && $type ne "_comment") {
-                       return IkiWiki::FailReason->new("$page is not a comment");
-               }
+       if (! IkiWiki::isinternal($page)) {
+               return IkiWiki::FailReason->new("$page is not a comment");
+       }
+       my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page});
+       if (defined $type && $type ne "_comment") {
+               return IkiWiki::FailReason->new("$page is not a comment");
        }
-       return $match;
+
+       return match_glob($page, "$glob/*", internal => 1, @_);
 }
 
 sub match_comment_pending ($$;@) {
        my $page = shift;
        my $glob = shift;
-
-       my $match=match_glob($page, "$glob/*", internal => 1, @_);
-       if ($match && $IkiWiki::pagesources{$page}) {
-               my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page});
-               if (defined $type && $type ne "_comment_pending") {
-                       return IkiWiki::FailReason->new("$page is not a pending comment");
-               }
+       
+       if (! IkiWiki::isinternal($page)) {
+               return IkiWiki::FailReason->new("$page is not a pending comment");
        }
-       return $match;
+       my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page});
+       if (defined $type && $type ne "_comment_pending") {
+               return IkiWiki::FailReason->new("$page is not a pending comment");
+       }
+
+       return match_glob($page, "$glob/*", internal => 1, @_);
 }
 
 1
index 7f024a84b923ef1a0ed418d2586e0e1f772971d8..0851a975d5b1905a29123d99d8a52e4c18f993f5 100644 (file)
@@ -6,7 +6,7 @@ ikiwiki (3.20100505) UNRELEASED; urgency=low
     to set <base> when BASEURL or FORCEBAREURL is set.
   * comments: Comments pending moderation are now stored in the srcdir
     alongside accepted comments, but with a `._comment_pending` extension.
-  * This allows easier byhand moderation, as the "_pending" need
+    This allows easier byhand moderation, as the "_pending" need
     only be stripped off and the comment be committed to version control.
   * The `comment_pending()` pagespec can be used to match such unmoderated
     comments, which makes it easy to add a feed of them, or a counter