+#!/usr/bin/perl -w
+
+################################################################################
+# #
+# File: user/fo_voting.pl #
+# #
+# Authors: André Malo <nd@o3media.de>, 2001-04-23 #
+# #
+# Description: vote a posting, return the posting view #
+# #
+################################################################################
+
+use strict;
+use vars qw(
+ $Bin
+ $Shared
+ $Script
+ $Config
+);
+
+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 :-(
+ $Bin = ($null =~ /^(.*)\/.*$/)? $1 : '.';
+ $Config = "$Bin/../../../cgi-config/devforum";
+ $Shared = "$Bin/../../../cgi-shared";
+ $Script = ($null =~ /^.*\/(.*)$/)? $1 : $null;
+}
+
+use lib $Shared;
+use CGI::Carp qw(fatalsToBrowser);
+
+use Conf;
+use Conf::Admin;
+use Posting::Cache;
+use Template::Posting;
+
+use CGI qw(param header remote_addr);
+
+print header(-type => 'text/html');
+
+my $conf = read_script_conf ($Config, $Shared, $Script);
+
+my $show = $conf -> {show};
+my $show_forum = $show -> {Forum};
+my $show_posting = $show -> {Posting};
+my $cgi = $show -> {assign} -> {cgi};
+my $tree = $show -> {assign} -> {thread};
+my $adminDefault = read_admin_conf ($conf -> {files} -> {adminDefault});
+
+my $forum_file = $conf -> {files} -> {forum};
+my $message_path = $conf -> {files} -> {messagePath};
+
+my $formdata = $show_posting -> {form} -> {data};
+my $fup = param ($formdata -> {followUp} -> {name}) || '';
+my $unid = param ($formdata -> {uniqueID} -> {name}) || '';
+my $voted;
+
+my ($tid, $mid) = map {$_ || 0} split /;/ => $fup, 2;
+
+$tid = ($tid=~/(\d+)/)[0] || 0;
+$mid = ($mid=~/(\d+)/)[0] || 0;
+
+my $cache = new Posting::Cache ($conf->{files}->{cacheFile});
+my $hash;
+
+if ($hash = $cache -> pick ({thread => $tid, posting => $mid})) {
+ unless (exists ($hash->{voteRef}->{$unid})) {
+
+ $voted=1;
+ my $ip = remote_addr;
+ my %iphash = map {
+ $hash->{voteRef}->{$_}->{IP} => $hash->{voteRef}->{$_}->{time}
+ } keys %{$hash->{voteRef}};
+
+ my $time = time;
+
+ 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
+ }
+ ) 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}
+ }
+);
+
+#
+#
+### end of fo_voting.pl ########################################################
\ No newline at end of file