The following files exists in this folder. Click to view.
functions.php187 lines UTF-8 Unix (LF) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
<?php
date_default_timezone_set('CET');
require_once('databaseconnection.php');
function sectotime(int $seconds): string //!ChatGPT skapade denna function! gör om sekunder till läsbart format i framtiden
{
$start = new DateTime('now');
$end = (clone $start)->add(new DateInterval("PT{$seconds}S"));
$diff = $start->diff($end);
$parts = [];
if ($diff->y > 0) {
$parts[] = $diff->y . 'y';
$parts[] = $diff->m . 'm';
$parts[] = $diff->d . 'd';
} elseif ($diff->m > 0) {
$parts[] = $diff->m . 'm';
$parts[] = $diff->d . 'd';
} elseif ($diff->d > 0) {
$parts[] = $diff->d . 'd';
}
$time = sprintf(
'%02d:%02d:%02d',
$diff->h,
$diff->i,
$diff->s
);
return ($parts ? implode('-', $parts) . ' ' : '') . $time;
}
function generateFixedLengthCode(int $id, int $length = 6): string { //Frågade ChatGPT om en fuction för att göra om ett unikt id till en unik kod
$characters = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
$base = strlen($characters);
// Convert ID to Base62
$code = '';
do {
$code = $characters[$id % $base] . $code;
$id = intdiv($id, $base);
} while ($id > 0);
// If code is shorter than desired length, add random chars at the end
while (strlen($code) < $length) {
$code .= $characters[random_int(0, $base - 1)];
}
// If code is longer than desired length (rare), trim from the left
if (strlen($code) > $length) {
$code = substr($code, -$length);
}
return $code;
}
function playercount(int $ladderId){ //Ger tillbaka antalet spelare i en stege
include('databaseconnection.php');
$sql = "SELECT COUNT(*) FROM Players WHERE ladderId = :ladderId;";
$stm = $pdo->prepare($sql);
$stm->execute(array(':ladderId' => $ladderId));
$res = $stm->fetchColumn();
return $res;
}
function getplayername(int $playerId){ //Ger tillbaka en spelares namn genom ett av deras playerId
include('databaseconnection.php');
$sql = "SELECT userId FROM Players WHERE playerId = :playerId;";
$stm = $pdo->prepare($sql);
$stm->execute(array('playerId' => $playerId));
$res = $stm->fetch(PDO::FETCH_ASSOC);
$sql = "SELECT username FROM Users WHERE userId = :userId;";
$stm = $pdo->prepare($sql);
$stm->execute(array('userId' => $res['userId']));
$res = $stm->fetch(PDO::FETCH_ASSOC);
$username = $res['username'];
return $username;
}
function playerpoints(int $playerId){ //Räknar ut de faktiska poängen en spelare har tillgång till
include('databaseconnection.php');
$sql = "SELECT ladderId FROM Players WHERE playerId = :playerId;";
$stm = $pdo->prepare($sql);
$stm->execute(array('playerId' => $playerId));
$ladderId = $stm->fetch(PDO::FETCH_ASSOC);
$sql = "SELECT startingpoints FROM Ladders WHERE ladderId = :ladderId;";
$stm = $pdo->prepare($sql);
$stm->execute(array('ladderId' => $ladderId['ladderId']));
$startingpoints = $stm->fetch(PDO::FETCH_ASSOC);
$return = $startingpoints['startingpoints'];
$sql = "SELECT COALESCE(SUM(challengerpoints), 0) AS challengerpoints FROM Matches WHERE challengerId = :playerId AND status NOT IN ('declined', 'stopped')";
$stm = $pdo->prepare($sql);
$stm->execute(['playerId' => $playerId]);
$res = $stm->fetch(PDO::FETCH_ASSOC);
$return -= $res['challengerpoints'];
$sql = "SELECT COALESCE(SUM(defenderpoints), 0) AS defenderpoints FROM Matches WHERE defenderId = :playerId AND status NOT IN ('request', 'declined', 'stopped')";
$stm = $pdo->prepare($sql);
$stm->execute(['playerId' => $playerId]);
$res = $stm->fetch(PDO::FETCH_ASSOC);
$return -= $res['defenderpoints'];
$sql = "SELECT COALESCE(SUM(challengerpoints), 0) AS challengerpoints FROM Matches WHERE winnerId = :playerId";
$stm = $pdo->prepare($sql);
$stm->execute(['playerId' => $playerId]);
$res = $stm->fetch(PDO::FETCH_ASSOC);
$return += $res['challengerpoints'] * 2;
return $return;
}
function playerpointsA(int $playerId){ //Räknar ut poängen en spelare har om man inte räknar med aktiva matcher.
include('databaseconnection.php');
$sql = "SELECT ladderId FROM Players WHERE playerId = :playerId;";
$stm = $pdo->prepare($sql);
$stm->execute(array('playerId' => $playerId));
$ladderId = $stm->fetch(PDO::FETCH_ASSOC);
$sql = "SELECT startingpoints FROM Ladders WHERE ladderId = :ladderId;";
$stm = $pdo->prepare($sql);
$stm->execute(array('ladderId' => $ladderId['ladderId']));
$startingpoints = $stm->fetch(PDO::FETCH_ASSOC);
$return = $startingpoints['startingpoints'];
$sql = "SELECT COALESCE(SUM(challengerpoints), 0) AS challengerpoints FROM Matches WHERE challengerId = :playerId AND status NOT IN ('request', 'declined', 'accepted', 'stopped')";
$stm = $pdo->prepare($sql);
$stm->execute(['playerId' => $playerId]);
$res = $stm->fetch(PDO::FETCH_ASSOC);
$return -= $res['challengerpoints'];
$sql = "SELECT COALESCE(SUM(defenderpoints), 0) AS defenderpoints FROM Matches WHERE defenderId = :playerId AND status NOT IN ('request', 'declined', 'accepted', 'stopped')";
$stm = $pdo->prepare($sql);
$stm->execute(['playerId' => $playerId]);
$res = $stm->fetch(PDO::FETCH_ASSOC);
$return -= $res['defenderpoints'];
$sql = "SELECT COALESCE(SUM(challengerpoints), 0) AS challengerpoints FROM Matches WHERE winnerId = :playerId";
$stm = $pdo->prepare($sql);
$stm->execute(['playerId' => $playerId]);
$res = $stm->fetch(PDO::FETCH_ASSOC);
$return += $res['challengerpoints'] * 2;
return $return;
}
function validateladdertime(int $playerId, $openladder){
include('databaseconnection.php');
$sql = "SELECT ladderId FROM Players WHERE playerId = :playerId;";
$stm = $pdo->prepare($sql);
$stm->execute(array('playerId' => $playerId));
$res = $stm->fetch(PDO::FETCH_ASSOC);
$sql = "SELECT * FROM Ladders WHERE ladderId = :ladderId;";
$stm = $pdo->prepare($sql);
$stm->execute(array('ladderId' => $res['ladderId']));
$ladderInf = $stm->fetch(PDO::FETCH_ASSOC);
$now = date('Y-m-d H:i:s');
if ($ladderInf['startdate'] <= $now && (empty($ladderInf['enddate']) || $ladderInf['enddate'] > $now)){
}
else{
if ($openladder == 'yes'){
header('location: home.php?openladder='.$ladderInf['ladderId'].'');
exit();
}
else{
header('location: home.php?');
exit();
}
}
}
?>