oazaSrdceWeb / modal.php
modal.php
Raw
<?php

/**
 * @file modal.php
 * @brief Dynamické generování modálních oken pro události a profily lektorů.
 *
 * Tento skript:
 *  - Navazuje připojení k databázi a zpracovává GET parametry (category a eventId, lectorId a eventId, nebo pouze lectorId).
 *  - Vytváří modální okno pro události s názvem a časovým rozsahem na základě kategorie a ID události.
 *  - Pro lektora s ID 4 a zadaným eventId generuje specializované modální okno s detaily události (název, popis, lektoři, data).
 *  - Pro lektory (pouze lectorId nebo s eventId) vytváří modální okno s profilem lektora, včetně videa (pokud je k dispozici), popisu, fotografií, seznamu nadcházejících událostí (max. 3, od aktuálního data) a kontaktních údajů.
 *  - Obsahuje JavaScript funkci closeModal pro plynulé zavírání modálních oken a odstranění pozadí (backdrop).
 */
?>

<!DOCTYPE html>
<html lang="cs">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Události a profily lektorů v Oáze Brádlo. Zobrazte podrobnosti o akcích a lektorech pohodlně v modálním okně.">
    <title>Modal</title>
    <link rel="stylesheet" href="css/modal.css" />
    <link
        href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"
        rel="stylesheet" />
</head>

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-FB7MMZ9KBB"></script>
<script>
    window.dataLayer = window.dataLayer || [];

    function gtag() {
        dataLayer.push(arguments);
    }
    gtag('js', new Date());

    gtag('config', 'G-FB7MMZ9KBB');
</script>

