Add Perl Best Practices .perltidyrc.
[matthijs/upstream/blosxom.git] / blosxom.cgi
index 5d2d6e6da1d07c8e50ccc3d2684e1a2763755a60..7c669dde565a2798204ff7179dd75d1183c54388 100755 (executable)
@@ -48,17 +48,18 @@ $show_future_entries = 0;
 # --- Plugins (Optional) -----
 
 # File listing plugins blosxom should load
-# (if empty blosxom will load all plugins in $plugin_path directories)
+# (if empty blosxom will load all plugins in $plugin_dir and $plugin_path directories)
 $plugin_list = "";
 
 # Where are my plugins kept?
-# List of directories, separated by ';' on windows, ':' everywhere else
-$plugin_path = "";
+$plugin_dir = "";
 
 # Where should my plugins keep their state information?
-$plugin_state_dir = "";
+$plugin_state_dir = "$plugin_dir/state";
 
-#$plugin_state_dir = "/var/lib/blosxom/state";
+# Additional plugins location
+# List of directories, separated by ';' on windows, ':' everywhere else
+$plugin_path = "";
 
 # --- Static Rendering -----
 
@@ -244,13 +245,12 @@ while (<DATA>) {
 
 # Plugins: Start
 my $path_sep = $^O eq 'MSWin32' ? ';' : ':';
-my @plugin_dirs = split /$path_sep/, ( $plugin_path || $plugin_dir );
+my @plugin_dirs = split /$path_sep/, $plugin_path;
+unshift @plugin_dirs, $plugin_dir;
 my @plugin_list = ();
 my %plugin_hash = ();
 
 # If $plugin_list is set, read plugins to use from that file
-$plugin_list = "$config_dir/$plugin_list"
-    if $plugin_list && $plugin_list !~ m!^\s*/!;
 if ( $plugin_list and -r $plugin_list and $fh->open("< $plugin_list") ) {
     @plugin_list = map { chomp $_; $_ } grep { /\S/ && !/^#/ } <$fh>;
     $fh->close;
@@ -291,8 +291,10 @@ foreach my $plugin (@plugin_list) {
      # For Blosxom::Plugin::Foo style plugins, we need to use a string require
         eval "require $plugin_name";
     }
-    else {
-        eval { require $plugin };
+    else
+    { # we try first to load from $plugin_dir before attempting from $plugin_path
+        eval        { require "$plugin_dir/$plugin" }
+            or eval { require $plugin };
     }
 
     if ($@) {
@@ -453,7 +455,7 @@ else {
     my $content_type = ( &$template( $path_info, 'content_type', $flavour ) );
     $content_type =~ s!\n.*!!s;
 
-    $content_type =~ s/(\$\w+(?:::)?\w*)/"defined $1 ? $1 : ''"/gee;
+    $content_type =~ s/(\$\w+(?:::\w+)*)/"defined $1 ? $1 : ''"/gee;
     $header = { -type => $content_type };
 
     print generate( 'dynamic', $path_info,
@@ -502,7 +504,7 @@ sub generate {
 
         package blosxom;
         my $template = shift;
-        $template =~ s/(\$\w+(?:::)?\w*)/"defined $1 ? $1 : ''"/gee;
+        $template =~ s/(\$\w+(?:::\w+)*)/"defined $1 ? $1 : ''"/gee;
         return $template;
     };
 
@@ -692,16 +694,16 @@ sub nice_date {
     my ($unixtime) = @_;
 
     my $c_time = CORE::localtime($unixtime);
-    my ( $dw, $mo, $da, $hr, $min, $yr )
+    my ( $dw, $mo, $da, $hr, $min, $sec, $yr )
         = ( $c_time
-            =~ /(\w{3}) +(\w{3}) +(\d{1,2}) +(\d{2}):(\d{2}):\d{2} +(\d{4})$/
+            =~ /(\w{3}) +(\w{3}) +(\d{1,2}) +(\d{2}):(\d{2}):(\d{2}) +(\d{4})$/
         );
     $ti = "$hr:$min";
     $da = sprintf( "%02d", $da );
     my $mo_num = $month2num{$mo};
 
     my $offset
-        = timegm( 00, $min, $hr, $da, $mo_num - 1, $yr - 1900 ) - $unixtime;
+        = timegm( $sec, $min, $hr, $da, $mo_num - 1, $yr - 1900 ) - $unixtime;
     my $utc_offset = sprintf( "%+03d", int( $offset / 3600 ) )
         . sprintf( "%02d", ( $offset % 3600 ) / 60 );