| Current Path : /home/wirbesti/unwaehlbar.ch/ |
| Current File : /home/wirbesti/unwaehlbar.ch/vote.php |
<?php
require_once 'ip.php';
require_once 'PopularityProvider.php';
require_once 'DAO/vote.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);
set_error_handler(function ($level, $message, $file = '', $line = 0) {
throw new ErrorException($message, 0, $level, $file, $line);
}
);
require_once "settings.config.php";
require_once "DBConnection.php";
// Database Connection Code
$database = new DbConnection($config);
$voteObj = new Vote($database);
$vote = intval($_GET['vote']);
$id = intval($_GET['id']);
$date = $heute = date("Y-m-d H:i:s");
if (!isset($_GET['ut'])) {
http_response_code(400);
return;
}
$upvotes = intval($_GET['ut']);
$downvotes = intval($_GET['dt']);
$totalFromDB = $voteObj->getTotalVoteCount($id, $database);
if ($totalFromDB != ($upvotes + $downvotes)) {
http_response_code(400);
return;
}
$ipaddress = getIPAddress();
$voteObj->deactivateVotesIfFraudAttemptDetected(
$id, $upvotes, $downvotes, $vote,
$database
);
$upDeactivated = $voteObj->isVoteDeactivated('up', $id, $database);
$downDeactivated = $voteObj->isVoteDeactivated('down', $id, $database);
$isVoteAllowed = $vote == 1 && !$upDeactivated
|| $vote == -1 && !$downDeactivated;
$previousVotes = $voteObj->getVoteCountWithSameIpAddress($id, $database);
echo 'Referrer = '.$_SERVER['HTTP_REFERER']."<br/>";
if ($previousVotes == 0 && $isVoteAllowed) {
$data = [
'created' => $date,
'id' => $id,
'ip' => $ipaddress,
'vote' => $vote
];
if (!$voteObj->wasVotedOnInSameDomain($id, $database)) {
$insertSQL = "INSERT into `vote` (`created`,`politicianid`,`ipaddress`,`vote`) VALUES (:created,:id,:ip,:vote)";
$getpoliticians = $database->dbc->prepare($insertSQL);
$getpoliticians->execute($data);
if (($upDeactivated && $vote == -1)
|| ($downDeactivated != null && $vote == 1)
) {
$voteObj->reactivateVotesIfPossible($id, $upvotes, $downvotes, $vote, $database);
}
http_response_code(200);
} else {
http_response_code(400);
}
} elseif ($previousVotes == 0) {
// Nothing to do - Vote is deactivateds
} else {
$statement = $database->dbc->prepare("UPDATE `vote` SET `vote`= :vote, `modified` = :date WHERE `politicianid` = :politicianid AND `ipaddress` = :ipaddress");
$statement->bindParam(":politicianid", $id);
$statement->bindParam(":ipaddress", $ipaddress);
$statement->bindParam(":vote", $vote);
$statement->bindParam(":date", $date);
$statement->execute();
}
?>