web commit by joey
[ikiwiki.git] / IkiWiki.pm
index e3bdc8d83c8739b9e3a140788026aca2d58ab306..960d26de93f94e4e95a44098b2b616a3b089f5a2 100644 (file)
@@ -7,7 +7,7 @@ use File::Spec;
 use HTML::Template;
 
 use vars qw{%config %links %oldlinks %oldpagemtime %pagectime
-            %renderedfiles %pagesources %depends %plugins};
+            %renderedfiles %pagesources %depends %hooks};
 
 sub checkconfig () { #{{{
        if ($config{cgi} && ! length $config{url}) {
@@ -16,9 +16,6 @@ sub checkconfig () { #{{{
        if ($config{rss} && ! length $config{url}) {
                error("Must specify url to wiki with --url when using --rss\n");
        }
-       if ($config{hyperestraier} && ! length $config{url}) {
-               error("Must specify --url when using --hyperestraier\n");
-       }
        
        $config{wikistatedir}="$config{srcdir}/.ikiwiki"
                unless exists $config{wikistatedir};
@@ -40,6 +37,12 @@ sub checkconfig () { #{{{
                        error("Failed to load plugin $mod: $@");
                }
        }
+
+       if (exists $hooks{checkconfig}) {
+                foreach my $id (keys %{$hooks{checkconfig}}) {
+                        $hooks{checkconfig}{$id}{call}->();
+                }
+        }
 } #}}}
 
 sub error ($) { #{{{
@@ -387,12 +390,14 @@ sub globlist_match ($$) { #{{{
        return 0;
 } #}}}
 
-sub register_plugin ($$$) { # {{{
-       my $type=shift;
-       my $command=shift;
-       my $function=shift;
+sub hook (@) { # {{{
+       my %param=@_;
+       
+       if (! exists $param{type} || ! ref $param{call} || ! exists $param{id}) {
+               error "hook requires type, call, and id parameters";
+       }
        
-       $plugins{$type}{$command}=$function;
+       $hooks{$param{type}}{$param{id}}=\%param;
 } # }}}
 
 1