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}) {
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};
error("Failed to load plugin $mod: $@");
}
}
+
+ if (exists $hooks{checkconfig}) {
+ foreach my $id (keys %{$hooks{checkconfig}}) {
+ $hooks{checkconfig}{$id}{call}->();
+ }
+ }
} #}}}
sub error ($) { #{{{
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