]> git.p6c8.net - selfforum.git/commitdiff
fo_voting.pl added
authorndparker <>
Wed, 25 Apr 2001 18:21:33 +0000 (18:21 +0000)
committerndparker <>
Wed, 25 Apr 2001 18:21:33 +0000 (18:21 +0000)
selfforum-cgi/user/fo_voting.pl [new file with mode: 0644]

diff --git a/selfforum-cgi/user/fo_voting.pl b/selfforum-cgi/user/fo_voting.pl
new file mode 100644 (file)
index 0000000..284857e
--- /dev/null
@@ -0,0 +1,114 @@
+#!/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

patrick-canterino.de