Files
kruhac/-inc/function-admin.php
2024-01-12 01:57:58 +01:00

481 lines
21 KiB
PHP

<?php
$servername = "127.0.0.1";
$username = "...";
$password = "...";
$dbname = "...";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$mysqlerror = NULL;
$adderror = NULL;
$editerror = NULL;
function remove_accents($string)
{
if (!preg_match('/[\x80-\xff]/', $string))
return $string;
$chars = array(
// Decompositions for Latin-1 Supplement
chr(195) . chr(128) => 'A', chr(195) . chr(129) => 'A',
chr(195) . chr(130) => 'A', chr(195) . chr(131) => 'A',
chr(195) . chr(132) => 'A', chr(195) . chr(133) => 'A',
chr(195) . chr(135) => 'C', chr(195) . chr(136) => 'E',
chr(195) . chr(137) => 'E', chr(195) . chr(138) => 'E',
chr(195) . chr(139) => 'E', chr(195) . chr(140) => 'I',
chr(195) . chr(141) => 'I', chr(195) . chr(142) => 'I',
chr(195) . chr(143) => 'I', chr(195) . chr(145) => 'N',
chr(195) . chr(146) => 'O', chr(195) . chr(147) => 'O',
chr(195) . chr(148) => 'O', chr(195) . chr(149) => 'O',
chr(195) . chr(150) => 'O', chr(195) . chr(153) => 'U',
chr(195) . chr(154) => 'U', chr(195) . chr(155) => 'U',
chr(195) . chr(156) => 'U', chr(195) . chr(157) => 'Y',
chr(195) . chr(159) => 's', chr(195) . chr(160) => 'a',
chr(195) . chr(161) => 'a', chr(195) . chr(162) => 'a',
chr(195) . chr(163) => 'a', chr(195) . chr(164) => 'a',
chr(195) . chr(165) => 'a', chr(195) . chr(167) => 'c',
chr(195) . chr(168) => 'e', chr(195) . chr(169) => 'e',
chr(195) . chr(170) => 'e', chr(195) . chr(171) => 'e',
chr(195) . chr(172) => 'i', chr(195) . chr(173) => 'i',
chr(195) . chr(174) => 'i', chr(195) . chr(175) => 'i',
chr(195) . chr(177) => 'n', chr(195) . chr(178) => 'o',
chr(195) . chr(179) => 'o', chr(195) . chr(180) => 'o',
chr(195) . chr(181) => 'o', chr(195) . chr(182) => 'o',
chr(195) . chr(182) => 'o', chr(195) . chr(185) => 'u',
chr(195) . chr(186) => 'u', chr(195) . chr(187) => 'u',
chr(195) . chr(188) => 'u', chr(195) . chr(189) => 'y',
chr(195) . chr(191) => 'y',
// Decompositions for Latin Extended-A
chr(196) . chr(128) => 'A', chr(196) . chr(129) => 'a',
chr(196) . chr(130) => 'A', chr(196) . chr(131) => 'a',
chr(196) . chr(132) => 'A', chr(196) . chr(133) => 'a',
chr(196) . chr(134) => 'C', chr(196) . chr(135) => 'c',
chr(196) . chr(136) => 'C', chr(196) . chr(137) => 'c',
chr(196) . chr(138) => 'C', chr(196) . chr(139) => 'c',
chr(196) . chr(140) => 'C', chr(196) . chr(141) => 'c',
chr(196) . chr(142) => 'D', chr(196) . chr(143) => 'd',
chr(196) . chr(144) => 'D', chr(196) . chr(145) => 'd',
chr(196) . chr(146) => 'E', chr(196) . chr(147) => 'e',
chr(196) . chr(148) => 'E', chr(196) . chr(149) => 'e',
chr(196) . chr(150) => 'E', chr(196) . chr(151) => 'e',
chr(196) . chr(152) => 'E', chr(196) . chr(153) => 'e',
chr(196) . chr(154) => 'E', chr(196) . chr(155) => 'e',
chr(196) . chr(156) => 'G', chr(196) . chr(157) => 'g',
chr(196) . chr(158) => 'G', chr(196) . chr(159) => 'g',
chr(196) . chr(160) => 'G', chr(196) . chr(161) => 'g',
chr(196) . chr(162) => 'G', chr(196) . chr(163) => 'g',
chr(196) . chr(164) => 'H', chr(196) . chr(165) => 'h',
chr(196) . chr(166) => 'H', chr(196) . chr(167) => 'h',
chr(196) . chr(168) => 'I', chr(196) . chr(169) => 'i',
chr(196) . chr(170) => 'I', chr(196) . chr(171) => 'i',
chr(196) . chr(172) => 'I', chr(196) . chr(173) => 'i',
chr(196) . chr(174) => 'I', chr(196) . chr(175) => 'i',
chr(196) . chr(176) => 'I', chr(196) . chr(177) => 'i',
chr(196) . chr(178) => 'IJ', chr(196) . chr(179) => 'ij',
chr(196) . chr(180) => 'J', chr(196) . chr(181) => 'j',
chr(196) . chr(182) => 'K', chr(196) . chr(183) => 'k',
chr(196) . chr(184) => 'k', chr(196) . chr(185) => 'L',
chr(196) . chr(186) => 'l', chr(196) . chr(187) => 'L',
chr(196) . chr(188) => 'l', chr(196) . chr(189) => 'L',
chr(196) . chr(190) => 'l', chr(196) . chr(191) => 'L',
chr(197) . chr(128) => 'l', chr(197) . chr(129) => 'L',
chr(197) . chr(130) => 'l', chr(197) . chr(131) => 'N',
chr(197) . chr(132) => 'n', chr(197) . chr(133) => 'N',
chr(197) . chr(134) => 'n', chr(197) . chr(135) => 'N',
chr(197) . chr(136) => 'n', chr(197) . chr(137) => 'N',
chr(197) . chr(138) => 'n', chr(197) . chr(139) => 'N',
chr(197) . chr(140) => 'O', chr(197) . chr(141) => 'o',
chr(197) . chr(142) => 'O', chr(197) . chr(143) => 'o',
chr(197) . chr(144) => 'O', chr(197) . chr(145) => 'o',
chr(197) . chr(146) => 'OE', chr(197) . chr(147) => 'oe',
chr(197) . chr(148) => 'R', chr(197) . chr(149) => 'r',
chr(197) . chr(150) => 'R', chr(197) . chr(151) => 'r',
chr(197) . chr(152) => 'R', chr(197) . chr(153) => 'r',
chr(197) . chr(154) => 'S', chr(197) . chr(155) => 's',
chr(197) . chr(156) => 'S', chr(197) . chr(157) => 's',
chr(197) . chr(158) => 'S', chr(197) . chr(159) => 's',
chr(197) . chr(160) => 'S', chr(197) . chr(161) => 's',
chr(197) . chr(162) => 'T', chr(197) . chr(163) => 't',
chr(197) . chr(164) => 'T', chr(197) . chr(165) => 't',
chr(197) . chr(166) => 'T', chr(197) . chr(167) => 't',
chr(197) . chr(168) => 'U', chr(197) . chr(169) => 'u',
chr(197) . chr(170) => 'U', chr(197) . chr(171) => 'u',
chr(197) . chr(172) => 'U', chr(197) . chr(173) => 'u',
chr(197) . chr(174) => 'U', chr(197) . chr(175) => 'u',
chr(197) . chr(176) => 'U', chr(197) . chr(177) => 'u',
chr(197) . chr(178) => 'U', chr(197) . chr(179) => 'u',
chr(197) . chr(180) => 'W', chr(197) . chr(181) => 'w',
chr(197) . chr(182) => 'Y', chr(197) . chr(183) => 'y',
chr(197) . chr(184) => 'Y', chr(197) . chr(185) => 'Z',
chr(197) . chr(186) => 'z', chr(197) . chr(187) => 'Z',
chr(197) . chr(188) => 'z', chr(197) . chr(189) => 'Z',
chr(197) . chr(190) => 'z', chr(197) . chr(191) => 's'
);
$string = strtr($string, $chars);
return $string;
}
function vypisTreninku()
{
global $conn;
$sql = "SELECT id, datum, kapacita, jmeno FROM trenink_trenink ORDER BY datum ASC;";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
$dateus = array("/^1/", "/^2/", "/^3/", "/^4/", "/^5/", "/^6/", "/^7/");
$datecz = array("Po", "Út", "St", "Čt", "Pa", "So", "Ne");
while ($row = $result->fetch_assoc()) {
$sql1 = "select * from trenink_zapsan where trenink=" . $row["id"] . ";";
$result1 = $conn->query($sql1);
echo '<tr>';
echo '<td><b>' . $row["jmeno"] . '</b><br>' . preg_replace($dateus, $datecz, date("N j.&\\nb\sp;n. Y \o\d&\\nb\sp;H:i", strtotime($row["datum"]))) . '</td>';
echo '<td>' . $result1->num_rows . '/' . $row["kapacita"] . '</td>';
echo '<td>';
echo '<a role="button" href="?edit=' . $row["id"] . '" class="btn btn-outline-secondary btn-block">Upravit</a>';
echo '<a role="button" href="?list=' . $row["id"] . '" class="btn btn-info btn-block">Seznam</a>';
echo '</td>';
echo '</tr>';
}
} else {
echo '<tr><td colspan="3">';
echo "Žádné Tréninky";
echo '</td></tr>';
}
}
function addTrenink($nazev, $datum, $kapacita, $obrazek, $popis, $treneri)
{
global $adderror;
global $mysqlerror;
if (empty($nazev) || empty($datum) || empty($kapacita) || empty($obrazek) || empty($popis)) {
$adderror = "Vyplňte všechna pole.";
} else {
$check = getimagesize($obrazek);
if ($check !== false) {
global $conn;
$obrazek = addslashes(file_get_contents($obrazek));
$sql = "INSERT INTO `trenink_trenink` (`id`, `datum`, `kapacita`, `jmeno`, `popis`, `obrazek`) VALUES (NULL, '" . date("Y-m-d H:i:s", strtotime($datum)) . "', '$kapacita', '$nazev', '$popis', '{$obrazek}');";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
$treninkId = $conn->insert_id;
$sql = "INSERT INTO `trenink_trenuje` (`trener`, `trenink`) VALUES ";
for ($i = 0; $i < count($treneri); $i++) {
$sql .= "('" . $treneri["$i"] . "', '$treninkId')";
if (count($treneri) != 1 && $i != count($treneri) - 1) {
$sql .= ", ";
}
}
$sql .= ";";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
} else {
$adderror = "Soubor musí být obrázek.";
}
}
}
function vypisTreneru()
{
global $conn;
$sql = "SELECT id, jmeno, prijmeni FROM trenink_user WHERE `role`=2;";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo '<option value="' . $row['id'] . '">' . $row['jmeno'] . ' ' . $row['prijmeni'] . '</option>';
}
} else {
echo '<option selected>Žádní trenéři</option>';
}
}
function editVypisTreneru($trenink)
{
global $conn;
$sql = "SELECT u.id, u.jmeno, u.prijmeni FROM trenink_trenuje t INNER JOIN trenink_user u ON t.trener=u.id WHERE t.trenink=$trenink;";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$sql = "SELECT id, jmeno, prijmeni FROM trenink_user WHERE `role`=2 AND id NOT IN(";
$count = $result->num_rows - 1;
while ($row = $result->fetch_assoc()) {
$sql .= $row['id'];
if ($count) {
$sql .= ", ";
$count--;
}
echo '<option value="' . $row['id'] . '" selected>' . $row['jmeno'] . ' ' . $row['prijmeni'] . '</option>';
}
$sql .= ");";
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()) {
echo '<option value="' . $row['id'] . '">' . $row['jmeno'] . ' ' . $row['prijmeni'] . '</option>';
}
} else {
vypisTreneru();
}
}
function vypisPrihlasenych($trenink)
{
global $conn;
$sql = "SELECT u.id, u.jmeno, u.prijmeni, u.overeni FROM trenink_zapsan z INNER JOIN trenink_user u ON u.id=z.client WHERE z.trenink=$trenink";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
if ($row['overeni'] > 1) {
echo '<tr class="table-success">';
} elseif ($row['overeni'] > 0) {
echo '<tr class="table-warning">';
} else {
echo '<tr class="align-middle">';
}
echo '<td>' . $row['prijmeni'] . ' ' . $row['jmeno'] . '</td>';
echo '<td><a class="btn btn-outline-danger float-right" href="?list=' . $trenink . '&odepsat=' . $row['id'] . '" role="button">Odepsat</a>
</td>';
echo '</tr>';
}
} else {
echo '<tr><td colspan="2">Nikdo není přihlášen.</td></tr>';
}
}
function odepsat($client, $trenink)
{
global $conn;
global $mysqlerror;
$sql = "DELETE FROM `trenink_zapsan` WHERE `trenink_zapsan`.`client` = " . $client . " AND `trenink_zapsan`.`trenink` = $trenink;";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
}
function editForm($trenink)
{
global $conn;
global $editerror;
$sql = "SELECT * FROM trenink_trenink WHERE `id`=$trenink;";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
echo '<form class="was-validated" id="editForm" action="' . $_SERVER['PHP_SELF'] . '" method="post" enctype="multipart/form-data">';
echo '<div class="form-group">';
echo '<label for="nazev">Název:</label>';
echo '<input type="text" name="nazev" class="form-control" id="nazev" value="' . $row['jmeno'] . '" required>';
echo '<input type="hidden" id="id" name="id" value="' . $row['id'] . '">';
echo '</div>';
echo '<div class="form-group">';
echo '<label for="datum">Datum:</label>';
echo '<input type="datetime-local" name="datum" class="form-control" id="datum" value="' . strftime('%Y-%m-%dT%H:%M:%S', strtotime($row['datum'])) . '" required>';
echo '</div>';
echo '<div class="form-group">';
echo '<label for="kapacita">Kapacita:</label>';
echo '<input type="number" name="kapacita" class="form-control" id="kapacita" value="' . $row['kapacita'] . '" required>';
echo '</div>';
echo '<div class="form-group">';
echo '<label for="kapacita">Trénují:</label>';
echo '<select class="custom-select" name="treneri[]" multiple required>';
editVypisTreneru($_GET['edit']);
echo '</select>';
echo '</div>';
echo '<div class="form-group">';
echo '<label for="popis">Popis:</label>';
echo '<div class="custom-file mb-3">';
echo '<input type="file" class="custom-file-input" name="obrazekEdit" id="obrazekEdit" accept="image/*">';
echo '<label class="custom-file-label" for="obrazekEdit">Vyberte obrázek...</label>';
echo '</div>';
echo '<textarea class="form-control" name="popis" id="popis" placeholder="Popis tréninku..."required>' . $row['popis'] . '</textarea>';
echo '</div>';
echo '</form>';
}
}
function editTrenink($id, $nazev, $datum, $kapacita, $obrazek, $popis, $treneri)
{
global $mysqlerror;
if (empty($nazev) || empty($datum) || empty($kapacita) || empty($popis)) {
$mysqlerror = "Vyplňte všechna pole.";
} else {
global $conn;
$check = (empty($obrazek)) ? '' : getimagesize($obrazek);
if (!empty($obrazek) && $check !== false) {
$obrazek = addslashes(file_get_contents($obrazek));
$sql = "UPDATE `trenink_trenink` SET `datum` = '" . date("Y-m-d H:i:s", strtotime($datum)) . "', `kapacita` = '$kapacita', `jmeno` = '$nazev', `popis` = '$popis', `obrazek` = '$obrazek' WHERE `trenink_trenink`.`id` = $id; ;";
} else {
$sql = "UPDATE `trenink_trenink` SET `datum` = '" . date("Y-m-d H:i:s", strtotime($datum)) . "', `kapacita` = '$kapacita', `jmeno` = '$nazev', `popis` = '$popis' WHERE `trenink_trenink`.`id` = $id; ;";
}
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
$sql = "DELETE FROM `trenink_trenuje` WHERE `trenink_trenuje`.`trenink` = $id; ";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
$sql = "INSERT INTO `trenink_trenuje` (`trener`, `trenink`) VALUES ";
for ($i = 0; $i < count($treneri); $i++) {
$sql .= "('" . $treneri["$i"] . "', '$id')";
if (count($treneri) != 1 && $i != count($treneri) - 1) {
$sql .= ", ";
}
}
$sql .= ";";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
}
}
function delete($trenink)
{
global $conn;
global $mysqlerror;
$sql = "DELETE FROM `trenink_zapsan` WHERE `trenink_zapsan`.`trenink` = $trenink;";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
$sql = "DELETE FROM `trenink_trenuje` WHERE `trenink_trenuje`.`trenink` = $trenink;";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
$sql = "DELETE FROM `trenink_trenink` WHERE `trenink_trenink`.`id` = $trenink;";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
}
function vypisUzivatelu()
{
global $conn;
$sql = "SELECT id, jmeno, prijmeni, overeni FROM trenink_user;";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
if ($row['overeni'] > 1) {
echo '<tr class="table-success">';
} elseif ($row['overeni'] > 0) {
echo '<tr class="table-secondary">';
} else {
echo '<tr class="table-warning">';
}
echo '<td>' . $row['prijmeni'] . ' ' . $row['jmeno'] . '</td>';
echo '<td>';
echo '<a role="button" href="?edituser=' . $row['id'] . '" class="btn btn-secondary btn-block">Upravit</a>';
echo '</td>';
echo '</tr>';
}
} else {
echo '<tr><td colspan="2">Žádní uživatelé.</td></tr>';
}
}
function editFormUser($user)
{
global $conn;
global $editerror;
$sql = "SELECT * FROM trenink_user WHERE `id`=$user;";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
echo '<form class="was-validated" id="editFormUser" action="' . $_SERVER['PHP_SELF'] . '" method="post" enctype="multipart/form-data">';
echo '<div class="form-group">';
echo '<label for="jmeno">Jméno:</label>';
echo '<input type="text" name="jmeno" class="form-control" value="' . $row['jmeno'] . '" id="jmeno" required>';
echo '<input type="hidden" name="id" value="' . $row['id'] . '">';
echo '</div>';
echo '<div class="form-group">';
echo '<label for="prijmeni">Příjmení:</label>';
echo '<input type="text" name="prijmeni" class="form-control" value="' . $row['prijmeni'] . '" id="prijmeni" required>';
echo '</div>';
echo '<div class="form-group">';
echo '<label for="email">E-mail:</label>';
echo '<input type="email" name="email" class="form-control" value="' . $row['email'] . '" id="email" required>';
echo '</div>';
echo '<div class="form-group">';
echo '<label for="funkce">Funkce:</label>';
echo '<select class="custom-select" id="funkce" name="funkce">';
echo '<option value="1" '.($row['role'] == "Cvičenec" ? 'selected':'').'>Cvičenec</option>';
echo '<option value="2" ' . ($row['role'] == "Trenér" ? 'selected' : '') . '>Trenér</option>';
echo '<option value="3" ' . ($row['role'] == "Admin" ? 'selected' : '') . '>Admin</option>';
echo '</select>';
echo '</div>';
echo '<div class="form-group">';
if ($row['overeni'] < 2) {
echo '<button type="submit" class="btn btn-success btn-block" name="submit" value="overit" form="editFormUser">Ověřit</button>';
} else {
echo '<button type="submit" class="btn btn-outline-warning btn-block" name="submit" value="zrusitOvereni" form="editFormUser">Zrušit ověření</button>';
}
echo '</div>';
echo '</form>';
}
}
function editUser($id, $jmeno, $prijmeni, $email, $funkce){
global $mysqlerror;
if (empty($id) || empty($jmeno) || empty($prijmeni) || empty($email) || empty($funkce)) {
$mysqlerror = "Vyplňte všechna pole.";
} else {
global $conn;
$sql = "UPDATE `trenink_user` SET `email` = '$email', `role` = '$funkce', `jmeno` = '$jmeno', `prijmeni` = '$prijmeni' WHERE `trenink_user`.`id` = $id;";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
}
}
function overit($id){
global $mysqlerror;
if (empty($id)) {
$mysqlerror = "Vyplňte všechna pole.";
} else {
global $conn;
$sql = "UPDATE `trenink_user` SET `overeni` = `overeni` + 2 WHERE `trenink_user`.`id` = $id;";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
}
}
function zrusitOvereni($id) {
global $mysqlerror;
if (empty($id)) {
$mysqlerror = "Vyplňte všechna pole.";
} else {
global $conn;
$sql = "UPDATE `trenink_user` SET `overeni` = `overeni` - 2 WHERE `trenink_user`.`id` = $id;";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
}
}
function deleteUser($id)
{
global $mysqlerror;
if (empty($id)) {
$mysqlerror = "Vyplňte všechna pole.";
} else {
global $conn;
$sql = "DELETE FROM `trenink_trenuje` WHERE `trenink_trenuje`.`trener` = $id";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
$sql = "DELETE FROM `trenink_zapsan` WHERE `trenink_zapsan`.`client` = $id";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
$sql = "DELETE FROM `trenink_user` WHERE `trenink_user`.`id` = $id";
if ($conn->query($sql) === FALSE) {
$mysqlerror = "Error: " . $sql . "<br>" . $conn->error;
}
}
}