<?php
require("../../include/variables.php");
require("../../include/init.php");
require("../../include/main-functions.php");
require("../../include/objects.php");
require("../../include/inputs.php");
require("../../include/panels.php");

$pdo = sqlConnect($sqlDatabaseHost, $sqlDatabaseName, $sqlDatabaseUser, $sqlDatabasePass);

if (isset($_GET['article']) && filter_var($_GET['article'], FILTER_VALIDATE_INT) && file_exists($rootFilePath  . 'content/articles/' . $_GET['article'] . '.md')) {

    $sqlRequest = "SELECT articles.ID, articles.title, articles.creation_date, articles.last_update, articles.miniature, articles.resume, articles.author, users.username, users.display_name, roles.badge_svg, users.profile_picture FROM articles INNER JOIN users ON articles.author = users.ID LEFT JOIN roles ON users.role = roles.ID WHERE articles.ID = :articleID AND (articles.classification <= :userAccreditation OR articles.author = :userID)";
    $request = $pdo->prepare($sqlRequest);
    $request->bindParam(":articleID", $_GET['article']);
    $request->bindParam(":userAccreditation", $_SESSION['userAccreditation']);
    $request->bindParam(":userID", $_SESSION['userID']);
    $request->execute();
    $result = $request->fetchAll(PDO::FETCH_ASSOC);

    if($result) {
        $pubDateTime = strtotime($result[0]['creation_date']);
        $pubDate = date('d/m/Y H:i', $pubDateTime);
        $updateDateTime = strtotime($result[0]['last_update']);
        if($updateDateTime != $pubDateTime) {
            $updateDate = date('d/m/Y H:i', $updateDateTime);
        } else {
            $updateDate = 0;
        }
        $articleID = $result[0]['ID'];
        $articleTitle = $result[0]['title'];
        $articleResume = $result[0]['resume'];
        $miniatureURL = $result[0]['miniature'];
        $authorUsername = $result[0]['username'];
        $authorDisplayName = $result[0]['display_name'];
        $authorBadge = $result[0]['badge_svg'];
        $authorPPURL = $result[0]['profile_picture'] == NULL ? "https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png" : $result[0]['profile_picture'];
        $authorID = $result[0]['author'];
    }

} else {
    $search = isset($_GET['search']) ? "%" . htmlspecialchars($_GET['search']) . "%" : "%%";
    $sqlRequest = "SELECT articles.ID, articles.title, articles.creation_date, articles.miniature, articles.resume, users.username, users.display_name, roles.badge_svg FROM articles INNER JOIN users ON articles.author = users.ID LEFT JOIN roles ON users.role = roles.ID WHERE (articles.title LIKE :search OR articles.ID LIKE :search OR users.username LIKE :search OR users.display_name LIKE :search) AND (articles.classification <= :userAccreditation OR articles.author = :userID) ORDER BY articles.creation_date DESC";
    $request = $pdo->prepare($sqlRequest);
    $request->bindParam(":search", $search);
    $request->bindParam(":userAccreditation", $_SESSION['userAccreditation']);
    $request->bindParam(":userID", $_SESSION['userID']);
    $request->execute();
    $articlesResult = $request->fetchAll(PDO::FETCH_ASSOC);
}

