SAE15_2022/team/index.php

328 lines
17 KiB
PHP

<?php
function age($date): int {
$date = new DateTime($date);
$now = new DateTime();
$interval = $now->diff($date);
return $interval->y;
}
try {
$error = false;
$dbh = new PDO('mysql:host=saeweb2022.souidi.fr;dbname=saeweb2022', "saeweb2022");
$url = parse_url($_SERVER["REQUEST_URI"])["path"];
if (str_ends_with($url, "/")) {
$url = substr($url, 0, -1);
}
$url = explode("/", $url);
if (end($url) == "team") {
$mode = "list";
$employees = array();
foreach($dbh->query('SELECT name, jobTitle, slug FROM employee;') as $row) {
$employees[] = $row;
}
} else {
$mode = "view";
$sth = $dbh->prepare("SELECT name, jobTitle, birthdate, email FROM employee WHERE employee.slug = ?;");
$sth->execute([end($url)]);
$employee = $sth->fetch(PDO::FETCH_ASSOC);
if (empty($employee)) {
http_response_code(404);
$error = "notfound";
}
if (isset($_GET["articles"])) {
$mode = "articles";
$sth = $dbh->prepare("SELECT article.title, article.slug, article.created_at, article.excerpt FROM article JOIN employee ON article.author=employee.id WHERE employee.slug = ? ORDER BY article.created_at DESC;");
$sth->execute([end($url)]);
$employee["articles"] = $sth->fetchAll(PDO::FETCH_ASSOC);
} else {
$employee['age'] = age($employee['birthdate']);
$sth = $dbh->prepare("SELECT social.name, social.url FROM employee_social social JOIN employee ON social.employeeId=employee.id WHERE employee.slug = ?;");
$sth->execute([end($url)]);
$employee["socials"] = $sth->fetchAll(PDO::FETCH_ASSOC);
$employee['cv'] = array('formation' => array(), 'work' => array(), 'language' => array(), 'skill' => array(), 'project' => array());
if (isset($_GET["cv"])) {
$mode = "cv";
$sth = $dbh->prepare("SELECT cv.type, cv.title, cv.description, cv.link FROM cv JOIN employee ON cv.employeeId=employee.id WHERE employee.slug = ? ORDER BY cv.priority;");
$sth->execute([end($url)]);
foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $e) {
if ($e['type'] == "skill") {
$employee['cv'][$e['type']][$e['title']][] = $e['description'];
} else {
$employee['cv'][$e['type']][] = array(
'title' => $e['title'],
'description' => $e['description'],
'link' => $e['link']
);
}
}
} else {
$sth = $dbh->prepare("SELECT article.title, article.slug, article.created_at, article.excerpt FROM article JOIN employee ON article.author=employee.id WHERE employee.slug = ? ORDER BY article.created_at DESC LIMIT 2;");
$sth->execute([end($url)]);
$employee["articles"] = $sth->fetchAll(PDO::FETCH_ASSOC);
$sth = $dbh->prepare("SELECT cv.title, cv.description, cv.link FROM cv JOIN employee ON cv.employeeId=employee.id WHERE employee.slug = ? AND cv.type = 'formation' ORDER BY cv.priority LIMIT 1;");
$sth->execute([end($url)]);
foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $e) {
$employee['cv']['formation'][] = array(
'title' => $e['title'],
'description' => $e['description'],
'link' => $e['link']
);
}
}
}
$sth = null;
}
$dbh = null;
} catch (PDOException) {
http_response_code(503);
$error = "db";
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="../assets/img/favicon_dark.ico" media="(prefers-color-scheme: light)">
<link rel="icon" href="../assets/img/favicon_light.ico" media="(prefers-color-scheme: dark)">
<?php
if ($mode == 'list') {
echo '<title>Équipe - Elite Solar</title>';
echo '<meta property="og:title" content="Équipe - Elite Solar">';
echo '<meta name="description" content="L\équipe d\Elite Solar">';
echo '<meta property="og:description" content="L\équipe d\Elite Solar">';
} elseif ($mode == 'view') {
echo '<title>'. $employee['name'] .' - Elite Solar</title>';
echo '<meta property="og:title" content="'. $employee['name'] .' - Elite Solar">';
echo '<meta name="description" content="'. $employee['name'] .' chez Elite Solar">';
echo '<meta property="og:description" content="'. $employee['name'] .' chez Elite Solar">';
} elseif ($mode == 'articles') {
echo '<title>Articles de '. $employee['name'] .' - Elite Solar</title>';
echo '<meta property="og:title" content="Articles de '. $employee['name'] .' - Elite Solar">';
echo '<meta name="description" content="Articles de '. $employee['name'] .' chez Elite Solar">';
echo '<meta property="og:description" content="Articles de '. $employee['name'] .' chez Elite Solar">';
} elseif ($mode == 'cv') {
echo '<title>CV de '. $employee['name'] .' - Elite Solar</title>';
echo '<meta property="og:title" content="CV de '. $employee['name'] .' - Elite Solar">';
echo '<meta name="description" content="CV de '. $employee['name'] .'">';
echo '<meta property="og:description" content="CV de '. $employee['name'] .'">';
}
?>
<meta property="og:type" content="website">
<meta property="og:site_name" content="Elite Solar">
<meta property="og:locale" content="fr_FR">
<link rel="stylesheet" href="../assets/css/style.css">
<link rel="stylesheet" href="../assets/css/header.css">
<link rel="stylesheet" href="../assets/css/footer.css">
<link rel="stylesheet" href="../assets/css/team.css">
<script src="../assets/js/header.js"></script>
</head>
<body>
<header>
<div>
<a href="../"><img id="logo" src="../assets/img/logo_noir.png" height="60" alt="Elite Solar"></a>
<img id="burger-menu" alt="Menu" onclick="burgerMenu()" src="../assets/img/open-menu.svg">
<nav>
<ul id="menu" class="invisible">
<li><a href="../">Accueil</a></li>
<li><a href="../about">Qui sommes-nous ?</a></li>
<li><a href="../product">Produit</a></li>
<li><a href="../contact">Contact</a></li>
<li><a href="../faq">FAQ</a></li>
</ul>
</nav>
</div>
</header>
<main>
<?php
if ($error == "db") {
echo '<nav class="crumbs">
<ol>
<li class="crumb"><a href="../">Accueil</a></li>
<li class="crumb">Équipe</li>
</ol>
</nav>
<p>Une erreur est survenue lors du chargement de la page.</p>';
} elseif ($error == "notfound") {
echo '<nav class="crumbs">
<ol>
<li class="crumb"><a href="../">Accueil</a></li>
<li class="crumb"><a href="./">Équipe</a></li>
<li class="crumb">Employé</li>
</ol>
</nav>' .
"<h1>Page introuvable</h1>
<p>La page que vous cherchez à atteindre ne peut pas être trouvée.
Il est possible qu'elle ait été supprimée ou déplacée. Si vous avez saisi manuellement son adresse,
veuillez vérifier une éventuelle erreur de saisie.</p><br>
<p><a href='../../'>Retour à la page d'accueil</a></p>";
} else {
if ($mode == 'list') {
echo '<nav class="crumbs">
<ol>
<li class="crumb"><a href="../">Accueil</a></li>
<li class="crumb">Équipe</li>
</ol>
</nav>' .
"<h1>Notre équipe</h1><br><div id='team'>";
foreach ($employees as $employee) {
echo '<div>
<a href="' . $employee['slug'] . '"><h2>' . $employee['name'] . '</h2></a>
<p>' . $employee['jobTitle'] . '</p>
</div>';
}
echo "</div>";
echo"<br><p id='join'>Vous souhaitez rejoindre notre équipe ? Contactez-nous par mail à l'adresse suivante : <a href='mailto:elitesolar.contact77@gmail.com'>elitesolar.contact77@gmail.com</a></p>";
} elseif ($mode == 'view') {
echo '<nav class="crumbs">
<ol>
<li class="crumb"><a href="../">Accueil</a></li>
<li class="crumb"><a href="./">Équipe</a></li>
<li class="crumb">' . $employee["name"] . '</li>
</ol>
</nav>' .
"<h1>" . $employee["name"] . "</h1>";
echo "<h2>" . $employee["age"] . " ans | " . $employee["jobTitle"] . "</h2>";
echo '<ul id="social">';
foreach ($employee["socials"] as $social) {
echo '<li><a target="_blank" href="https://' . $social["url"] . '"><img src="../assets/img/' . $social["name"] . '.svg" width="30" height="30" alt="' . $social["name"] . '"></a></li>';
}
echo '</ul>';
echo "<h2>Articles récents (<a href='?articles'>Voir tout</a>)</h2>";
if (empty($employee["articles"])) echo '<p>Aucun article.</p>';
echo '<ul id="articles">';
foreach ($employee["articles"] as $article) {
$date = new DateTime($article['created_at']);
echo '<li><a href="../blog/' . $article["slug"] . '">' . $article["title"] . '</a><br>
Date : ' . $date->format('d/m/Y') . '<br>
Extrait : ' . $article["excerpt"] . '</li>';
}
echo '</ul>';
echo '<div id="formation"><h2>Formation (<a href="?cv">Voir le CV</a>)</h2>';
if (empty($employee["cv"]["formation"])) echo '<p>Aucune formation enregistrée.</p>';
foreach ($employee["cv"]["formation"] as $formation) {
echo '<b>' . $formation["title"] . '</b><ul><li>' . $formation["description"] . '</li></ul>';
}
echo '</div>';
} elseif ($mode == "cv") {
echo '<nav class="crumbs">
<ol>
<li class="crumb"><a href="../">Accueil</a></li>
<li class="crumb"><a href="./">Équipe</a></li>
<li class="crumb"><a href="./' . end($url) . '">' . $employee["name"] . '</a></li>
<li class="crumb">CV</li>
</ol>
</nav>' .
"<h1> CV de <a href='./" . end($url) . "'>" . $employee["name"] . "</a></h1>";
echo "<div id='cv'><div class='left'>";
echo "<h2>Informations</h2>" .
"<ul>
<li><b>Âge :</b> " . $employee["age"] . "</li>
<li><b>Adresse électronique :</b> " . $employee["email"] . "</li>";
foreach ($employee["socials"] as $social) {
if ($social["name"] == "linkedin" || $social["name"] == "github") {
echo "<li><a target='_blank' href='https://". $social['url'] ."'>" . $social["url"] . "</a></li>";
}
}
echo "</ul>";
echo '<div id="formation"><h2>Formation</h2><div>';
if (empty($employee["cv"]["formation"])) echo '<p>Aucune formation enregistrée.</p>';
foreach ($employee["cv"]["formation"] as $formation) {
echo '<b>' . $formation["title"] . '</b><ul><li>' . $formation["description"] . '</li></ul>';
}
echo '</div></div>';
echo '<div id="work"><h2>Expérience</h2><div>';
if (empty($employee["cv"]["work"])) echo '<p>Aucune expérience enregistrée.</p>';
foreach ($employee["cv"]["work"] as $work) {
echo '<b>' . $work["title"] . '</b><ul><li>' . $work["description"] . '</li></ul>';
}
echo '</div></div>';
echo '<div id="language"><h2>Langues</h2><div>';
if (empty($employee["cv"]["language"])) echo '<p>Aucune langue enregistrée.</p>';
echo '<ul>';
foreach ($employee["cv"]["language"] as $language) {
echo '<li><b>' . $language["title"] . '</b> : ' . $language["description"] . '</li>';
}
echo '</ul></div></div></div>';
echo '<div class="right"><div id="skill"><h2>Compétences</h2>';
if (empty($employee["cv"]["skill"])) echo '<div><p>Aucune compétence enregistrée.</p></div>';
while ($skill = current($employee["cv"]["skill"])) {
echo '<div><b>' . key($employee["cv"]["skill"]) . '</b><ul><li>';
echo implode('</li><li>', $skill);
echo '</li></ul></div>';
next($employee["cv"]["skill"]);
}
echo '</div>';
echo '<div id="project"><h2>Projets</h2>';
if (empty($employee["cv"]["project"])) echo '<p>Aucun projet enregistré.</p>';
foreach ($employee["cv"]["project"] as $project) {
if (empty($project["link"])) {
echo '<b>' . $project["title"] . '</b><ul><li>' . $project["description"] . '</li></ul>';
} else {
echo '<b><a target="_blank" href="' . $project["link"] . '">' . $project["title"] . '</a></b><ul><li>' . $project["description"] . '</li></ul>';
}
}
echo '</div></div></div>';
} elseif ($mode == 'articles') {
echo '<nav class="crumbs">
<ol>
<li class="crumb"><a href="../">Accueil</a></li>
<li class="crumb"><a href="./">Équipe</a></li>
<li class="crumb"><a href="./' . end($url) . '">' . $employee["name"] . '</a></li>
<li class="crumb">Articles</li>
</ol>
</nav>' .
"<h1>Articles publiés par <a href='./" . end($url) . "'>" . $employee["name"] . "</a></h1>";
if (empty($employee["articles"])) echo '<p>Aucun article.</p>';
echo '<ul id="articles">';
foreach ($employee["articles"] as $article) {
$date = new DateTime($article['created_at']);
echo '<li><a href="../blog/' . $article["slug"] . '">' . $article["title"] . '</a><br>
Date : ' . $date->format('d/m/Y') . '<br>
Extrait : ' . $article["excerpt"] . '</li>';
}
echo '</ul>';
}
}
?>
</main>
<button onclick="topFunction()" id="backToTop" title="Revenir au début de la page">⬆️</button>
<footer>
<div class="content">
<div class="text">
© <?= date("Y") ?> Elite Solar
<a href="legal">Mentions légales</a>
<a href="sitemap">Plan du site</a>
</div>
<div class="social">
<a target="_blank" href="https://linkedin.com"><img src="../assets/img/linkedin.svg" width="25" height="25" alt="LinkedIn"></a>
<a target="_blank" href="https://instagram.com/elitesolar77"><img src="../assets/img/instagram.svg" width="25" height="25" alt="Instagram"></a>
<a target="_blank" href="https://www.facebook.com/profile.php?id=100089332237449"><img src="../assets/img/facebook.svg" width="25" height="25" alt="Facebook"></a>
<a target="_blank" href="https://twitter.com/EliteSolar77"><img src="../assets/img/twitter.svg" width="25" height="25" alt="Twitter"></a>
</div>
</div>
</footer>
<script src="../assets/js/script.js"></script>
</body>
</html>