This commit is contained in:
cbo 2024-08-03 09:58:43 +00:00
parent 5107b0f2c6
commit 263bc9ebe6
34 changed files with 236 additions and 62 deletions

View File

@ -1,15 +1,8 @@
# L'association E59 - UVSQ est créée !<br /> Hier, Mercredi 17 juillet 2024 a eu lieu l'assemblée générale constitutive de l'association E59-UVSQ.<br />
Hier, Mercredi 17 juillet 2024 a eu lieu l'assemblée générale constitutive de l'association E59 - UVSQ. C'est la première association fille de la Fédération E59.<br />
<br /> <br />
# Première séance<br /> Initialement, la E59 devait être une association implantée dans différentes universités en France et structurée en clubs. <br />
La première séance de l'assemblée générale a eu lieu il y a une semaine, le vendredi 12 juillet 2024 sur Discord. Durant cette séance, les statuts ont été passés en revue et quelques points flous ont été éclaircis.<br /> Cette organisation devait permettre à l'association de s'affilier à plusieurs universités et, par conséquence, avoir beaucoup de moyens.<br />
<br /> <br />
# Deuxième séance<br /> Lors d'une réunion avec la Maison des Etudiants de l'UVSQ, nous avons appris que pour pouvoir nous agréer à l'UVSQ, au moins 50% de nos membres doivent être étudiants inscrits à l'UVSQ. Cette règle entre en contradiction avec notre projet inter-universitaire.<br />
La deuxième séance s'est déroulée sur discord hier dans la soirée. Au début de la séance, les statuts ont été finalisés et votés. Ensuite a eu lieu l'élection des Directeurs de l'association par scrutin secret. Voici les membres qui ont été élus pour la période Août - Octobre 2024 :<br /> Par conséquence, nous avons décidé de structurer la E59 en fédération d'associations. La E59-UVSQ est la première association fille du projet de fédération E59.<br />
<br /> <br />
Directeur SIM (Service Informatique et Matériel) : Eliott<br />
Directeur Finances/ Trésorier : Louis<br />
Directrice Légal : Maëlyne<br />
Directeur Communication : Jan<br />
<br />
Les directeurs ont ensuite signés les statuts.

View File

@ -1,9 +0,0 @@
# Interassos UVSQ veut nous rencontrer<br />
Samedi, le vice-président de l'association Interassos UVSQ et chargé de la stratégie électorale nous a contacté sur Instagram afin de nous proposer un rendez-vous pour en savoir plus sur notre structure et notre association.<br />
<br />
# Qu'est-ce que l'Interassos UVSQ<br />
D'après le site de l'UVSQ, l'Interassos UVSQ est la fédération des associatins étudiantes de l'UVSQ. Elle rassemble une vingtaine d'associations étudiantes implantées sur la plupart des campus des Yvelines et dans un grand nombre de filières. Elle est l'organisation représentative majoritaire depuis 2012 au sein de l'UVSQ et du CROUS de Versailles, Interassos UVSQ est membre de la FAGE, la première organisation représentative des étudiants de France.<br />
<br />
# Opportunité et danger<br />
Collaborer avec l'Internassos UVSQ permettrait à la E59 de se faire connaitre au sein de l'UVSQ, elle nous permettrait d'organiser des évènements at augmenter l'attractivité de la E59.<br />
Cependant, d'après son profil, il est probable que l'Interassos UVSQ tente de prendre la main de la E59-UVSQ et soit un concurrent direct de la future fédération E59. Nous n'avons pas encore fixés de date pour notre rencontre avec l'Interassos mais il est clair que nous devrons nous préparer à affirmer notre indépendance et être clairs sur nos intentions. Nous n'avons pas l'intention de faire de l'ombre à d'autres fédérations mais nous souhaitons rester souverains afin de créer un réseau d'associations étudiantes axées sur les nouvelles technologies dans tout l'hexagone.

View File