?>

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

    <head>
        <?php 
            if (isset($articleID)) {
                echo ('<title>' . $articleTitle . '</title>');
                echo ('<meta charset="UTF-8">');
                echo ('<meta name="viewport" content="width=device-width, initial-scale=1.0">');

                echo ('<meta name="description" content="' . $articleResume . '">');
                echo ('<meta name="author" content="' . $authorDisplayName . '">');

                echo ('<meta property="og:locale" content="fr_FR">');
                echo ('<meta property="og:site_name" content="E59">');
                echo ('<meta property="og:type" content="article">');
                echo ('<meta property="og:title" content="' . $articleTitle . '">');
                echo ('<meta property="og:description" content="' . $articleResume . '">');
                echo ('<meta property="og:url" content="' . $rootPageURL . 'news?article=' . $articleID . '">');
                echo ('<meta property="og:image" content="' . $rootPageURL . $miniatureURL . '">');
                echo ('<meta property="og:image:width" content="500">');
                echo ('<meta property="og:image:height" content="300">');
                echo ('<meta property="og:image:type" content="image/png">');
                echo ('<meta property="og:article:published_time" content="' . $pubDateTime . '">');
                echo ('<meta property="og:article:modified_time" content="' . $updateDateTime . '">');

                echo ('<meta property="twitter:card" content="summary_large_image">');
                echo ('<meta property="twitter:site" content="@clubreseaux">');
                echo ('<meta property="twitter:title" content="' . $articleTitle . '">');
                echo ('<meta property="twitter:description" content="' . $articleResume . '">');
                echo ('<meta property="twitter:url" content="' . $rootPageURL . 'news?article=' . $articleID . '">');
                echo ('<meta property="twitter:image" content="' . $rootPageURL . $miniatureURL . '">');
                echo ('<meta property="ownpage:title" content="' . $articleTitle . '">');
                echo ('<meta property="ownpage:description" content="' . $articleResume . '">');
                echo ('<meta property="ownpage:published_date" content="' . $pubDateTime . '">');
                echo ('<meta property="ownpage:image" content="' . $rootPageURL . $miniatureURL . '">');
                echo ('<meta property="ownpage:offer_url" content="' . $rootPageURL . 'news?article=' . $articleID . '">');
                echo ('<meta name="robots" content="max-snippet:-1,max-image-preview:large,noarchive">');

                echo ('<link rel="stylesheet" href="' . $rootPageURL . 'src/css/style.css">');
                echo ('<link rel="icon" href="' . $rootPageURL . 'src/img/favicon.ico">');

                echo ('<style>');

                echo ('@media (prefers-color-scheme: dark) {');
                echo ($darkTheme);
                echo ('}');

                echo ('@media (prefers-color-scheme: light) {');
                echo ($lightTheme);
                echo ('}');

                echo ('</style>');
            } else {
                fillHead($rootPageURL, $pageTitle, $darkTheme, $lightTheme);
            }
        ?>
        <style>
            .article .article-title {
                font-family: cfont, Arial, sans-serif;
                font-size: 3em;
                margin-top: 1em;
            }

            .article .article-illustration {
                padding: 2em 0;
            }

            .article .article-illustration img {
                max-width: 60%;
                max-height: 30em;
            }

            .article .article-content img {
                max-width: 100%;
                max-height: 30em;
            }

            .article .article-content h1 {
                font-family: Arial, sans-serif;
                font-weight: bold;
                font-size: 2em;
            }

            .button {
                display: block;
                width: min-content;
            }
        </style>
    </head>

    <body class="body">

        <header>
            <div class="panel-content">
                <?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle);?>
            </div>
        </header>

        <nav>
            <div class="panel-content">
                <?php fillNav($rootPageURL);?>
            </div>
        </nav>

        <main>
            <div class="content">
                <?php
                    if(isset($articleID)) {
                        echo ('<div class="article">');
                        echo ('<div class="article-info">');
                        echo ('<div class="article-title">' . $articleTitle . '</div>');
                        echo ('<div class="article-date">' . $pubDate);
                        if ($updateDate != 0) {
                            echo (' (Mis à jour le ' . $updateDate . ')');
                        }
                        echo ('</div>');
                        if ($_SESSION['userID'] == $authorID) {
                            echo ('<a href="/editor?article=' . $articleID . '" class="button">Editer</a>');
                        }
                        
                        userWidget($authorPPURL, $authorDisplayName, $authorUsername, $authorBadge, $rootPageURL);

                        echo ('<div class="article-illustration">');
                        echo ('<img src="' . $miniatureURL . '"/>');
                        echo ('</div>');

                        echo ('<div class="article-content">');
                        $pageContent = markdownContent($rootFilePath . 'content/articles/' . $articleID . '.md', $rootFilePath);

                        echo($pageContent);
                        echo ('</div>');

                        echo ('</div>');
                        echo ('</div>');
                    } else {
                        echo ('<h1>News</h1>');

                        echo ('<form action="" method="get">');
                        $shapePath = '<path d="M10.25 3.75c-3.59 0-6.5 2.91-6.5 6.5s2.91 6.5 6.5 6.5c1.795 0 3.419-.726 4.596-1.904 1.178-1.177 1.904-2.801 1.904-4.596 0-3.59-2.91-6.5-6.5-6.5zm-8.5 6.5c0-4.694 3.806-8.5 8.5-8.5s8.5 3.806 8.5 8.5c0 1.986-.682 3.815-1.824 5.262l4.781 4.781-1.414 1.414-4.781-4.781c-1.447 1.142-3.276 1.824-5.262 1.824-4.694 0-8.5-3.806-8.5-8.5z"></path>';
                        textInput("text", $shapePath, "search", "Chercher", "");
                        echo ('</form>');
                    
                        if(empty($_GET['search']) == false) {
                            $sqlRequest = "SELECT users.username, users.display_name, roles.badge_svg, users.profile_picture FROM users JOIN roles ON users.role = roles.ID WHERE username LIKE :search OR display_name LIKE :search";
                            $request = $pdo->prepare($sqlRequest);
                            $request->bindParam(":search", $search);
                            $request->execute();
                            $userResult = $request->fetchAll(PDO::FETCH_ASSOC);
                            if($userResult) {
                                echo ('<div class="users-list">');
                                foreach ($userResult as $user) {
                                    $userPPURL = $user['profile_picture'] == NULL ? "https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png" : $user['profile_picture'];
                                    userWidget($userPPURL, $user['display_name'], $user['username'], $user['badge_svg'], $rootPageURL);
                                }
                                echo ('</div>');
                            }
                        }
                    
                        if ($articlesResult) {
                            echo('<div class="articles-list">');
                            listArticles($articlesResult, $rootPageURL);
                            echo('</div>');
                        } else {
                            echo ('Aucun article trouvé');
                        }
                    }
                ?>
            </div>
        </main>
        <footer>
            <div class="panel-content">
                <?php fillFooter($footerText);?>
            </div>
        </footer>
    </body>
</html>