<body>
    <?php

    if (isset($_GET['category']) && isset($_GET['eventId'])) {
        include 'db_connection.php'; ///< Připojení k databázi
        $conn->set_charset("utf8mb4");
        $category = $_GET['category'];
        $eventId = intval($_GET['eventId']);
        $sql = "SELECT * FROM events WHERE category = '$category' AND id = $eventId";
        $result = $conn->query($sql);
        if ($result->num_rows > 0) {
            while ($row = $result->fetch_assoc()) {
                echo '<div class="modal fade show" id="otherModal" tabindex="-1" aria-labelledby="otherModal" aria-hidden="true" style="display: block; overflow-y: auto;">';
                echo '  <div class="modal-dialog modal-lg">';
                echo '    <div class="modal-content">';
                echo '      <div class="modal-header">';
                echo '        <button type="button" class="close" data-dismiss="modal" aria-label="Close" onclick="closeModal(\'otherModal\')">';
                echo '          <span aria-hidden="true">&times;</span>';
                echo '        </button>';
                echo '      </div>';
                echo '      <div class="modal-body">';
                echo '      <div class="container">';
                echo '      <div class="row">';
                echo '      <div class="col-12 middle">';
                echo '      <h2>' . $row["heading"] . '</h2>';
                echo '      </div>';
                echo '      <div class="col-5 middle">';
                echo '      <h2>' . date('d-m-Y', strtotime($row["timefrom"])) . '</h2>';
                echo '      </div>';
                echo '      <div class="col-2 middle">';
                echo '      <h2> - </h2>';
                echo '      </div>';
                echo '      <div class="col-5 middle">';
                echo '      <h2>' . date('d-m-Y', strtotime($row["timeto"])) . '</h2>';
                echo '      </div>';
                echo '      </div>';
                echo '      </div>';
                echo '      </div>';
                echo '    </div>';
                echo '  </div>';
                echo '</div>';
            }
        }
        $conn->close();
    }

    // Specialní případ pro lektora s ID 4 a eventId
    if (isset($_GET['lectorId']) && isset($_GET['eventId']) && $_GET['lectorId'] == 4) {
        include 'db_connection.php'; ///< Připojení k databázi
        $conn->set_charset("utf8mb4");
        $eventId = $_GET['eventId'];

        // Získání informací o události
        $sql = "SELECT * FROM events WHERE id = $eventId";
        $result = $conn->query($sql);

        if ($result->num_rows > 0) {
            $event = $result->fetch_assoc();

            // Zobrazí specialní modální okno pro lektora s ID 4
            echo '<div class="modal fade show" id="specialLectorModal" tabindex="-1" aria-labelledby="specialLectorModalLabel" aria-hidden="true" style="display: block; overflow-y: auto;">';
            echo '  <div class="modal-dialog modal-lg">';
            echo '    <div class="modal-content">';
            echo '      <div class="modal-header">';
            echo '        <h2 class="modal-title" id="specialLectorModalLabel">Informace o akci</h2>';
            echo '        <button type="button" class="close" data-dismiss="modal" aria-label="Close" onclick="closeModal(\'specialLectorModal\')">';
            echo '          <span aria-hidden="true">&times;</span>';
            echo '        </button>';
            echo '      </div>';
            echo '      <div class="modal-body">';
            echo '        <div class="container">';
            echo '          <div class="row">';
            echo '            <div class="col-12">';
            echo '              <h3>' . $event["heading"] . '</h3>';
            echo '            </div>';
            echo '            <div class="col-12 my-3">';
            echo '              <h5>' . $event["lectors"] . '</h5>';
            echo '            </div>';
            echo '            <div class="col-12 my-3">';
            echo '              <p>' . $event["description"] . '</p>';
            echo '            </div>';
            echo '            <div class="col-12 mt-4">';
            echo '              <div class="row">';
            echo '                <div class="col-md-6">';
            echo '                  <p><strong>Od:</strong> ' . date('d-m-Y', strtotime($event["timefrom"])) . '</p>';
            echo '                </div>';
            echo '                <div class="col-md-6">';
            echo '                  <p><strong>Do:</strong> ' . date('d-m-Y', strtotime($event["timeto"])) . '</p>';
            echo '                </div>';
            echo '              </div>';
            echo '            </div>';
            echo '          </div>';
            echo '        </div>';
            echo '      </div>';
            echo '    </div>';
            echo '  </div>';
            echo '</div>';
            echo '<div class="modal-backdrop fade show" onclick="closeModal(\'specialLectorModal\')"></div>';
        }

        // Důležité: Přidat tento return příkaz, aby se zabránilo zobrazení běžných modálních oken lektorů
        return;
    }

    if (isset($_GET['lectorId'])) {
        include 'db_connection.php'; ///< Připojení k databázi
        $conn->set_charset("utf8mb4");
        $lectorId = $_GET['lectorId'];
        $sql = "SELECT * FROM lectors WHERE lectors.id = $lectorId";
        $result = $conn->query($sql);
        if ($result->num_rows > 0) {
            while ($row = $result->fetch_assoc()) {
                if (!empty($row["videoMain"]) || !empty($row["videoLink"])) {
                    // Modal 1 s videem
                    echo '<div class="modal fade show" id="lectorModal" tabindex="-1" aria-labelledby="lectorModalLabel" aria-hidden="true" style="display: block; overflow-y: auto;">';
                    echo '  <div class="modal-dialog modal-lg">';
                    echo '    <div class="modal-content">';
                    echo '      <div class="modal-header">';
                    echo '        <h2 class="modal-title" id="lectorModalLabel">' . $row["name"] . '</h2>';
                    echo '        <button type="button" class="close" data-dismiss="modal" aria-label="Close" onclick="closeModal(\'lectorModal\')">';
                    echo '          <span aria-hidden="true">&times;</span>';
                    echo '        </button>';
                    echo '      </div>';
                    echo '      <div class="modal-body">';
                    if (isset($_GET['eventId'])) { //  Pokud uživatel přichází z event-card, načte info pro konkrétní událost (pokud ne, otevře jen info o lektorovi)
                        $eventId = $_GET['eventId'];
                        $sql2 = "SELECT * FROM events WHERE events.id = $eventId";
                        $result2 = $conn->query($sql2);
                        if ($result2->num_rows > 0) {
                            while ($row2 = $result2->fetch_assoc()) {
                                echo '        <div class="container">';
                                echo '          <div class="row seminarInfo">';
                                echo '            <div class="col-12">';
                                echo '              <p class="seminarHeading">' . $row2["heading"] . '</p>';
                                echo '            </div>';
                                echo '            <div class="col-12">';
                                echo '              <p class="seminarDescription">' . $row2["description"] . '</p>';
                                echo '            </div>';
                                echo '          </div>';
                                echo '      </div>';
                            }
                        }
                    }
                    echo '        <div class="container">';
                    echo '          <div class="row">';
                    echo '            <div class="col-12">';
                    if (!empty($row["videoMain"])) {
                        echo '              <video src="' . $row["videoMain"] . '" autoplay controls></video>';
                    } elseif (!empty($row["videoLink"])) {
                        echo '              <iframe src="' . $row["videoLink"] . '"></iframe>';
                    }
                    echo '            </div>';
                    echo '            <div class="col-12">';
                    echo '              <h4>' . $row["field"] . '</h4>';
                    echo '            </div>';
                    echo '            <div class="col-12">';
                    echo '              <p>' . $row["info"] . '</p>';
                    echo '            </div>';
                    echo '          </div>';
                    if (!empty($row["photo1"]) || !empty($row["photo2"]) || !empty($row["photo3"])) {
                        echo '          <div class="row lectorPhotos">';
                        if (!empty($row["photo1"])) {
                            echo '            <div class="col-md-4 col-lg-4 col-6">';
                            echo '              <img src="' . $row["photo1"] . '" alt="" class="lectorPhoto" />';
                            echo '            </div>';
                        }
                        if (!empty($row["photo2"])) {
                            echo '            <div class="col-md-4 col-lg-4 col-6">';
                            echo '              <img src="' . $row["photo2"] . '" alt="" class="lectorPhoto" />';
                            echo '            </div>';
                        }
                        if (!empty($row["photo3"])) {
                            echo '            <div class="col-md-4 col-lg-4 col-6">';
                            echo '              <img src="' . $row["photo3"] . '" alt="" class="lectorPhoto" />';
                            echo '            </div>';
                        }
                        echo '          </div>';
                    }
                    echo '        </div>';
                    echo '        <div class="spacer50"></div>';
                    echo '        <div class="container modalEnd">';
                    echo '          <div class="row">';
                    echo '            <div class="col-md-7 col-lg-7 col-12">';
                    echo '              <div class="row">';
                    echo '                <div class="col-12">';
                    echo '                  <h6>Semináře</h6>';
                    echo '                </div>';
                    echo '                <div class="col-12">';
                    echo '                  <div class="eventBox">';

                    // Načtení událostí pro stejného lektora
                    include 'db_connection.php'; ///< Připojení k databázi
                    $conn->set_charset("utf8mb4");
                    $sqlevents = "SELECT * FROM events WHERE events.lector_id = $lectorId AND events.timefrom >= CURDATE() ORDER BY events.timefrom ASC LIMIT 3"; // Fetching events for the same lector with filter of curent date and limit 3
                    $resultevents = $conn->query($sqlevents);
                    $dateToday = date('Y-m-d');
                    $events = [];
                    if ($resultevents->num_rows > 0) {
                        while ($row = $resultevents->fetch_assoc()) {
                            $events[] = $row;
                        }
                    }
                    if (!empty($events)) {
                        foreach ($events as $row) {
                            if (strtotime($dateToday) <= strtotime($row["timefrom"])) {

                                echo '<div class="event-card p-2 medailonek-link" data-url="?lectorId=' . $row["lector_id"] . '&eventId=' . $row["id"] . '#modalPlace">';
                                echo '  <div class="d-flex">';
                                echo '    <div class="eventTime">';
                                echo '      <p class="date-time m-0">' . date('d-m-Y', strtotime($row["timefrom"])) . '</p>';
                                echo '      <p class="date-time m-0">' . date('d-m-Y', strtotime($row["timeto"])) . '</p>';
                                echo '    </div>';
                                echo '    <div>';
                                echo '      <p class="event-title m-0">' . $row["heading"] . '</p>';
                                echo '      <p class="event-details m-0">';
                                $sql3 = "SELECT * FROM lectors WHERE id = $lectorId"; // Zobrazení detailu lektora v kartě události (oddělený dotaz na DB, jinak by načítal události od různých lektorů)
                                $result3 = $conn->query($sql3);
                                if ($result3->num_rows > 0) {
                                    while ($row3 = $result3->fetch_assoc()) {
                                        echo '        <span class="organizer">' . $row3["name"] . '</span>';
                                        echo '        <span class="eventContact">' . ($row3["tel"] ? $row3["tel"] : $row3["email"]) . '</span>';
                                    }
                                }
                                echo '      </p>';
                                echo '    </div>';
                                echo '  </div>';
                                echo '</div>';
                            }
                        }
                    }

                    echo '                  </div>';
                    echo '                </div>';
                    echo '              </div>';
                    echo '            </div>';
                    echo '            <div class="col-md-5 col-lg-5 col-12 contactModal">';
                    echo '              <div class="col-12">';
                    echo '                <h6>Kontakt</h6>';
                    echo '              </div>';
                    if (!empty($row["tel"])) {
                        echo '              <div class="col-12 contactLine">';
                        echo '                <img src="media/seminar/lectors/modal/tel.png" alt="" />';
                        echo '                <p>' . $row["tel"] . '</p>';
                        echo '              </div>';
                    }
                    if (!empty($row["email"])) {
                        echo '              <div class="col-12 contactLine">';
                        echo '                <img src="media/seminar/lectors/modal/email.png" alt="" />';
                        echo '                <p>' . $row["email"] . '</p>';
                        echo '              </div>';
                    }
                    if (!empty($row["web1"]) || !empty($row["web2"])) {
                        echo '              <div class="col-12 contactLine">';
                        echo '                <img src="media/seminar/lectors/modal/web.png" alt="" />';
                        echo '                <p class="webLines">' . $row["web1"] . ' <br/>' . $row["web2"] . '</p>';
                        echo '              </div>';
                    }
                    echo '            </div>';
                    echo '          </div>';
                    echo '        </div>';
                    echo '      </div>';
                    echo '    </div>';
                    echo '  </div>';
                    echo '</div>';
                    echo '<div class="modal-backdrop fade show" onclick="closeModal(\'lectorModal\')"></div>';
                } else {
                    // Modal 2 bez videa
                    echo '<div class="modal fade show" id="lectorModal2" tabindex="-1" aria-labelledby="lectorModalLabel" aria-hidden="true" style="display: block; overflow-y: auto;">';
                    echo '  <div class="modal-dialog modal-lg">';
                    echo '    <div class="modal-content">';
                    echo '      <div class="modal-header">';
                    echo '        <h2 class="modal-title" id="lectorModalLabel">Medailonek</h2>';
                    echo '        <button type="button" class="close" data-dismiss="modal" aria-label="Close" onclick="closeModal(\'lectorModal2\')">';
                    echo '          <span aria-hidden="true">&times;</span>';
                    echo '        </button>';
                    echo '      </div>';
                    echo '      <div class="modal-body">';
                    if (isset($_GET['eventId'])) { //  Pokud uživatel přichází z event-card, načte info pro konkrétní událost (pokud ne, otevře jen info o lektorovi)
                        $eventId = $_GET['eventId'];
                        $sql2 = "SELECT * FROM events WHERE events.id = $eventId";
                        $result2 = $conn->query($sql2);
                        if ($result2->num_rows > 0) {
                            while ($row2 = $result2->fetch_assoc()) {
                                echo '        <div class="container">';
                                echo '          <div class="row seminarInfo">';
                                echo '            <div class="col-12">';
                                echo '              <p class="seminarHeading">' . $row2["heading"] . '</p>';
                                echo '            </div>';
                                echo '            <div class="col-12">';
                                echo '              <p class="seminarDescription">' . $row2["description"] . '</p>';
                                echo '            </div>';
                                echo '          </div>';
                                echo '      </div>';
                            }
                        }
                    }
                    echo '        <div class="container">';
                    echo '          <div class="row">';
                    echo '            <div class="col-md-6 col-lg-6 col-12">';
                    echo '              <h2>' . $row["name"] . '</h2>';
                    echo '              <h5>' . $row["field"] . '</h5>';
                    echo '              <p>' . $row["info"] . '</p>';
                    echo '            </div>';
                    echo '            <div class="col-md-6 col-lg-6 col-12 noVideo">';
                    echo '              <img src="' . $row["photoMain"] . '" alt="" />';
                    echo '            </div>';
                    echo '          </div>';
                    if (!empty($row["photo1"]) || !empty($row["photo2"]) || !empty($row["photo3"])) {
                        echo '          <div class="row lectorPhotos">';
                        if (!empty($row["photo1"])) {
                            echo '            <div class="col-md-4 col-lg-4 col-6">';
                            echo '              <img src="' . $row["photo1"] . '" alt="" class="lectorPhoto" />';
                            echo '            </div>';
                        }
                        if (!empty($row["photo2"])) {
                            echo '            <div class="col-md-4 col-lg-4 col-6">';
                            echo '              <img src="' . $row["photo2"] . '" alt="" class="lectorPhoto" />';
                            echo '            </div>';
                        }
                        if (!empty($row["photo3"])) {
                            echo '            <div class="col-md-4 col-lg-4 col-6">';
                            echo '              <img src="' . $row["photo3"] . '" alt="" class="lectorPhoto" />';
                            echo '            </div>';
                        }
                        echo '          </div>';
                    }
                    echo '        </div>';
                    echo '        <div class="spacer50"></div>';
                    echo '        <div class="container modalEnd">';
                    echo '          <div class="row">';
                    echo '            <div class="col-md-7 col-lg-7 col-12">';
                    echo '              <div class="row">';
                    echo '                <div class="col-12">';
                    echo '                  <h6>Semináře</h6>';
                    echo '                </div>';
                    echo '                <div class="col-12">';
                    echo '                  <div class="eventBox">';

                    // Načtení událostí pro stejného lektora
                    include 'db_connection.php'; ///< Připojení k databázi
                    $conn->set_charset("utf8mb4");
                    $sqlevents = "SELECT * FROM events WHERE events.lector_id = $lectorId AND events.timefrom >= CURDATE() ORDER BY events.timefrom ASC LIMIT 3"; // Fetching events for the same lector with filter of curent date and limit 3
                    $resultevents = $conn->query($sqlevents);
                    $dateToday = date('Y-m-d');
                    $events = [];
                    if ($resultevents->num_rows > 0) {
                        while ($row = $resultevents->fetch_assoc()) {
                            $events[] = $row;
                        }
                    }
                    if (!empty($events)) {
                        foreach ($events as $row) {
                            if (strtotime($dateToday) <= strtotime($row["timefrom"])) {

                                echo '<div class="event-card p-2 medailonek-link" data-url="?lectorId=' . $row["lector_id"] . '&eventId=' . $row["id"] . '#modalPlace">';
                                echo '  <div class="d-flex">';
                                echo '    <div class="eventTime">';
                                echo '      <p class="date-time m-0">' . date('d-m-Y', strtotime($row["timefrom"])) . '</p>';
                                echo '      <p class="date-time m-0">' . date('d-m-Y', strtotime($row["timeto"])) . '</p>';
                                echo '    </div>';
                                echo '    <div>';
                                echo '      <p class="event-title m-0">' . $row["heading"] . '</p>';
                                echo '      <p class="event-details m-0">';
                                $sql3 = "SELECT * FROM lectors WHERE id = $lectorId"; // Zobrazení detailu lektora v kartě události (oddělený dotaz na DB, jinak by načítal události od různých lektorů)
                                $result3 = $conn->query($sql3);
                                if ($result3->num_rows > 0) {
                                    while ($row3 = $result3->fetch_assoc()) {
                                        echo '        <span class="organizer">' . $row3["name"] . '</span>';
                                        echo '        <span class="eventContact">' . ($row3["tel"] ? $row3["tel"] : $row3["email"]) . '</span>';
                                    }
                                }
                                echo '      </p>';
                                echo '    </div>';
                                echo '  </div>';
                                echo '</div>';
                            }
                        }
                    }

                    echo '                  </div>';
                    echo '                </div>';
                    echo '              </div>';
                    echo '            </div>';
                    echo '            <div class="col-md-5 col-lg-5 col-12 contactModal">';
                    echo '              <div class="col-12">';
                    echo '                <h6>Kontakt</h6>';
                    echo '              </div>';
                    if (!empty($row["tel"])) {
                        echo '              <div class="col-12 contactLine">';
                        echo '                <img src="media/seminar/lectors/modal/tel.png" alt="" />';
                        echo '                <p>' . $row["tel"] . '</p>';
                        echo '              </div>';
                    }
                    if (!empty($row["email"])) {
                        echo '              <div class="col-12 contactLine">';
                        echo '                <img src="media/seminar/lectors/modal/email.png" alt="" />';
                        echo '                <p>' . $row["email"] . '</p>';
                        echo '              </div>';
                    }
                    if (!empty($row["web1"]) || !empty($row["web2"])) {
                        echo '              <div class="col-12 contactLine">';
                        echo '                <img src="media/seminar/lectors/modal/web.png" alt="" />';
                        echo '                <p class="webLines">' . $row["web1"] . ' <br/>' . $row["web2"] . '</p>';
                        echo '              </div>';
                    }
                    echo '            </div>';
                    echo '          </div>';
                    echo '        </div>';
                    echo '      </div>';
                    echo '    </div>';
                    echo '  </div>';
                    echo '</div>';
                    echo '<div class="modal-backdrop fade show" onclick="closeModal(\'lectorModal2\')"></div>';
                }
            }
        }
        $conn->close();
    }
    ?>
    <script>
        // Funkce pro zavření modálního okna
        function closeModal(modalId) {
            // skrýt modal
            var modal = document.getElementById(modalId);
            if (modal) {
                modal.style.display = 'none';
                modal.classList.remove('show');
            }
            // odstranit backdrop
            var backdrops = document.getElementsByClassName('modal-backdrop');
            while (backdrops.length > 0) {
                backdrops[0].parentNode.removeChild(backdrops[0]);
            }
        }
    </script>
</body>

</html>