@ -1,20 +1,20 @@
Nous sommes étudiants en 1ère et 2ème année de BUT R&T à l'IUT de Vélizy, et nous trouvons qu'il manque quelque chose à cet IUT. <br /> Nous sommes étudiants en 1ère et 2ème année de BUT R&T à l'IUT de Vélizy.<br />
<br /> <br />
Il s'avère que nous avons très peu d'interactions avec les promos voisines. <br />
Il y a 4 promos de BUT à l'IUT de Vélizy : MMI, INFO, GEII et les R&T.<br /> Il y a 4 promos de BUT à l'IUT de Vélizy : MMI, INFO, GEII et les R&T.<br />
<br /> <br />
Il s'avère que nous avons peu d'interactions avec les promos voisines. <br />
Notre IUT organise des évènements pour favoriser l'insertion des nouveaux étudiants mais elles se limitent aux promos individuelles. <br /> Notre IUT organise des évènements pour favoriser l'insertion des nouveaux étudiants mais elles se limitent aux promos individuelles. <br />
<br /> <br />
Ce que nous proposons, c'est de créer des relations de projet entre les promos.<br /> Ce que nous proposons, c'est de créer des relations de projet entre les promos.<br />
Notre vision c'est que les étudiants aient une endroit où ils pourraient travailler sur des projets concrets en collaboration avec des étudiants d'autres promos.<br /> Nous avons la vision que étudiants aient une endroit où ils pourraient venir travailler pendant leur temps libre, sur des projets concrets en collaboration avec des étudiants d'autres promos.<br />
<br /> <br />
Imaginez un jeu développé par les INFOS, désigné par les MMIS et hébergé par les R&T. Imaginez un compteur électrique connecté créé par les GEII en collaboration avec les R&T pour la partie Réseaux et les MMI & INFOS pour le design de l'interface d'administration.<br /> Nous avons tous des passions et des talents. L'idée derrière la E59 est de voir ce qu'il est possible de faire quand on met l'accent sur la collaboration et l'épanouissement.<br />
<br /> <br />
Voici les projets que nous avons à proposer :<br /> Voici les projets que nous avons à proposer :<br />
<br /> <br />
- Emission de podcasts au sein de l'IUT de Vélizy dans laquelle toutes personnes (étudiants, enseignants, chercheurs) pourraient échanger / débattre sur des sujets qui les passionnent.<br /> - Emission de podcasts au sein de l'IUT de Vélizy dans laquelle toutes personnes (étudiants, enseignants, chercheurs) pourraient échanger / débattre sur des sujets qui les passionnent.<br />
<br /> <br />
- KEZAKO, une plateforme de recherche de solutions d'apprentissage alternatives utilisant le pouvoir d'attraction de l'attention des jeux pour le mettre au service de l'apprentissage et de la recherche<br /> - KEZAKO, un projet de recherche de solutions d'apprentissage alternatives utilisant le pouvoir d'attraction de l'attention des jeux pour le mettre au service de l'apprentissage et de la recherche<br />
<br /> <br />
- Rotten Core, un système d'exploitation qui apprend le fonctionnement d'un ordinateur au niveau bas<br /> - Rotten Core, un système d'exploitation qui apprend le fonctionnement d'un ordinateur au niveau bas<br />
<br /> <br />

View File

