From: ndparker <> Date: Wed, 25 Apr 2001 18:21:33 +0000 (+0000) Subject: fo_voting.pl added X-Git-Url: https://git.p6c8.net/selfforum.git/commitdiff_plain/05fece1bcf0d5913f64e425d1455cbac8291cb72?ds=sidebyside fo_voting.pl added --- diff --git a/selfforum-cgi/user/fo_voting.pl b/selfforum-cgi/user/fo_voting.pl new file mode 100644 index 0000000..284857e --- /dev/null +++ b/selfforum-cgi/user/fo_voting.pl @@ -0,0 +1,114 @@ +#!/usr/bin/perl -w + +################################################################################ +# # +# File: user/fo_voting.pl # +# # +# Authors: André Malo , 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