# #
# 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 #
# #
);
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);
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);
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');
+}
#
#