]> git.p6c8.net - selfforum.git/blobdiff - selfforum-cgi/user/fo_voting.pl
Admin.pm: hide_posting()/recover_posting(): thread and forum XML files are now locked...
[selfforum.git] / selfforum-cgi / user / fo_voting.pl
index 7dddc53b2451a545640e944ce1b0072b3b2fe896..63ea716967ad6a078ad8ef9a5fcdab8b2244a4b8 100644 (file)
@@ -4,7 +4,7 @@
 #                                                                              #
 # File:        user/fo_voting.pl                                               #
 #                                                                              #
-# Authors:     AndrĂ© Malo <nd@o3media.de>, 2001-04-23                          #
+# Authors:     AndrĂ© Malo <nd@o3media.de>                                      #
 #                                                                              #
 # Description: vote a posting, return the posting view                         #
 #                                                                              #
@@ -19,19 +19,23 @@ use vars qw(
 );
 
 BEGIN {
-  my $null = $0; $null =~ s/\\/\//g; # for win :-(
-  $Bin     = ($null =~ /^(.*)\/.*$/)? $1 : '.';
-  $Shared  = "$Bin/../shared";
-  $Config  = "$Bin/config";
-  $Script  = ($null =~ /^.*\/(.*)$/)? $1 : $null;
-
-#  my $null = $0; #$null =~ s/\\/\//g; # for win :-(
+#  my $null = $0; $null =~ s/\\/\//g; # for win :-(
 #  $Bin     = ($null =~ /^(.*)\/.*$/)? $1 : '.';
-#  $Config  = "$Bin/../../../cgi-config/devforum";
-#  $Shared  = "$Bin/../../../cgi-shared";
+#  $Shared  = "$Bin/../shared";
+#  $Config  = "$Bin/config";
 #  $Script  = ($null =~ /^.*\/(.*)$/)? $1 : $null;
+
+  my $null = $0;
+  $Bin     = ($null =~ /^(.*)\/.*$/)? $1 : '.';
+  $Config  = "$Bin/../../cgi-config/forum";
+  $Shared  = "$Bin/../../cgi-shared";
+  $Script  = ($null =~ /^.*\/(.*)$/)? $1 : $null;
 }
 
+# setting umask, remove or comment it, if you don't need
+#
+umask 000;
+
 use lib $Shared;
 use CGI::Carp qw(fatalsToBrowser);
 
@@ -40,9 +44,22 @@ use Conf::Admin;
 use Posting::Cache;
 use Template::Posting;
 
-use CGI qw(param header remote_addr);
+use CGI qw(
+  param
+  header
+  remote_addr
+  request_method
+);
 
-print header(-type => 'text/html');
+################################################################################
+#
+# Version check
+#
+# last modified:
+#    $Date$ (GMT)
+# by $Author$
+#
+sub VERSION {(q$Revision$ =~ /([\d.]+)\s*$/)[0] or '0.0'}
 
 my $conf = read_script_conf ($Config, $Shared, $Script);
 
@@ -63,51 +80,61 @@ my $voted;
 
 my ($tid, $mid) = map {$_ || 0} split /;/ => $fup, 2;
 
-$tid = ($tid=~/(\d+)/)[0] || 0;
-$mid = ($mid=~/(\d+)/)[0] || 0;
+$tid = (defined $tid and $tid=~/(\d+)/)? $1: 0;
+$mid = (defined $mid and $mid=~/(\d+)/)? $1: 0;
+
+if ($tid and $mid and $unid) {
 
-my $cache = new Posting::Cache ($conf->{files}->{cacheFile});
-my $hash;
+  print header(-type => 'text/html');
 
-if ($hash = $cache -> pick ({thread => $tid, posting => $mid})) {
-  unless (exists ($hash->{voteRef}->{$unid})) {
+  my $cache = new Posting::Cache ($conf->{files}->{cachePath});
+  my $hash;
 
-    $voted=1;
-    my $ip = remote_addr;
-    my %iphash = map {
-      $hash->{voteRef}->{$_}->{IP} => $hash->{voteRef}->{$_}->{time}
-    } keys %{$hash->{voteRef}};
+  if ($hash = $cache -> pick ({thread => $tid, posting => $mid})) {
+    unless (exists ($hash->{voteRef}->{$unid})) {
 
-    my $time = time;
+      $voted=1;
+      my $ip = remote_addr;
+      my %iphash = map {
+        $hash->{voteRef}->{$_}->{IP} => $hash->{voteRef}->{$_}->{time}
+      } keys %{$hash->{voteRef}};
 
-    unless (exists($iphash{$ip}) and $iphash{$ip}>($time-$adminDefault->{Voting}->{voteLock}*60)) {
-      $cache -> add_voting (
-        { posting => $mid,
-          thread  => $tid,
-          IP      => $ip,
-          time    => $time,
-          ID      => $unid
+      my $time = time;
+
+      unless (exists($iphash{$ip}) and $iphash{$ip}>($time-$adminDefault->{Voting}->{voteLock}*60)) {
+        if (request_method eq 'POST') {
+          $cache -> add_voting (
+            { posting => $mid,
+              thread  => $tid,
+              IP      => $ip,
+              time    => $time,
+              ID      => $unid
+            }
+          );# or die $cache->error;
         }
-      ) or die $cache->error;
+      }
     }
   }
-}
 
-print_posting_as_HTML (
-  $message_path,
-  $show_posting -> {templateFile},
-  { assign       => $show_posting -> {assign},
-    thread       => $tid,
-    posting      => $mid,
-    adminDefault => $adminDefault,
-    messages     => $conf -> {template} -> {messages},
-    form         => $show_posting -> {form},
-    cgi          => $cgi,
-    tree         => $tree,
-    voted        => $voted || '',
-    cachefile    => $conf -> {files} -> {cacheFile}
-  }
-);
+  print_posting_as_HTML (
+    $message_path,
+    $show_posting -> {templateFile},
+    { assign       => $show_posting -> {assign},
+      thread       => $tid,
+      posting      => $mid,
+      adminDefault => $adminDefault,
+      messages     => $conf -> {template} -> {messages},
+      form         => $show_posting -> {form},
+      cgi          => $cgi,
+      tree         => $tree,
+      voted        => $voted || '',
+      cachepath    => $conf -> {files} -> {cachePath}
+    }
+  );
+}
+else {
+  print header(-status => '204 No Response');
+}
 
 #
 #

patrick-canterino.de