altorouter working

pull/42/head
Baltazouu 1 year ago
parent 06799359ba
commit f001193e66

@ -1,6 +1,7 @@
{
"require": {
"twig/twig": "^3.0",
"twig/extensions": "^1.5",
"ext-pdo": "*",
"ext-fileinfo": "*"
},

@ -2,6 +2,7 @@
/** PC IUT - PHP 8.1 */
/** Chargement config */
require_once __DIR__ . '/src/config/config.php';
require __DIR__ . '/vendor/autoload.php';
@ -13,4 +14,9 @@ $twig = new \Twig\Environment($loader, [
'debug' => true
]);
$twig->addExtension(new \Twig\Extension\DebugExtension());
$twig->addGlobal('dir', '/SAE_2A_FA-Reseau_ALICA/php');
$cont = new \App\controleur\FrontControleur();

@ -29,8 +29,6 @@ class FrontControleur
$router->map('POST','/[a:action]?','UtilisateurControleur');
$router->map('GET', '/[a:action]?', 'UtilisateurControleur');
$router->map('GET|POST', '/user/[i:id]/[a:action]?', 'MembreControleur');
$router->map('GET|POST', '/admin/[i:id]/[a:action]?', 'AdminControleur');
@ -48,7 +46,6 @@ class FrontControleur
if (!$match) {
$dVueErreur[] = "Error 404 Page not found";
global $twig;
echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]);
}
@ -60,9 +57,9 @@ class FrontControleur
try {
if ($controller == "MembreControleur") {
if ($_SESSION["utilisateur"] != NULL) {
echo 'not implemented';
return;
if ($_SESSION["utilisateur"]->getRole() != "Admin" || $_SESSION["utilisateur"]->getRole() != "Membre") {
echo $twig->render("connection.html",['msg' => 'Vous devez vous connecter pour effectuer cette action']);
}
}

@ -27,7 +27,8 @@ class UtilisateurControleur
$utilisateur = $userModel->connection($email, $motDePasse);
if ($utilisateur instanceof Alumni) {
$_SESSION['utilisateur'] = $utilisateur;
header('Location: index.php?action=accueil');
//header('Location: index.php?action=accueil');
echo $twig->render("inscription_success.html",[]);
exit();
} else {
$dVueErreur[] = "L'adresse email ou le mot de passe est incorrect.";
@ -36,7 +37,7 @@ class UtilisateurControleur
echo $twig->render('connection.html', ['dVueErreur' => $dVueErreur]);
}
protected function inscription()
public function inscription()
{
global $twig;
$dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant
@ -61,7 +62,7 @@ class UtilisateurControleur
$nouvelUtilisateur = $userModel->inscription($prenom,$nom,$email, $hash);
if ($nouvelUtilisateur instanceof Alumni) {
header('Location: index.php?action=inscription_success');
echo $twig->render('inscription_success.html');
exit();
} else {
$dVueErreur[] = "L'inscription a échoué, veuillez réessayer.";
@ -91,6 +92,7 @@ class UtilisateurControleur
public function consulterProfilLimite()
{
//TODO
echo 'not implemented yet';
}
public function consultOffers()
@ -102,6 +104,8 @@ class UtilisateurControleur
$typeContrat=null;
$exp = null;
$role = $_SESSION['utilisateur']->getRole() ?? NULL;
$nbOffers = 5 ;
if(isset($_GET["niveauEtudes"]) && Validation::validateTypeStudies($_GET["niveauEtudes"])) {
@ -123,6 +127,7 @@ class UtilisateurControleur
'typeContrat' => $typeContrat,
'exp' => $exp,
'niveauEtudes' => $niveauEtudes,
'role' => $role
);
$offers = $userMdl->getOffersWithFilters($params);
$totalOffers = count($offers);
@ -130,11 +135,9 @@ class UtilisateurControleur
$numberPages = ceil($totalOffers / 5);
if($numberPages == 0 )
{
$msg = NULL;
if($numberPages == 0 ) {
$msg = 'Aucune Offre Trouvée';
echo $twig->render("OffersList.html",['message' => $msg]);
return;
}
if (isset($_GET["page"]) && intval($_GET["page"]) != null) {
@ -163,15 +166,17 @@ class UtilisateurControleur
echo "filtre :".$exp."<br>";*/
echo $twig->render('OffersList.html', [
'msg' => (($msg != null) ? $msg : ""),
'offres' => $offers,
'numberPages' => $numberPages,
'currentPage' => $page,
'typeContrat' => (($typeContrat != null ? $typeContrat : "")),
'experience' => (($exp != null ? $exp : "")),
'niveauEtudes' => (($niveauEtudes != null ? $niveauEtudes : "")),
'valContrat' => (($typeContrat != null ? "&typeContrat=".$typeContrat : "")),
'valExp' => (($exp != null ? "&experience=".$exp : "")),
'valEtudes' => (($niveauEtudes != null ? "&niveauEtudes=".$niveauEtudes : ""))
'typeContrat' => (($typeContrat != null) ? $typeContrat : ""),
'experience' => (($exp != null) ? $exp : ""),
'niveauEtudes' => (($niveauEtudes != null) ? $niveauEtudes : ""),
'valContrat' => (($typeContrat != null) ? "&typeContrat=".$typeContrat : ""),
'valExp' => (($exp != null) ? "&experience=".$exp : ""),
'valEtudes' => (($niveauEtudes != null) ? "&niveauEtudes=".$niveauEtudes : ""),
'role' => $role
]);
}

@ -205,10 +205,12 @@ class UtilisateurModele
foreach ($res as $row)
{
$resal = $alGw->ObtenirById($row['offreur']);
$profilGw = new ProfilGateway(new Connection(DB_HOST,DB_USER,DB_PASS));
$resProfl = $profilGw->getProfilById($row['offreur']);
$alumni = new Alumni($resal[0]['mail'],$resal[0]['mdp'],$resal[0]['role'],$resProfl[0]['nom'],$resProfl[0]["prenom"]);
$alumni = new Alumni(intval($resal[0]['id']),$resal[0]['mail'],$resal[0]['mdp'],$resal[0]['role'],$resProfl[0]['nom'],$resProfl[0]["prenom"]);
$date = \DateTime::createFromFormat('Y-m-d', $row['date']);

@ -5,7 +5,7 @@
<title>Alica - Offres</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link rel="stylesheet" href="public/css/offres.css">
<link rel="stylesheet" href="{{dir}}/public/css/offres.css">
</head>
<body>
<header>
@ -14,13 +14,17 @@
<div class="container mt-4 d-flex align-content-center ">
<div>
<a href="createOfferForm" type="button" class="btn btn-outline-success mb-4">Publier une offre</a>
{% if role == 'Membre' or role == 'Admin' %}
<a href="{{dir}}/createOfferForm" type="button" class="btn btn-outline-success mb-4">Publier une offre</a>
{% endif %}
</div>
<div class="container mt-4">
<div class="d-flex flex-column align-items-center">
<form action="consultOffers" method="get" class="form-inline flex-wrap mb-4">
<form action="{{dir}}/consultOffers" method="get" class="form-inline flex-wrap mb-4">
<h2 class="mr-3">Filtrer les offres</h2>
<div class="form-group mr-3 flex-column justify-content-left">
@ -79,7 +83,7 @@
</div>
<div>
<a href="consultOffers" class="btn btn-info">Réinitialiser les filtres</a>
<a href="{{dir}}/consultOffers" class="btn btn-info">Réinitialiser les filtres</a>
</div>
</div>
@ -87,7 +91,7 @@
<h1 id="titrePrincipal">Offres d'emploi</h1>
{% if message is defined %}
{% if msg %}
<p>{{ message }}</p>
{% endif %}
@ -96,11 +100,11 @@
{% for offre in offres %}
<article class="mb-4">
<div class="row1">
<img src="public/uploads/{{offre.getLogo()}}" class="img-fluid rounded" alt="logo"> <!-- Ajoutez la classe "rounded" pour arrondir les coins -->
<img src="{{dir}}/public/uploads/{{offre.getLogo()}}" class="img-fluid rounded" alt="logo"> <!-- Ajoutez la classe "rounded" pour arrondir les coins -->
<h4>{{ offre.getNom() }}</h4>
</div>
<div class="row2">
<p class="authorDate"><strong>Julien Martin | {{ offre.getDateStringFr()}}</strong></p>
<p class="authorDate"><strong>{{offre.getOffreur().Prenom()}}, {{offre.getOffreur().getNom() }} | {{ offre.getDateStringFr()}}</strong></p>
<p>{{ offre.getDescription() }}</p>
</div>
@ -109,7 +113,7 @@
<p>{{offre.getVille()}}</p>
</div>
<button type="button" class="btn btn-outline-primary btn-sm mb-2 custom-button"
onclick="window.location.href = 'displayOffer&id={{offre.getId()}}'">En savoir plus</button>
onclick="window.location.href = '{{dir}}/displayOffer?id={{offre.getId()}}'">En savoir plus</button>
</article>
{% endfor %}
@ -117,19 +121,21 @@
<nav style="text-align: center;">
<nav style="text-align: center;">
{% if numberPages is defined %}
{% if numberPages > 1 %}
{% if currentPage is defined %}
{% for i in 1..numberPages %}
{% if i == currentPage %}
<!--
index.php?action=consultOffers&page={{ i }}&typeContrat={{ typeContrat }}&experience={{ experience }}&niveauEtudes={{ niveauEtudes }}
-->
<a href="consultOffers&page={{ i }}&{{valContrat}}{{valExp}}{{ValEtudes}}" class="current">{{ i }}</a>
<a href="{{dir}}/consultOffers?page={{i}}{{valContrat}}{{valExp}}{{ValEtudes}}" class="current">{{ i }}</a>
{% else %}
<a href="consultOffers&page={{ i }}&{{valContrat}}{{valExp}}{{ValEtudes}}">{{ i }}</a>
<a href="{{dir}}/consultOffers?page={{i}}{{valContrat}}{{valExp}}{{ValEtudes}}">{{ i }}</a>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% endif %}
</nav>
</nav>
@ -138,8 +144,6 @@
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>

@ -20,7 +20,7 @@
<li class="list-group-item"></li><img src="public/uploads/{{offre.getLogo()}}" alt="Logo" class="img-thumbnail" style="max-height: 50px; max-width: 50px;"></li>
<li class="list-group-item"><img src="public/uploads/{{offre.getImg()}}" alt="Offer Image" class="img-fluid"></li>
<!--<li class="list-group-item"><strong>ID:</strong> {{ offre.getId() }}</li> -->
<li class="list-group-item"><strong>Offreur:</strong> {{ offre.getOffreur().getNom() }}</li>
<li class="list-group-item"><strong>Offreur:</strong> {{offre.getOffreur().Prenom()}} {{offre.getOffreur().getNom() }}</li>
<li class="list-group-item"><strong>Nom de l'offre:</strong> {{ offre.getNom() }}</li>
<li class="list-group-item"><strong>Entreprise :</strong> {{ offre.getEntreprise() }}</li>
<li class="list-group-item"><strong>Description:</strong> {{ offre.getDescription() }}</li>

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="public/css/accueil.css">
<link rel="stylesheet" type="text/css" href="{{dir}}/public/css/accueil.css">
<title>Alica - Accueil</title>
</head>

@ -4,13 +4,16 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Alica - Connexion</title>
<link rel="stylesheet" type="text/css" href="public/css/connexion.css">
<link rel="stylesheet" type="text/css" href="{{dir}}/public/css/connexion.css">
</head>
<body>
{% if msg %}
<p>{{msg}}</p>
{% endif %}
<div class="container">
<form action="connection" method="POST">
<form action="{{dir}}/connection" method="POST">
<h3>Connexion</h3>
<div class="CadreInput">
<span>Identifiant</span>
@ -39,7 +42,7 @@
</form>
<div class="CadreInput">
<div class="box">
<a href="inscription" class="other">S'inscrire</a>
<a href="{{dir}}/inscription" class="other">S'inscrire</a>
</div>
</div>
{% if dVueErreur is not empty %}

@ -9,7 +9,7 @@
<body>
<div class="container mt-5">
<h1 class="text-center">Créer un Événement</h1>
<form action="index.php?action=creerEvenement" method="post" enctype="multipart/form-data">
<form action="creerEvenement" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="titre">Titre de l'Événement :</label>

@ -22,9 +22,9 @@
<p><strong>Organisateur:</strong> {{ evenement.organisateurId }}</p>
<p><strong>Date:</strong> {{ evenement.date }}</p>
<p><strong>Description:</strong> {{ evenement.description }}</p>
<img src="uploads/{{ evenement.getImage() }}" width="250px" class="img-fluid" alt="Event Image">
<img src="public/uploads/{{ evenement.getImage() }}" width="250px" class="img-fluid" alt="Event Image">
<p><strong>Places disponibles:</strong> {{ evenement.nbPlaceMax }}</p>
<a href="../index.php?action=listerEvenement" class="btn btn-primary">Retour</a>
<a href="listerEvenement" class="btn btn-primary">Retour</a>
</div>
{% else %}
<p>L'événement n'existe pas ou n'est pas disponible.</p>

@ -3,25 +3,23 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="public/css/erreur.css">
<link rel="stylesheet" type="text/css" href="{{dir}}/public/css/erreur.css">
<title>Alica - Erreur</title>
</head>
<style>
body{
text-align: center;
}
</style>
{% include "menu.html" %}
<body>
<header>
{% include "menu.html" %}
</header>
<h1>Erreur</h1>
{% if dVueErreur is defined %}
{% for value in dVueErreur %}
<p>{{value}}</p>
{% endfor %}
{% endif %}
<form action="accueil" method="POST">
<form action="{{dir}}/accueil" method="POST">
<input type="submit" value="Retourner à l'accueil">
</form>
</body>

@ -15,14 +15,14 @@
<div class="container mt-4">
<div class="div_titres">
<form action="../index.php?action=rechercherEvenement" method="post">
<form action="rechercherEvenement" method="post">
<input type="text" name="recherche" id="recherche" placeholder="Rechercher un événement">
<button type="submit">
<img src="assets/search.svg" alt="rechercher" width="30px">
<img src="public/assets/search.svg" alt="rechercher" width="30px">
</button>
</form>
<h1>Liste des Événements</h1>
<a href="../index.php?action=creerEvenement" class="btn btn-primary">Publier événement</a>
<a href="creerEvenement" class="btn btn-primary">Publier événement</a>
</div>
<ul class="list-group">
@ -34,13 +34,13 @@
<p><strong>Organisateur:</strong> {{ evenement.getNomOrganisateur() }}</p>
<p><strong>Date:</strong> {{ evenement.date }}</p>
<p><strong>Description:</strong> {{ evenement.description }}</p>
<img src="uploads/{{ evenement.getImage() }}" width="250px" class="img-fluid" alt="{{ evenement.titre }}">
<img src="public/uploads/{{ evenement.getImage() }}" width="250px" class="img-fluid" alt="{{ evenement.titre }}">
<p><strong>Places disponibles:</strong> {{ evenement.nbPlaceMax }}</p>
<a href="../index.php?action=avoirDetailEvenement&id={{ evenement.id }}" class="btn btn-primary">Détails</a>
<a href="avoirDetailEvenement?id={{ evenement.id }}" class="btn btn-primary">Détails</a>
</div>
<form action="../index.php?action=supprimerEvenement&id={{ evenement.id }}" method="post">
<form action="supprimerEvenement?id={{ evenement.id }}" method="post">
<button type="submit" class="btn btn-primary" id="deleteButton">
<img src="assets/close.png" alt="Supprimer" width="20px">
<img src="public/assets/close.png" alt="Supprimer" width="20px">
</button>
</form>
</li>

@ -4,11 +4,11 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Alica - Inscription</title>
<link rel="stylesheet" type="text/css" href="public/css/inscription.css">
<link rel="stylesheet" type="text/css" href="{{dir}}/public/css/inscription.css">
</head>
<body>
<div class="container">
<form action="inscription" method="POST">
<form action="{{dir}}/inscription" method="POST">
<h3>S'inscrire</h3>
<div class="CadreInput">
<span>Prénom :</span>
@ -62,7 +62,7 @@
</form>
<div class="CadreInput">
<div class="box">
<a href="connection" class="other">Se Connecter</a>
<a href="{{dir}}/connection" class="other">Se Connecter</a>
</div>
</div>
{% if dVueErreur is not empty %}

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<title>Success</title>
<link rel="stylesheet" type="text/css" href="public/css/inscription_success.css">
<link rel="stylesheet" type="text/css" href="{{dir}}/public/css/inscription_success.css">
</head>
<body>
<h1>Inscription effectuée avec succès, vous pouvez désormais vous connecter</h1>
@ -15,7 +15,7 @@
</div>
<script>
setTimeout(function () {
window.location.href = ".";
window.location.href = "{{dir}}/accueil";
}, 5000);
</script>

@ -1,13 +1,13 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<link rel="stylesheet" type="text/css" href="public/css/menu.css">
<link rel="stylesheet" type="text/css" href="{{dir}}/public/css/menu.css">
</head>
<nav class="navbar-container">
<div class="logo-container">
<a href="accueil">
<img src="public/assets/logo.png" alt="Logo" height="70px">
<a href="{{dir}}/accueil">
<img src="{{dir}}/public/assets/logo.png" alt="Logo" height="70px">
</a>
</div>
<div class="bars">
@ -17,20 +17,20 @@
</div>
<ul class="nav-items">
<li class="nav-link"><a href="#">A propos</a></li>
<li class="nav-link"><a href="#">Evenements</a></li>
<li class="nav-link"><a href="{{dir}}/listerEvenement">Evenements</a></li>
<li class="nav-link"><a href="consultOffers">Offres</a></li>
<li class="nav-link"><a href="{{dir}}/consultOffers">Offres</a></li>
<li class="nav-link"><a href="#">Nous contacter</a></li>
</ul>
<ul class="nav-items">
<!-- Afficher boutons de connexion et d'inscription -->
{% if nom and prenom %}
<!-- Afficher bouton de déconnexion -->
<a href="deconnexion" class="button">Déconnexion</a>
<a href="{{dir}}/deconnexion" class="button">Déconnexion</a>
{% else %}
<div class="login-register">
<a href="connection" class="button">Connexion</a>
<a href="inscription" class="button button2">Inscription</a>
<a href="{{dir}}/connection" class="button">Connexion</a>
<a href="{{dir}}/inscription" class="button button2">Inscription</a>
</div>
{% endif %}

Loading…
Cancel
Save