@ -36,6 +36,9 @@ require("../../include/panels.php");
height: 20em; height: 20em;
border-radius: 5px; border-radius: 5px;
} }
.doc h3 {
font-size: 0.8em;
}
@media(max-width: 750px) { @media(max-width: 750px) {
.doc img { .doc img {
height: 15em; height: 15em;
@ -61,26 +64,54 @@ require("../../include/panels.php");
<main> <main>
<div class="content"> <div class="content">
<h1>Espace documentaire</h1> <h1>Espace documentaire</h1>
<div class="documents"> <?php
<div class="doc"> // Répertoire des fichiers PDF
<a href="./docs/pdf/statuts-e59-uvsq.pdf" target="_blank"> $pdfDir = './docs/pdf/';
<h3>Statuts E59-UVSQ</h3>
<img src="./docs/img/statuts-e59-uvsq.png"> // Répertoire pour stocker les miniatures
</a> $thumbDir = './img/';
</div> if (!file_exists($thumbDir)) {
<div class="doc"> mkdir($thumbDir, 0777, true);
<a href="./docs/pdf/PV-AG1-E59-UVSQ-signe.pdf" target="_blank"> }
<h3>PV AG1 E59-UVSQ</h3>
<img src="./docs/img/PV-AG1-E59-UVSQ-signe.png"> // Récupérer la liste des fichiers PDF
</a> $pdfFiles = glob($pdfDir . '*.pdf');
</div>
<div class="doc"> // Fonction pour générer une image à partir de la première page d'un PDF
<a href="./docs/pdf/brand-guidelines-e59.pdf" target="_blank"> function generateThumbnail($pdfFile, $outputDir, $outputFile) {
<h3>E59 Brand Guidelines</h3> $outputPath = $outputDir . '/' . pathinfo($outputFile, PATHINFO_FILENAME);
<img src="./docs/img/brand-guidelines-e59.png"> $command = "pdftoppm -jpeg -f 1 -singlefile " . escapeshellarg($pdfFile) . " " . escapeshellarg($outputPath);
</a> exec($command);
</div> }
</div>
// Générer les miniatures
foreach ($pdfFiles as $pdfFile) {
$pdfFilename = basename($pdfFile);
$thumbFilename = pathinfo($pdfFilename, PATHINFO_FILENAME) . '.jpg';
$thumbFilePath = $thumbDir . $thumbFilename;
if (!file_exists($thumbFilePath)) {
generateThumbnail($pdfFile, $thumbDir, $thumbFilename);
}
}
// Générer le HTML pour afficher la mosaïque
echo '<div class="documents">';
foreach ($pdfFiles as $pdfFile) {
$pdfFilename = basename($pdfFile);
$thumbFilename = pathinfo($pdfFilename, PATHINFO_FILENAME) . '.jpg';
$thumbFilePath = $thumbDir . $thumbFilename;
$pdfFilePath = $pdfDir . $pdfFilename;
echo '<div class="doc">';
echo '<h3>' . $pdfFilename . '</h3>';
echo '<a href="' . $pdfFilePath . '" target="_blank">';
echo '<img src="' . $thumbFilePath . '" alt="' . $pdfFilename . '">';
echo '</a>';
echo '</div>';
}
echo '</div>';
?>
</div> </div>
</main> </main>
<footer> <footer>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -50,6 +50,7 @@ if (isset($_FILES['newPP']) && $_FILES['newPP']['error'] == 0) {
} else { } else {
$status = "Erreur SQL"; $status = "Erreur SQL";
} }
$request->close();
} else { } else {
$status = "Le fichier doit être au format PNG ou JPG"; $status = "Le fichier doit être au format PNG ou JPG";
} }
@ -89,6 +90,7 @@ if (isset($_FILES['newBanner']) && $_FILES['newBanner']['error'] == 0) {
} else { } else {
$status = "Erreur SQL"; $status = "Erreur SQL";
} }
$request->close();
} else { } else {
$status = "Le fichier doit être au format PNG ou JPG"; $status = "Le fichier doit être au format PNG ou JPG";
} }
@ -106,12 +108,14 @@ if (isset($_POST['userDisplayName']) || isset($_POST['userBio'])) {
$status = "Informations mises à jour"; $status = "Informations mises à jour";
$_SESSION['userDisplayName'] = htmlspecialchars($_POST['userDisplayName']); $_SESSION['userDisplayName'] = htmlspecialchars($_POST['userDisplayName']);
} }
$request->close();
} }
$request = $pdo->prepare("SELECT username, display_name, profile_picture, banner, bio FROM users WHERE ID = :userID"); $request = $pdo->prepare("SELECT username, display_name, profile_picture, banner, bio FROM users WHERE ID = :userID");
$request->bindParam(":userID", $_SESSION['userID']); $request->bindParam(":userID", $_SESSION['userID']);
$request->execute(); $request->execute();
$result = $request->fetchAll(PDO::FETCH_ASSOC); $result = $request->fetchAll(PDO::FETCH_ASSOC);
$request->close();
if($result) { if($result) {
$userName = $result[0]['username']; $userName = $result[0]['username'];

147
html/admin/adhesions.php Normal file
View File

@ -0,0 +1,147 @@
<?php
require("../../include/variables.php");
require("../../include/init.php");
if (!isset($_SESSION['userRole']) || $_SESSION['userRole'] < 50) {
http_response_code(403);
die("Vous n'êtes pas autorisé à accéder à cette ressource");
}
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($_POST['adhesion-id'])) {
$userID = (int)$_POST['adhesion-id'];
try {
// Requête SQL pour déplacer la ligne
$sql = "
INSERT INTO adherents (firstname, lastname, born, promo, club, email, validation_date, userid)
SELECT firstname, lastname, born, promo, club, email, request_date, userid
FROM adhesion_requests
WHERE ID = ?";
$sql2 = "DELETE FROM adhesion_requests WHERE ID = ?;";
$insertStmt = $pdo->prepare($sql);
$insertStmt->bindParam(1, $userID, PDO::PARAM_INT);
// Préparation de la requête
if ($insertStmt->execute()) {
// Requête pour supprimer la ligne de la table d'origine
$sqlDelete = "DELETE FROM adhesion_requests WHERE ID = ?";
// Préparation de la requête de suppression
$deleteStmt = $pdo->prepare($sql2);
$deleteStmt->bindParam(1, $userID, PDO::PARAM_INT);
// Exécution de la requête de suppression
if ($deleteStmt->execute()) {
// Valider la transaction
$pdo->commit();
$status = "Adhésion validée";
} else {
// En cas d'erreur lors de la suppression, annuler la transaction
$pdo->rollBack();
$status = "Erreur lors de la suppression de la ligne";
error_log("Erreur lors de l'exécution de la requête de suppression : " . $deleteStmt->errorInfo()[2]);
}
} else {
// En cas d'erreur lors de l'insertion, annuler la transaction
$pdo->rollBack();
$status = "Erreur lors de l'insertion de la ligne";
error_log("Erreur lors de l'exécution de la requête d'insertion : " . $insertStmt->errorInfo()[2]);
}
} catch (Exception $e) {
// En cas d'exception, annuler la transaction
$status = "Erreur SQL";
error_log("Erreur : " . $e->getMessage());
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<?php fillHead($rootPageURL, "Admin - " . $pageName, $darkTheme, $lightTheme);?>
<style>
.users-list {
display: flex;
flex-direction: column;
}
.user-row {
margin: 1em;
border: 1px solid var(--text);
border-radius: 100px;
padding: 0 0.5em 0 1em;
}
.user-row form {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.user-row button {
display: inline;
}
</style>
</head>
<body class="body">
<header>
<div class="panel-content">
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
</div>
</header>
<nav>
<div class="panel-content">
<?php fillNav($rootPageURL);?>
</div>
</nav>
<main>
<div class="content">
<?=$status?>
<?php
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>');
$search = isset($_GET['search']) ? '%' . $_GET['search'] . '%' : '%%';
$sqlRequest = "SELECT adhesion_requests.ID, adhesion_requests.firstname, adhesion_requests.lastname, adhesion_requests.request_date FROM adhesion_requests";
$request = $pdo->prepare($sqlRequest);
$request->execute();
$result = $request->fetchAll(PDO::FETCH_ASSOC);
if ($result) {
echo ('<div class="users-list">');
foreach($result as $row) {
echo ('<div class="user-row">');
echo ('<form action="#" method="post">');
echo ('<div>' . $row['firstname'] . ' ' . $row['lastname'] . '</div><div>' . $row['request_date'] . '</div><div><input type="hidden" name="adhesion-id" value="' . $row['ID'] . '"><button type="submit" style="margin-left: 1em;">Accepter</button></div>');
echo ('</form></div>');
}
echo ('</div>');
} else {
echo ('Aucun utilisateur trouvé.');
}
?>
</div>
</main>
<footer>
<div class="panel-content">
<?php fillFooter($footerText);?>
</div>
</footer>
</body>
</html>

View File

@ -25,8 +25,10 @@ if (isset($_POST['user-id']) && isset($_POST['user-role']) && isset($_POST['user
$request->bindParam(":userAccreditation", $userAccreditation); $request->bindParam(":userAccreditation", $userAccreditation);
$request->bindParam(":userID", $userID); $request->bindParam(":userID", $userID);
if($request->execute()) { if($request->execute()) {
$pdo->commit();
$status = "Utilisateur mis à jour"; $status = "Utilisateur mis à jour";
} else { } else {
$pdo->rollback();
$status = "Erreur SQL"; $status = "Erreur SQL";
} }
} }
@ -41,6 +43,7 @@ if (isset($_POST['delete-user']) && isset($_POST['delete-user-id'])) {
} else { } else {
$status = "Erreur SQL"; $status = "Erreur SQL";
} }
$request->close();
} }
?> ?>
@ -132,6 +135,7 @@ if (isset($_POST['delete-user']) && isset($_POST['delete-user-id'])) {
echo ('Aucun utilisateur trouvé.'); echo ('Aucun utilisateur trouvé.');
} }
?> ?>
<a href="adhesions.php" class="button">Demandes d'adhésion</a>
<a href="/phpmyadmin" class="button">PHPMyAdmin</a> <a href="/phpmyadmin" class="button">PHPMyAdmin</a>
</div> </div>
</main> </main>

View File

@ -85,6 +85,7 @@ if (isset($_POST['article-content']) && isset($_POST['classification']) && isset
} else { } else {
$status = "Une erreur s'est produite"; $status = "Une erreur s'est produite";
} }
$request->close();
} }

