<?php
// File: $Id: wl-rating.php,v 1.6 2001/12/04 00:50:30 gregorrothfuss Exp $ $Name: $
// ----------------------------------------------------------------------
// POST-NUKE Content Management System
// Copyright (C) 2001 by the Post-Nuke Development Team.
// http://www.postnuke.com/
// ----------------------------------------------------------------------
// Based on:
// PHP-NUKE Web Portal System - http://phpnuke.org/
// Thatware - http://thatware.org/
// ----------------------------------------------------------------------
// LICENSE
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License (GPL)
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// To read the license please visit http://www.gnu.org/copyleft/gpl.html
// ----------------------------------------------------------------------
// Original Author of file: Francisco Burzi
// Purpose of file:
// ----------------------------------------------------------------------
// 11-30-2001:ahumphr - created file as part of modularistation
/**
* @usedby index
*/
function rateinfo($lid) {
global $pntable, $dbconn;
$column = &$pntable['links_links_column'];
$dbconn->Execute("UPDATE $pntable[links_links] SET $column[hits]=$column[hits]+1 WHERE $column[lid]=$lid");
$result = $dbconn->Execute("SELECT $column[url] FROM $pntable[links_links] WHERE $column[lid]=$lid");
list($url) = $result->fields;
Header('Location: '.$url);
}
/**
*@usedby index, navigation
*/
function addrating($ratinglid, $ratinguser, $rating, $ratinghost_name, $ratingcomments) {
global $cookie, $user, $pntable, $dbconn;
$passtest = "yes";
include("header.php");
if (!(authorised(0, 'Web links::', '::', ACCESS_READ))) {
echo _LINKSNOAUTH;
include 'footer.php';
return;
}
include(WHERE_IS_PERSO."config.php");
completevoteheader();
if(is_user($user)) {
$user2 = base64_decode($user);
$cookie = explode(":", $user2);
cookiedecode($user);
$ratinguser = $cookie[1];
} else if ($ratinguser=="outside") {
$ratinguser = "outside";
} else {
$ratinguser = "$anonymous";
}
$column = &$pntable['links_links_column'];
$results3 = $dbconn->Execute("SELECT $column[title] FROM $pntable[links_links] WHERE $column[lid]=$ratinglid");
// FTO Check EOF and databse error
if (!$results3) {
PN_DBMsgError($dbconn, __FILE__, __LINE__, "An error ocurred");
die();
}
while(!$results3->EOF) {
list($title)=$results3->fields;
$ttitle = $title;
$results3->MoveNext();
}
/* Make sure only 1 anonymous from an IP in a single day. */
$ip = getenv("REMOTE_HOST");
if (empty($ip)) {
$ip = getenv("REMOTE_ADDR");
}
/* Check if Rating is Null */
if ($rating=="--") {
$error = "nullerror";
completevote($error);
$passtest = "no";
}
/* Check if Link POSTER is voting (UNLESS Anonymous users allowed to post) */
if ($ratinguser != $anonymous && $ratinguser != "outside") {
$column = &$pntable['links_links_column'];
$result=$dbconn->Execute("SELECT $column[submitter] FROM $pntable[links_links] WHERE $column[lid]=$ratinglid");
// FTO Check EOF and databse error
if (!$result) {
PN_DBMsgError($dbconn, __FILE__, __LINE__, "An error ocurred");
die();
}
while(!$result->EOF) {
list($ratinguserDB)=$result->fields;
$result->MoveNext();
if ($ratinguserDB==$ratinguser) {
$error = "postervote";
completevote($error);
$passtest = "no";
}
}
}
/* Check if REG user is trying to vote twice. */
if ($ratinguser!=$anonymous && $ratinguser != "outside") {
$column = &$pntable['links_votedata_column'];
$results=$dbconn->Execute("SELECT $column[ratinguser] FROM $pntable[links_votedata] WHERE $column[ratinglid]=$ratinglid");
// FTO Check EOF and databse error
if (!$result) {
PN_DBMsgError($dbconn, __FILE__, __LINE__, "An error ocurred");
die();
}
while(!$result->EOF) {
list($ratinguserDB)=$result->fields;
$result->MoveNext();
if ($ratinguserDB==$ratinguser) {
$error = "regflood";
completevote($error);
$passtest = "no";
}
}
}
/* Check if ANONYMOUS user is trying to vote more than once per day. */
if ($ratinguser==$anonymous){
$yesterdaytimestamp = (time()-(86400 * $anonwaitdays));
$ytsDB = Date("Y-m-d H:i:s", $yesterdaytimestamp);
$column = &$pntable['links_votedata_column'];
$result=$dbconn->Execute("select count(*) FROM $pntable[links_votedata] WHERE $column[ratinglid]=$ratinglid AND $column[ratinguser]='$anonymous' AND $column[ratinghostname]='$ip' AND TO_DAYS(NOW()) - TO_DAYS($column[ratingtimestamp]) < $anonwaitdays");
list($anonvotecount) = $result->fields;
if ($anonvotecount >= 1) {
$error = "anonflood";
completevote($error);
$passtest = "no";
}
}
/* Check if OUTSIDE user is trying to vote more than once per day. */
if ($ratinguser=="outside"){
$yesterdaytimestamp = (time()-(86400 * $outsidewaitdays));
$ytsDB = Date("Y-m-d H:i:s", $yesterdaytimestamp);
$column = &$pntable['links_votedata_column'];
$result=$dbconn->Execute("SELECT count(*) FROM $pntable[links_votedata] WHERE $column[ratinglid]=$ratinglid AND $column[ratinguser]='outside' AND $column[ratinghostname]='$ip' AND TO_DAYS(NOW()) - TO_DAYS($column[ratingtimestamp])<$outsidewaitdays");
list($outsidevotecount) = $result->fields;
if ($outsidevotecount >= 1) {
$error = "outsideflood";
completevote($error);
$passtest = "no";
}
}
/* Passed Tests */
if ($passtest == "yes") {
$comment = stripslashes(FixQuotes($comment));
/* All is well. Add to Line Item Rate to DB. */
// FTO : Add SEQ suffix to avoid conflict name with ORACLE
$nextid = $dbconn->GenId("{$pntable['links_votedata']}_SEQ");
$column = &$pntable['links_votedata_column'];
//FTO Use a php date time to stay compatible with
// all databases.
$now=$dbconn->DBTimeStamp(mktime());
$dbconn->Execute("INSERT INTO $pntable[links_votedata] ($column[ratingdbid], $column[ratinglid], $column[ratinguser], $column[rating], $column[ratinghostname], $column[ratingcomments], $column[ratingtimestamp]) VALUES ($nextid,'$ratinglid', '$ratinguser', '$rating', '$ip', '$ratingcomments', $now)");
/* All is well. Calculate Score & Add to Summary (for quick retrieval & sorting) to DB. */
/* NOTE: If weight is modified, ALL links need to be refreshed with new weight. */
/* Running a SQL statement with your modded calc for ALL links will accomplish this. */
$voteresult = $dbconn->Execute("SELECT $column[rating], $column[ratinguser], $column[ratingcomments] FROM $pntable[links_votedata] WHERE $column[ratinglid] = $ratinglid");
$totalvotesDB = $voteresult->PO_RecordCount();
include ("voteinclude.php");
$column = &$pntable['links_links_column'];
$dbconn->Execute("UPDATE $pntable[links_links] SET $column[linkratingsummary]=$finalrating,$column[totalvotes]=$totalvotesDB,$column[totalcomments]=$truecomments WHERE $column[lid]=$ratinglid");
$error = "none";
completevote($error);
}
completevotefooter($ratinglid, $ttitle, $ratinguser);
include("footer.php");
}
/*
* @usedby function addrating
*/
function completevoteheader(){
menu(1);
echo "<br>";
OpenTable();
}
function completevotefooter($lid, $ttitle, $ratinguser) {
global $pntable, $dbconn;
include(WHERE_IS_PERSO."config.php");
$column = &$pntable['links_links_column'];
$result=$dbconn->Execute("SELECT $column[url] FROM $pntable[links_links] WHERE $column[lid]=$lid");
list($url)=$result->fields;
echo "<font class=\"pn-normal\">"._THANKSTOTAKETIME." $sitename. "._LETSDECIDE."</font><br><br><br>";
if ($ratinguser=="outside") {
echo "<center><font class=\"pn-normal\">".WEAPPREACIATE." $sitename!<br><a class=\"pn-normal\" href=\"$url\">"._RETURNTO." $ttitle</a></font><center><br><br>";
$result=$dbconn->Execute("SELECT $column[title] FROM $pntable[links_links] WHERE $column[lid]=$lid");
list($title)=$result->fields;
$ttitle = ereg_replace (" ", "_", $title);
}
echo "<center>";
linkinfomenu($lid,$ttitle);
echo "</center>";
CloseTable();
}
function completevote($error) {
include(WHERE_IS_PERSO."config.php");
if ($error == "none") echo "<center><font class=\"pn-normal\"><b>Your vote is appreciated</b></font></center>";
if ($error == "anonflood") echo "<center><font class=\"pn-normal\"><b>You have already voted for this link in the past $anonwaitdays day(s).</b></font></center><br>";
if ($error == "regflood") echo "<center><font class=\"pn-normal\"><b>Vote for a link only once.<br>All votes are logged and reviewed.</b></font></center><br>";
if ($error == "postervote") echo "<center><font class=\"pn-normal\"><b>You cannot vote on a link you submitted.<br>All votes are logged and reviewed.</b></font></center><br>";
if ($error == "nullerror") echo "<center><font class=\"pn-normal\"><b>No rating selected - no vote tallied</b></font></center><br>";
if ($error == "outsideflood") echo "<center><font class=\"pn-normal\"><b>Only one vote per IP address allowed every $outsidewaitdays day(s).</b></font></center><br>";
}
/**
* @usedby index
*/
function ratelink($lid, $user, $ttitle) {
include("header.php");
if (!(authorised(0, 'Web links::', '::', ACCESS_COMMENT))) {
echo _LINKSNOAUTH;
include 'footer.php';
return;
}
menu(1);
echo "<br>";
OpenTable();
$transfertitle = ereg_replace ("_", " ", $ttitle);
$displaytitle = $transfertitle;
global $cookie, $datetime, $ModName, $modurl;
$ip = getenv("REMOTE_HOST");
if (empty($ip)) {
$ip = getenv("REMOTE_ADDR");
}
echo "<font class=\"pn-normal\"><b>$displaytitle</b></font>"
."<ul>"
."<li><font class=\"pn-sub\">"._RATENOTE1."</font>"
."<li><font class=\"pn-sub\">"._RATENOTE2."</font>"
."<li><font class=\"pn-sub\">"._RATENOTE3."</font>"
."<li><font class=\"pn-sub\">"._RATENOTE4."</font>"
."<li><font class=\"pn-sub\">"._RATENOTE5."</font>";
if(is_user($user)) {
$user2 = base64_decode($user);
$cookie = explode(":", $user2);
echo "<li><font class=\"pn-sub\">"._YOUAREREGGED."</font>"
."<li><font class=\"pn-sub\">"._FEELFREE2ADD."</font>";
cookiedecode($user);
$name = $cookie[1];
} else {
echo "<li><font class=\"pn-sub\">"._YOUARENOTREGGED."</font>"
."<li><font class=\"pn-sub\">"._IFYOUWEREREG."</font>";
$name = "$anonymous";
}
echo "</ul>"
."<form method=\"post\" action=\"${modurl}&req=addrating\">"
."<table border=\"0\" cellpadding=\"1\" cellspacing=\"0\" width=\"100%\">"
."<tr><td width=\"25\" nowrap></td>"
."<tr><td width=\"25\" nowrap></td><td width=\"550\">"
."<input type=\"hidden\" name=\"ratinglid\" value=\"$lid\">"
."<input type=\"hidden\" name=\"ratinguser\" value=\"$name\">"
."<input type=\"hidden\" name=\"ratinghost_name\" value=\"$ip\">"
."<font class=\"pn-normal\">"._RATETHISSITE." "
."<select name=\"rating\">"
."<option>--</option>"
."<option>10</option>"
."<option>9</option>"
."<option>8</option>"
."<option>7</option>"
."<option>6</option>"
."<option>5</option>"
."<option>4</option>"
."<option>3</option>"
."<option>2</option>"
."<option>1</option>"
."</select></font>"
."<font class=\"pn-sub\"><input type=\"submit\" value=\""._RATETHISSITE."\"></font>"
."<br><br>";
if(is_user($user)) {
echo "<font class=\"pn-normal\"><b>"._COMMENTS.":</b></font><br><textarea wrap=\"virtual\" cols=\"50\" rows=\"10\" name=\"ratingcomments\"></textarea>"
."<br><br><br>"
."</font></td>";
} else {
echo"<input type=\"hidden\" name=\"ratingcomments\" value=\"\">";
}
echo "</tr></table></form>";
echo "<center>";
linkfooterchild($lid);
echo "</center>";
CloseTable();
include("footer.php");
}
?>