X-Git-Url: https://git.p6c8.net/selfforum.git/blobdiff_plain/05fece1bcf0d5913f64e425d1455cbac8291cb72..8fc396c5b6c1d6d0f5fad1425a6cf97ac2fc0342:/selfforum-cgi/user/fo_voting.pl?ds=sidebyside diff --git a/selfforum-cgi/user/fo_voting.pl b/selfforum-cgi/user/fo_voting.pl index 284857e..63ea716 100644 --- a/selfforum-cgi/user/fo_voting.pl +++ b/selfforum-cgi/user/fo_voting.pl @@ -4,7 +4,7 @@ # # # File: user/fo_voting.pl # # # -# Authors: André Malo , 2001-04-23 # +# Authors: André Malo # # # # Description: vote a posting, return the posting view # # # @@ -25,13 +25,17 @@ BEGIN { # $Config = "$Bin/config"; # $Script = ($null =~ /^.*\/(.*)$/)? $1 : $null; - my $null = $0; #$null =~ s/\\/\//g; # for win :-( + my $null = $0; $Bin = ($null =~ /^(.*)\/.*$/)? $1 : '.'; - $Config = "$Bin/../../../cgi-config/devforum"; - $Shared = "$Bin/../../../cgi-shared"; + $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'); +} # #