View File

@ -102,7 +102,7 @@ if (isset($_GET['code'])) {
// L'utilisateur n'existe pas, créez-le // L'utilisateur n'existe pas, créez-le
$defaultPassword = ''; // Vous pouvez également générer un mot de passe aléatoire ou utiliser une valeur par défaut $defaultPassword = ''; // Vous pouvez également générer un mot de passe aléatoire ou utiliser une valeur par défaut
$sqlInsert = "INSERT INTO users (username, email, display_name, role, password) VALUES (:username, :email, :display_name, 'user', :password)"; $sqlInsert = "INSERT INTO users (username, email, display_name, role, password) VALUES (:username, :email, :display_name, 1, :password)";
$insert = $pdo->prepare($sqlInsert); $insert = $pdo->prepare($sqlInsert);
$insert->bindParam(":username", $username); $insert->bindParam(":username", $username);
$insert->bindParam(":email", $email); $insert->bindParam(":email", $email);

View File

@ -104,16 +104,19 @@ if (isset($_GET['article']) && filter_var($_GET['article'], FILTER_VALIDATE_INT)
} }
.article .article-illustration { .article .article-illustration {
padding: 2em 0;
max-height: 20em; max-height: 20em;
overflow: hidden; overflow: hidden;
border-radius: 10px; border-radius: 10px;
width: 100%; width: 100%;
display: flex;
align-items: center;
justify-content: center;
} }
.article .article-illustration img { .article .article-illustration img {
width: 100%; width: 100%;
transform: translate(0, -25%); height: 100%;
object-fit: cover;
} }
.article .article-content { .article .article-content {
@ -132,6 +135,7 @@ if (isset($_GET['article']) && filter_var($_GET['article'], FILTER_VALIDATE_INT)
.article .article-content h1 { .article .article-content h1 {
font-size: 2em; font-size: 2em;
margin-top: 1em;
} }
.article .article-content h2 { .article .article-content h2 {
@ -143,6 +147,11 @@ if (isset($_GET['article']) && filter_var($_GET['article'], FILTER_VALIDATE_INT)
height: 0.8em; height: 0.8em;
margin-left: 0.5em; margin-left: 0.5em;
} }
@media(max-width: 750px) {
.article .article-content h1 {
margin-top: 0;
}
}
</style> </style>
</head> </head>

View File

@ -306,10 +306,6 @@ footer {
object-fit: cover; object-fit: cover;
} }
.articles-list .article-miniature {
max-width: 15em;
}
.articles-list .article-info { .articles-list .article-info {
vertical-align: top; vertical-align: top;
} }
@ -585,13 +581,9 @@ footer {
} }
.articles-list .article-illustration { .articles-list .article-illustration {
margin: 0 auto; margin: 2em 0;
padding: 2em 0; width: 100%;
} height: auto;
.articles-list .article-illustration img {
max-width: 100%;
margin: 0 auto;
} }
.articles-list .article-info { .articles-list .article-info {

View File

@ -59,6 +59,7 @@ if(isset($_POST['article-content']) && isset($_POST['classification'])) {
} else { } else {
$status = "Erreur SQL"; $status = "Erreur SQL";
} }
$request->close();
} }
?> ?>

View File

@ -13,7 +13,8 @@ function sqlConnect($dbHost, $dbName, $dbUser, $dbPass) {
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(Exception $e) { } catch(Exception $e) {
die('<div class="error-message"><span><?=$e->getMessage();?></span></div>'); error_log($e->getMessage());
die('<div class="error-message"><span>Erreur : ' . $e->getMessage() . '</span></div>');
} }
return $pdo; return $pdo;