text:
<file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Jeu/Jeu.php';
require '../src/Jeu/JeuRepository.php';
require '../src/Miseajour/Miseajour.php';
require '../src/Miseajour/MiseajourRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil" ,$id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

if(!isset($_GET['id_jeu'])){ //Si aucun jeu selectionné, renvoie vers la page de d'administration des jeux
    header("location: jeux.php");
}

$jeuRepository = new \Jeu\JeuRepository($connection);
$MajRepository = new \Miseajour\MiseajourRepository($connection);

$jeu = $jeuRepository->getJeu($_GET['id_jeu']);

if($jeu == NULL){ //Si le jeu introuvable, renvoie vers la page des projets
    echo '
Erreur: le jeu n°'.$_GET['id_jeu'].' est introuvable!
';
    echo '
Redirection vers la liste des projets...
';
    header( "refresh:3;url=jeux.php" );
}else if(isset($_POST['creation'])){ //Si la mise a jour est créé, modification de la bdd puis renvoie vers la page du projet

    $status = $MajRepository->createMiseajour($_GET['id_jeu'], $_POST['texte'], $_POST['date']);

	$idMaj = $MajRepository->getIdMiseajour( $_GET['id_jeu'], $_POST['texte']);

	$i = 1;
	$envoie = TRUE;
    while( isset($_FILES['media'.$i] )) {
        $lien = "../media/";
        $lien = $lien . basename($_FILES['media'.$i]['name']);
        if(!move_uploaded_file($_FILES['media'.$i]['tmp_name'], $lien)) {
            echo '
'.var_dump($lien).'
';
            $envoie = FALSE;
            break;
        }else{
            $MajRepository->addMedia($idMaj, $lien);
        }
        $i = $i + 1;
    }

    if($status && $envoie){
        echo '
La mise a jour a bien été créé
';
    }else{
        echo '
Erreur: la création d\'une nouvelle mise a jour a échoué!
';
    }

    echo '
Redirection vers le projet...
';
    header( "refresh:3;url=jeuModification.php?id=".$_GET['id_jeu']);
}else{

    echo '
Création d\'une mise a jour
';

    ?>

        <form id="formAjout" action="" method="POST"  enctype="multipart/form-data" >
        	Texte : <textarea name="texte" rows="5" cols="40" required></textarea>

        	Date de publication : <input name="date" type="date"  required/>

        	<input type="button" id="bAjoutMedia" onclick="ajoutMedia()" value="Ajouter une image" />
			<input type="button" id="bSuppMedia" onclick="suppMedia()" style="background-color:red" value="Supprimer la dernière image" />

        	<input type="submit" id="bEnvoyer" name="creation" value="Envoyer"/>
        </form>

    <form action="jeuModification.php">
    	<input type="hidden" name="id" value="<?php echo $_GET['id_jeu'] ?>"/>
    	<input type="submit" class="moins" value="Annuler"/>
    </form>

<?php
}
?>

<?php
	pied();
?><file_sep><?php
	session_start();
	require("../inc/session.php");
	if( isset( $_SESSION['pseudo'] ) )
	{
		destroy_session();
		header( "location:../public/index.php");
	}
	else
	{
		header( "location:../public/index.php");
	}
?><file_sep><?php
namespace Jeu;
class JeuRepository
{
    /**
     * @var \PDO
     */
    private $connection;

    /**
     * JeuRepository constructor.
     * @param \PDO $connection
     */
    public function __construct(\PDO $connection)
    {
        $this->connection = $connection;
    }

    public function fetchAll()
    {
        $rows = $this->connection->query('SELECT * FROM "jeux" ORDER BY titre')->fetchAll(\PDO::FETCH_OBJ);
        $jeux = [];
        foreach ($rows as $row) {
            $jeu = new Jeu();
            $jeu
                ->setId($row->id_jeu)
                ->setTitre($row->titre)
                ->setGit($row->git)
                ->setTelechargement($row->telechargement)
				->setDescription($row->description);

            $jeux[] = $jeu;
        }

        return $jeux;
    }

    public function getJeu($id)
    {
        $row = $this->connection->query('SELECT * FROM "jeux" WHERE id_jeu = '.$id)->fetchAll(\PDO::FETCH_OBJ);
        if(count($row) == 0){
            return NULL;
        }

        $row = $row[0];
        $jeu = new Jeu();
        $jeu
            ->setId($row->id_jeu)
            ->setTitre($row->titre)
            ->setGit($row->git)
            ->setTelechargement($row->telechargement)
			->setDescription($row->description);

        return $jeu;
    }

    public function setJeu($id, $titre, $git, $telechargement, $description)
    {
        $sql = "UPDATE jeux
                SET titre = ?, git = ?, telechargement = ?, description = ?
                WHERE id_jeu = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($titre, $git, $telechargement, $description, $id));
        return $status;
    }

    public function deleteJeu($id)
    {
        $sql = "DELETE FROM jeux
                WHERE id_jeu = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id));
        return $status;
	}

	public function getIdJeu( $titre )
	{
		$res = $this->connection->query('SELECT id_jeu FROM jeux WHERE titre = \''.$titre.'\' ' )->fetchAll();
		return $res[0]['id_jeu'];
	}

    public function createJeu($titre, $git, $telechargement, $description)
    {
        $sql = "INSERT INTO jeux
                (titre, git, telechargement,description) VALUES (?, ?, ?, ?);";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($titre, $git, $telechargement, $description));
        return $status;
    }

	public function deleteAllMedia($id){
        $rows = $this->connection->query('SELECT lien
                                          FROM media
                                          WHERE id_jeu = '.$id)->fetchAll(\PDO::FETCH_OBJ);
        foreach ($rows as $row) {
            if (file_exists($row->lien)) {
                unlink($row->lien);
            }
        }

        $sql = "DELETE FROM media
                WHERE id_jeu = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id));
        return $status;
    }

    public function addMedia($id, $lien){
        $sql = "INSERT INTO media
                (id_jeu, lien) VALUES (?, ?);";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id, $lien));
        return $status;
    }

    public function getMedias( $id )
    {
        $rows = $this->connection->query('SELECT lien
                                          FROM media
                                          WHERE id_jeu = '.$id)->fetchAll(\PDO::FETCH_OBJ);
        $liens = [];
        foreach ($rows as $row) {
            $liens[] = $row->lien;
        }

        return $liens;
	}

	public function getMediasFromJeu( $id )
	{
		$res = $this->connection->query('SELECT * FROM media WHERE id_jeu = '.$id)->fetchAll(\PDO::FETCH_OBJ);
		return $res;
	}
}
<file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Membre/Membre.php';
require '../src/Membre/MembreRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Administration" , $id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

$membreRepository = new \Membre\MembreRepository($connection);
$membre = $membreRepository->getMembre($_SESSION['id']);

$roles = array('a' => "Administrateur", 'r' => "Membre"); // à compléter si ajout de nouveaux rôles

if(isset($_POST['modification'])){ //Si membre est modfifié, modification de la bdd puis renvoie vers la page de d'administration
    $status = $membreRepository->setMembre($_SESSION['id'], $_POST['nom'], $_POST['prenom'], $_POST['surnom'], "", $_POST['promo'], $_POST['role']);

    if($status){
        echo '
Vous informations ont bien été modifiées
';
    }else{
        echo '
Erreur: la modification de vos informations a échoué!
';
    }

    echo '
Redirection vers la page d\'administration...
';
    header( "refresh:3;url=admin.php" );

}else if(isset($_POST['modificationMdp'])){ //Si mot de passe est modifié, modification de la bdd puis rechargement de la page de d'administration
    if($membreRepository->authentication($membre->getSurnom(), $_POST['old_password']) == null){
        echo '
L\'ancien mot de passe ne correspond pas, veuillez réessayer
';
    }else if($_POST['password'] == $_POST['conf_password']){
        $status = $membreRepository->setMembrePassword($_SESSION['id'], $_POST['password']);

        if($status){
            echo '
Le mot de passe a bien été modifié
';
        }else{
            echo '
Erreur: le changement du mot de passe a échoué!
';
        }
    }else{
        echo '
Les deux mot de passes sont différents, veuillez réessayer
';
    }

    echo '
Redirection vers la page d\'administration...
';
    header( "refresh:3;url=admin.php" );
}else{

    ?>

Page d'administration

Bienvenue sur la page d'administration du site de l'association de Realitiie

Choissiez quelle partie du site vous souhaitez éditer :

    <form action="article.php"><input type="submit" class="admin" value="Articles"/></form>
    <form action="jeux.php"><input class="admin" type="submit" value="Projets"/></form>
    <form action="tuto.php"><input class="admin" type="submit" value="Tutos"/></form>

    <?php if($_SESSION['role'] == 'a'){?>
    	<form action="membre.php"><input class="admin" type="submit" value="Membres"/></form>
    <?php } ?>

Vous pouvez changer vos information ici :

    	<form action="" method="POST">
        	Nom : <input name="nom" type="text" value="<?php echo $membre->getNom() ?>" required/>

        	Prénom : <input name="prenom" type="text" value="<?php echo $membre->getPrenom() ?>" required/>

        	Surnon : <input name="surnom" type="text" value="<?php echo $membre->getSurnom() ?>" required/>

        	promo :
        	<select name="promo" required>
        		<?php
        		foreach (range(date("Y") + 3, 1968, 1) as $promo){
        		    if($promo == $membre->getPromo()){
        		        echo '<option value="'.$promo.'" selected>'.$promo.'</option>';
        		    }else{
        		        echo '<option value="'.$promo.'">'.$promo.'</option>';
        		    }
        		}
        		?>
        	</select>

        	role :
        	<select name="role" required>
        		<?php
        		foreach ($roles as $roleChar => $roleName){
        		    if($roleChar == $membre->getRole()){
        		        echo '<option value="'.$roleChar.'" selected>'.$roleName.'</option>';
        		    }else{
        		        echo '<option value="'.$roleChar.'">'.$roleName.'</option>';
        		    }
        		}
        		?>
        	</select>
        	<input type="submit" name="modification" value="Envoyer"/>
        </form>

Changer de mot de passe :

    <form action="" method="POST">
    	Ancien mot de passe : <input name="old_password" type="<PASSWORD>" required/>
    	Nouveau mot de passe : <input name="password" type="<PASSWORD>" required/>
    	Confirmer nouveau mot de passe : <input name="conf_password" type="<PASSWORD>" required/>
    	<input type="submit" name="modificationMdp" value="Envoyer"/>
    </form>

    <?php
}
?>

<?php
	pied();
?>
<file_sep><?php

function create_session($pseudo, $mdp){
    $dbName = 'realitiie';
    $dbUser = 'postgres';
    $dbPassword = '<PASSWORD>';

    $connection = new PDO("pgsql:host=localhost user=$dbUser dbname=$dbName password=$dbPassword");

    $membreRepository = new \Membre\MembreRepository($connection);

    $membre = $membreRepository->authentication($pseudo, $mdp);

    if($membre == null){
		return false;
	}

	session_start();
	$_SESSION['id'] =$membre->getId();
	$_SESSION['pseudo'] = $pseudo;
	$_SESSION['role'] = $membre->getRole();

	return true;
}

function destroy_session(){
	$_SESSION['id'] = null;
	$_SESSION['pseudo'] = null;
	$_SESSION['role'] = null;
	session_destroy();
}

?>
<file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Article/Article.php';
require '../src/Article/ArticleRepository.php';
require '../src/Membre/Membre.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil" ,$id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

$articleRepository = new \Article\ArticleRepository($connection);;
//$articleRepository = new \Article\ArticleRepository($connection);
$articles = $articleRepository->fetchWithoutTexte();
?>

Administration des articles

Cliquez sur un article pour le modifier ou le supprimer

Titre	Auteur	Date

    	<?php
    	foreach ($articles as $article) {
    	    if($_SESSION['role'] == 'a' || $article->getAuteur()->getId() == $_SESSION['id']){
        	    echo
        	    '

                    getId().'">'.$article->getTitre().'	'.$article->getAuteur()->getSurnom().'	'.$article->getDate()->format('d/m/Y').'

';
    	    }
    	}
    	?>

<form action="articleCreation.php"><input type="submit" class="plus" value="Écrire un Article"/></form>
<form action="admin.php"><input type="submit" class="moins" value="Revenir à l'espace d'administration"/></form>

<?php
	pied();
?><file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="connexion";
require '../src/Membre/Membre.php';
require '../src/Membre/MembreRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Connexion" ,$id_page);
navAccueil();

if(isset($_SESSION['pseudo'])){ //si connecté, redirection vers la page d'acceuil
	header("location: index.php");
}

require( "../inc/connexionForm.php" );

?>

<file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Jeu/Jeu.php';
require '../src/Jeu/JeuRepository.php';
require '../src/Equipe/Equipe.php';
require '../src/Equipe/EquipeRepository.php';
require '../src/Membre/Membre.php';
require '../src/Membre/MembreRepository.php';
require '../src/Miseajour/Miseajour.php';
require '../src/Miseajour/MiseajourRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil" ,$id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

if(!isset($_GET['id'])){ //Si aucun jeu selectionné, renvoie vers la page de d'administration des jeux
    header("location: jeux.php");
}

$jeuRepository = new \Jeu\JeuRepository($connection);
$equipesRepository = new \Equipe\EquipeRepository($connection);
$membresRepository = new \Membre\MembreRepository($connection);

$jeu = $jeuRepository->getJeu($_GET['id']);
if($jeu == NULL){ //Si jeu introuvable, renvoie vers la page de d'administration des jeux

    echo '
Erreur: le projet n°'.$_GET['id'].' est introuvable!
';
    echo '
Redirection vers la liste des projets...
';
	header( "refresh:3;url=jeux.php" );

}else if($_SESSION['role'] == 'a' || $equipesRepository->faitPartieEquipe($jeu->getId(), $_SESSION['id'])){ //Si pas administrateur, renvoie vers d'administration

	echo '
Erreur: Vous n\'avez pas la permission de modifier ce projet car vous ne faites pas partie de l\'equipe
';
	echo '
Redirection vers la page d\'administration...
';
	header( "refresh:3;url=admin.php" );

}else if(isset($_POST['modification'])){ //Si jeu est modfifié, modification de la bdd puis renvoie vers la page de d'administration des jeux

	$idJeu       = htmlspecialchars_decode($_GET['id']);
	$titreJeu    = htmlspecialchars_decode($_POST['titre']);
	$git         = htmlspecialchars_decode($_POST['git']);
	$lienT       = htmlspecialchars_decode($_POST['telechargement']);
	$description = htmlspecialchars_decode($_POST['description']);

	$status = $jeuRepository->setJeu($idJeu, $titreJeu, $git, $lienT, $description);

	$i = 1;
	$membres = $equipesRepository->getEquipe($idJeu)->getMembres();
	while( isset($_POST['membre'.$i]) && isset($_POST['roleMembre'.$i]) )
	{
		$idMembre = htmlspecialchars_decode($_POST['membre'.$i]);
		$role     = htmlspecialchars_decode($_POST['roleMembre'.$i]);

		$isModify = false;
		foreach( $membres as $membre )
		{
			if( $membre->getId()==intval( $idMembre ) )
			{
				$equipesRepository->setEquipe( $_GET['id'], $idMembre, $role );
				$isModify = true;
				$k = array_search($membre,$membres);
				unset( $membres[$k] );
			}
		}
		if( $isModify == false )
		{
			$equipesRepository->createEquipe( $idJeu, $idMembre, $role );
		}
		$i = $i + 1;
	}

	foreach( $membres as $membre )
	{
		$equipesRepository->deleteEquipe( $idJeu, $idMembre );
	}

    if($status){
        echo '
Le projet n°'.$_GET['id'].' a bien été modifié
';
    }else{
        echo '
Erreur: la modification du projet n°'.$_GET['id'].' a échoué!
';
    }

	echo '
Redirection vers la liste des projets...
';

    header( "refresh:3;url=jeux.php" );
}else if(isset($_POST['supression'])){ //Si jeu est supprimé, modification de la bdd puis renvoie vers la page de d'administration des jeux

	$status = $jeuRepository->deleteJeu($_GET['id']);

    if($status){
        echo '
Le projet n°'.$_GET['id'].' a bien été supprimé
';
    }else{
        echo '
Erreur: la supression du projet n°'.$_GET['id'].' a échoué!
';
    }

    echo '
Redirection vers la liste des projets...
';
    header( "refresh:3;url=jeux.php" );
}else{

	$MajRepository = new \Miseajour\MiseajourRepository($connection);
    $majs = $MajRepository->fetchAllFromJeu($_GET['id']);

    echo '
Modification du projet n°'.$jeu->getId().'
';

    ?>

        <form action="" method="POST" id="formAjoutProjet">
        	Titre : <input name="titre" type="text" value="<?php echo $jeu->getTitre() ?>" required/>

        	Description : <textarea name="description" rows="5" cols="40" required><?php echo $jeu->getDescription() ?></textarea>

        	Lien du git : <input name="git" type="text" value="<?php echo $jeu->getGit() ?>" required/>

			Lien de téléchargement : <input name="telechargement" type="text" value="<?php echo $jeu->getTelechargement() ?>" required/>
			<?php
				$equipes = $equipesRepository->getEquipe( $jeu->getId() );
				$membres = $membresRepository->fetchAll();
				$i = 1;
				foreach( $equipes->getMembres() as $equipe )
				{
					echo '
'."\n";
					echo '<select name="membre'.$i."\" required=\"required\" class=\"selectName\" style=\"display: inline; width: 50%;\">"."\n";
					foreach( $membres as $membre )
					{
						if( $membre->getId() == $equipe->getId())
						{
							echo '<option value="'.$membre->getId().'" selected="selected" >'.$membre->getSurnom().'</option>'."\n";
						}
						else
						{
							echo '<option value="'.$membre->getId().'">'.$membre->getSurnom().'</option>'."\n";
						}
					}
					echo "</select>\n";
					echo '<input type="text" required="" name="roleMembre'.$i.'" value="'.$equipes->getRoles()[$equipe->getId()].'" placeholder="rôle" style="display: inline; width: 50%;">';
					echo '
'."\n";
					$i = $i + 1;
				}
			?>
			<input type="button" id="bAjoutMembre" onclick="ajoutMembre()" value="Ajouter un membre" />
			<input type="button" id="bSuppMembre" onclick="suppMembre()" style="background-color:red" value="Supprimer le dernier Membre" />
        	<input type="submit" name="modification" value="Envoyer"/>
        </form>

    <form action="" method="POST"><input name ="supression" type="submit" class="moins" value="Supprimer le projet"/></form>

Cliquez sur une mise à jour pour la modifier ou la supprimer

    	<?php
    	foreach ($majs as $maj) {
			echo '
getId().'">'.$maj->getDate()->format('d/m/Y').'
';
    	}
    	?>

    <form action="miseajourCreation.php">
    	<input type="hidden" name="id_jeu" value="<?php echo $jeu->getId() ?>"/>
    	<input type="submit" class="plus" value="Écrire une mise à jour"/>
    </form>

    <form action="admin.php"><input type="submit" class="moins" value="Revenir à l'espace d'administration"/></form>

<?php
}
?>

<?php
	pied();
?><file_sep><?php
	$id_page="projet";
	require("../inc/inc.default.php");
	require("../inc/inc.nav.php");
	require("../src/Jeu/Jeu.php");
	require("../src/Jeu/JeuRepository.php");
	require("../src/Equipe/Equipe.php");
	require("../src/Equipe/EquipeRepository.php");
	require("../src/Membre/Membre.php");

	entete("Projets",$id_page);

	navAccueil();

	$dbName = 'realitiie';
	$dbUser = 'postgres';
	$dbPassword = '<PASSWORD>';
	$connection = new PDO("pgsql:host=localhost user=$dbUser dbname=$dbName password=$db<PASSWORD>");

	$JeuRepository = new \Jeu\JeuRepository($connection);
	$jeux = $JeuRepository->fetchAll();
	$teamRepository = new \Equipe\EquipeRepository($connection);

?>

PROJETS!

Voici ce dont les membres de l'association sont capable!

	Titre	Team	Git	Téléchargement

		<?php
    	foreach ($jeux as $jeu) {
			$imgs = $JeuRepository->getMedias($jeu->getId());
			if (isset ($imgs[0])){ // Si il y a 1 image au moins
					$img = $imgs[0];
					if(!file_exists($img)){
						$img = "../img/RobotRealitIIE.png";
					}
				}

				else
					$img = "../img/RobotRealitIIE.png";

    	    echo
    	    '

				getId().'>'.$jeu->getTitre().'
				';

			$team = $teamRepository->getEquipe($jeu->getId());
			echo '
';
			foreach ($team->getMembres() as $mem){
				echo '
'.$mem->getSurnom().' : '.$team->getRole($mem->getId()).'
';
			}
			echo '

				'.$jeu->getGit().'
				getTelechargement().' download='.$jeu->getTitre().'>download

';
    	}

    	?>

<?php pied(); ?><file_sep><?php
namespace Article;

use Membre\Membre;

class Article
{
    /**
     * @var int
     */
    private $id;

    /**
     * @var string
     */
    private $titre;

    /**
     * @var string
     */
    private $text;

    /**
     * @var Membre
     */
    private $auteur;

    /**
     * @var \DateTimeInterface
     */
    private $date;

    /**
     * @return int
     */

    /**
     * @var bool
     */
    private $cr;

    /**
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @param int $id
     * @return Article
     */
    public function setId($id)
    {
        $this->id = $id;
        return $this;
    }

    /**
     * @return string
     */
    public function getTitre()
    {
        return $this->titre;
    }

    /**
     * @param string $Titre
     * @return Article
     */
    public function setTitre($titre)
    {
        $this->titre = $titre;
        return $this;
    }

    /**
     * @return string
     */
    public function getTexte()
    {
        return $this->text;
    }

    /**
     * @param string $Texte
     * @return Article
     */
    public function setTexte($texte)
    {
        $this->text = $texte;
        return $this;
    }

    /**
     * @return Membre
     */
    public function getAuteur()
    {
        return $this->auteur;
    }

    /**
     * @param Membre $auteur
     * @return Article
     */
    public function setAuteur($auteur)
    {
        $this->auteur = $auteur;
        return $this;
    }

    /**
     * @return \DateTimeInterface
     */
    public function getDate()
    {
        return $this->date;
    }

    /**
     * @param \DateTimeInterface $date
     * @return Article
     */
    public function setDate(\DateTimeInterface $date)
    {
        $this->date = $date;
        return $this;
    }

    /**
     * @return int
     * @throws \OutOfRangeException
     */
    public function joursDepuisPublication()
    {
        $now = new \DateTime();

        if ($now < $this->getDate()) {
            throw new \OutOfRangeException('Pas encore publi�');
        }

        return $now->diff($this->getDate())->y;
    }

    /**
     * @param bool $cr
     * @return Article
     */
    public function setCr($cr)
    {
        $this->cr = $cr;
        return $this;
    }

    /**
     * @return bool
     */
    public function getCr()
    {
        return $this->cr;
    }
}

<file_sep><?php
	$id_page="equipe";
	require( "../inc/inc.default.php" );
	require( "../inc/inc.nav.php" );
	require( "../src/Membre/Membre.php");
	require( "../src/Membre/MembreRepository.php");
	entete( "Equipe" ,$id_page);
	navAccueil();

	$dbName = 'realitiie';
	$dbUser = 'postgres';
	$dbPassword = '<PASSWORD>';
	$connection = new PDO("pgsql:host=localhost user=$dbUser dbname=$dbName password=$dbPassword");

	$membreRepository = new \Membre\MembreRepository($connection);
	$membres = $membreRepository->fetchAll();

?>

NOTRE EQUIPE

Le président

Plou, règnant en tyrant est là pour nous montrer la voie à suivre. Fort de sa dernière participation
			au Laval virtual il sera chargé d'organiser les tutos et vous entrainer pour pouvoir profiter vous même de l'expérience.

Son bureau

Trésorier : Jalik, ayant pour unique objectif de partir avec la caisse, mais pas avant de l'avoir entièrement dépensée en matériel
			pour l'association. Le budget de l'association est à dépenser et c'est à vous de proposer ce qu'il faut acheter.

Secrétaire Général : DBA3, du moins quand il n'est pas entrain de mettre des B-coté sur smash bros ultimate, vous pouvez compter sur lui pour
			recevoir les compte-rendus des réunions.

Ainsi que le reste des membres

	Surnom	Prénom	Nom

			<?php
			foreach ($membres as $membre) {
				$imgs = $membreRepository->getMedias($membre->getId());
				if (isset ($imgs[0])){ // Si il y a 1 image au moins
					$img = $imgs[0];
					if(!file_exists($img)){
						$img = "../img/badassChicken.png";
					}
				}

				else
					$img = "../img/badassChicken.png";

				echo
				'

					'.$membre->getSurnom().'
					'.$membre->getPrenom().'
					'.$membre->getNom().'

';
			}
			?>

<?php
	pied();
?><file_sep>function ajoutMembre()
{
	getMembres();
}
function suppMembre()
{
	var nbMembres = document.getElementsByClassName( "selectName" ).length;
	console.log( nbMembres );
	if( nbMembres > 0 )
	{
		var membres = [];
		for( var i = 0; i < nbMembres; i++ )
		{
			membres[i] = document.getElementsByName( "membre"+(i+1) )[0];
		}
		var parent = membres[membres.length - 1].parentElement.parentElement;
		parent.removeChild( membres[membres.length - 1].parentElement );
	}
}
function ajouterSelectMembres( membres )
{
	var nbMembres = document.getElementsByClassName( "selectName" ).length;
	if( nbMembres < membres.length )
	{
		var id = "formAjoutProjet"
		var champ           = document.getElementById( id );
		var div             = document.createElement( "div" );
		var saisie          = document.createElement( "input" );
		var ajout           = document.createElement( "select" );

		ajout.name          = "membre" + (nbMembres+1);
		ajout.required      = "required";
		ajout.className     = "selectName";
		ajout.style.display = "inline";
		ajout.style.width   = "50%";

		saisie.type          = "text";
		saisie.required      = "required";
		saisie.style.display = "inline";
		saisie.name          = "roleMembre" + (nbMembres+1);
		saisie.placeholder   = "rôle";
		saisie.style.width   = "50%";

		div.style.display = "inline";

		for( var i = 0; i < membres.length; i++ )
		{
			var option = document.createElement( "option" );
			option.value = membres[i].id_membre;
			option.innerHTML = membres[i].surnom;
			ajout.appendChild( option );
		}
		//champ.appendChild( ajout );
		var elementAAjouterApres = document.getElementById( "bAjoutMembre");
		div.appendChild( ajout );
		div.appendChild( saisie );
		champ.insertBefore( div, elementAAjouterApres );
	}
}

function getMembres()
{
	var xhttp = new XMLHttpRequest();
	xhttp.onreadystatechange = function() {
		if (this.readyState == 4 && this.status == 200) {
			var resultat = JSON.parse(this.responseText);
			ajouterSelectMembres( resultat );
		}
	};
	xhttp.open("GET", "../private/getMembres.php", true);
	xhttp.send();
}

function verficationEnvoie()
{
	var nbMembres = document.getElementsByClassName( "selectName" ).length;
	if( nbMembres == 0 )
	{
		alert( "Il faut au minimum un membre pour le projet." );
		return false;
	}
	else
	{
		var membres = [];
		for( var i = 0; i < nbMembres; i++ )
		{
			membres[i] = document.getElementsByName( "membre"+(i+1) )[0];
		}
		var cpt = [];
		for( var i = 0; i < membres[0].options.length; i++ )
		{
			cpt[i] = 0;
		}
		for( var i = 0; i < membres.length; i++ )
		{
			for(var j = 0; j < membres[i].options.length; j++ )
			{
				if( membres[i].options[ j ].selected )
				{
					cpt[j] += 1;
					if( cpt[j] > 1 )
					{
						alert( "Il ne peut y avoir qu'une fois un membre par projet." );
						return false;
					}
				}
			}
		}
		return true;
	}
}<file_sep><?php
	$id_page="index";
	require( "../inc/inc.default.php" );
	require( "../inc/inc.nav.php" );
	entete( "Accueil" ,$id_page);
	navAccueil();

?>

REALITIIE

_____________________________________________________

Fondée en 2012, suite à la première participation au concours Laval Virtual d'élèves de l'ENSIIE,
RealitIIE est l'association regroupant tous les élèves motivés par la création de jeux vidéo principalement VR.
Mais depuis, l'association s'est diversifiée pour inclure également le développement de jeux
videos au sens large.

Elle regroupe maintenant les activitées de game design, de modélisation, d'animation, de création de
musiques et sons, de développement et tout ce qui gravite autour de la création du jeu vidéo en général.

_____________________________________________________

NOS ACTIVITES

DES TUTOS

_________________________________________

Nous avons pour vocation de créer des jeux vidéos, en 2D ou en 3D.
Si votre choix de carrière est déjà porté sur le développement
de jeux, ou si vous êtes un amateur passionné, nous vous invitons à nous rejoindre.
L'association compte dans ses rangs plusieurs vétérans de Blender et Unity,
 qui seront ravis de vous aider dans vos projets.

DU MATOS

________________________________________

L'association REALITIIE a également accès à la Platech, et donc à tous le matériel qui
s'y trouve (ou presque). Nous partageons aussi certaines de nos créations pour les faire tester.
Pour ceux qui sont intéressés par la VR, le HTC VIVE leur est accessible, que ce soit
pour tester leurs propres projets, ou pour améliorer leurs scores sur Beatsaber.

LAVAL

___________________________________________

Avoir du matériel, c'est bien, savoir s'en servir, c'est mieux. C'est dans cette optique
qu'on encourage nos membres à s'inscrire pour la game jam organisée comme chaque année à Laval,
ou encore à présenter leurs propres jeux réalisés durant l'année. Les participants peuvent profiter
de la plus grande exposition de réalité virtuelle en Europe.

DES PROJETS

___________________________________________

Vous trouverez sur cette page les différents projets réalisés par les membres de REALITIIE.
 Les projets étant en accès libre, vous pourrez vous-même les installer et y jouer (il n'y a pas de virus c'est promis).
 On vous invite donc à les tester et à nous laisser des avis constructifs.

<?php
	pied();
?><file_sep><?php
namespace Miseajour;

use Jeu\Jeu;

class MiseajourRepository
{
    /**
     * @var \PDO
     */
    private $connection;

    /**
     * MiseajourRepository constructor.
     * @param \PDO $connection
     */
    public function __construct(\PDO $connection)
    {
        $this->connection = $connection;
    }

    public function fetchAll()
    {
        $rows = $this->connection->query('SELECT *
                                          FROM "miseajour" NATURAL JOIN "jeux"
                                          ORDER BY date DESC')->fetchAll(\PDO::FETCH_OBJ);
        $miseajours = [];
        foreach ($rows as $row) {
            $jeu = new Jeu();
            $jeu
            ->setId($row->id_jeu)
            ->setTitre($row->titre)
            ->setGit($row->git)
            ->setTelechargement($row->telechargement);

            $miseajour = new Miseajour();
            $miseajour
                ->setId($row->id_maj)
                ->setJeu($jeu)
                ->setTexte($row->texte)
                ->setDate(new \DateTimeImmutable($row->date));

            $miseajours[] = $miseajour;
        }

        return $miseajours;
    }

    public function fetchAllFromJeu($id_jeu)
    {
        $rows = $this->connection->query('SELECT *
                                          FROM "miseajour" NATURAL JOIN "jeux"
                                          WHERE jeux.id_jeu = '.$id_jeu.'
                                          ORDER BY date DESC')->fetchAll(\PDO::FETCH_OBJ);
        $miseajours = [];
        foreach ($rows as $row) {
            $jeu = new Jeu();
            $jeu
            ->setId($id_jeu)
            ->setTitre($row->titre)
            ->setGit($row->git)
            ->setTelechargement($row->telechargement);

            $miseajour = new Miseajour();
            $miseajour
            ->setId($row->id_maj)
            ->setJeu($jeu)
            ->setTexte($row->texte)
            ->setDate(new \DateTimeImmutable($row->date));

            $miseajours[] = $miseajour;
        }

        return $miseajours;
    }

    public function getMiseajour($id)
    {
        $row = $this->connection->query('SELECT texte, date, id_jeu, titre, git, telechargement
                                         FROM "miseajour" NATURAL JOIN "jeux"
                                         WHERE id_maj = '.$id)->fetchAll(\PDO::FETCH_OBJ);

        if(count($row) == 0){
            return NULL;
        }
        $row = $row[0];

        $jeu = new Jeu();
        $jeu
        ->setId($row->id_jeu)
        ->setTitre($row->titre)
        ->setGit($row->git)
        ->setTelechargement($row->telechargement);

        $miseajour = new Miseajour();
        $miseajour
        ->setId($id)
        ->setJeu($jeu)
        ->setTexte($row->texte)
        ->setDate(new \DateTimeImmutable($row->date));

        return $miseajour;

    }

    public function setMiseajour($id, $texte, $date)
    {
        $sql = "UPDATE miseajour
                SET texte = ?, date = ?
                WHERE id_maj = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($texte, $date, $id));
        return $status;
    }

    public function deleteMiseajour($id)
    {
        $sql = "DELETE FROM miseajour
                WHERE id_maj = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id));
        return $status;
    }

    public function createMiseajour($id_jeu, $texte, $date)
    {
        $sql = "INSERT INTO miseajour
                (id_jeu, texte, date) VALUES (?, ?, ?);";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id_jeu, $texte, $date));
        return $status;
    }

	public function getIdMiseajour( $id_jeu, $texte)
    {
        $row = $this->connection->query('SELECT id_maj FROM miseajour WHERE id_jeu = \''.$id_jeu.'\' AND texte = \''.$texte.'\' ')->fetchAll(\PDO::FETCH_OBJ);
        if(count($row) == 0){
            return NULL;
        }
        return $row[0]->id_maj;
    }

	public function deleteAllMedia($id){
        $rows = $this->connection->query('SELECT lien
                                          FROM media
                                          WHERE id_maj = '.$id)->fetchAll(\PDO::FETCH_OBJ);
        foreach ($rows as $row) {
            if (file_exists($row->lien)) {
                unlink($row->lien);
            }
        }

        $sql = "DELETE FROM media
                WHERE id_maj = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id));
        return $status;
    }

    public function addMedia($id, $lien){
        $sql = "INSERT INTO media
                (id_maj, lien) VALUES (?, ?);";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id, $lien));
        return $status;
    }

    public function getMedias( $id )
    {
        $rows = $this->connection->query('SELECT lien
                                          FROM media
										  WHERE id_maj = '.$id)->fetchAll(\PDO::FETCH_OBJ);
        $liens = [];
        foreach ($rows as $row) {
            $liens[] = $row->lien;
        }

        return $liens;
	}

	public function getMediasFromMiseajour( $id )
	{
		$res = $this->connection->query('SELECT * FROM media WHERE id_maj = '.$id)->fetchAll(\PDO::FETCH_OBJ);
		return $res;
	}
}
<file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Article/Article.php';
require '../src/Article/ArticleRepository.php';
require '../src/Membre/Membre.php';
require '../src/Membre/MembreRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil" ,$id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

$articleRepository = new \Article\ArticleRepository($connection);

if(!isset($_GET['id'])){ //Si aucun article selectionné, renvoie vers la page de d'administration des articles
    header("location: article.php");
}

$article = $articleRepository->getArticle($_GET['id']);

if($article == NULL){ //Si article introuvable, renvoie vers la page de d'administration des articles
    echo '
Erreur: l\'article n°'.$_GET['id'].' est introuvable!
';
    echo '
Redirection vers la liste des articles...
';
    header( "refresh:3;url=article.php" );

}else if($_SESSION['role'] != 'a' && $article->getAuteur()->getId() != $_SESSION['id']){ //Si pas administrateur, renvoie vers d'administration

	echo '
Erreur: Vous n\'avez pas la permission de modifier cette article car vous n\'en êtes pas l\'auteur
';
	echo '
Redirection vers la page d\'administration...
';
	header( "refresh:3;url=admin.php" );
}else if(isset($_POST['modification'])){ //Si article est modfifié, modification de la bdd puis renvoie vers la page de d'administration des articles
    if(!isset($_POST['auteur'])){
        $_POST['auteur'] = $_SESSION['id'];
    }
	$idArticle = htmlspecialchars_decode( $_GET['id'] );
	$titre     = htmlspecialchars_decode( $_POST['titre'] );
	$texte     = htmlspecialchars_decode( $_POST['texte'] );
	$auteur    = htmlspecialchars_decode( $_POST['auteur'] );
	$date      = htmlspecialchars_decode( $_POST['date'] );

	/*$i = 1;
	echo "patate";
	while( isset($_FILES['media'.$i]) && $i < 5 )
	{
		//$lien = htmlspecialchars_decode( $_FILES['media'.$i] );
		echo var_dump($_FILES['media'.$i]);
		echo var_dump($_POST['media'.$i]);
		$i = $i + 1;
	}*/

    if (isset($_POST['cr'])){
        $cr = $_POST['cr'];
    }else{
        $cr = 0;
    }

    $status = $articleRepository->setArticle( $idArticle, $idArticle, $texte, $auteur, $date, $cr);

    if($status){
        echo '
L\'article n°'.$_GET['id'].' a bien été modifié
';
    }else{
        echo '
Erreur: la modification de l\'article n°'.$_GET['id'].' a échoué!
';
    }

    echo '
Redirection vers la liste des articles...
';
    header( "refresh:3;url=article.php" );
}else if(isset($_POST['supression'])){ //Si article est supprimé, modification de la bdd puis renvoie vers la page de d'administration des articles

    $articleRepository->deleteAllMedia($_GET['id']);
    $status = $articleRepository->deleteArticle($_GET['id']);

    if($status){
        echo '
L\'article n°'.$_GET['id'].' a bien été supprimé
';
    }else{
        echo '
Erreur: la supression de l\'article n°'.$_GET['id'].' a échoué!
';
    }

    echo '
Redirection vers la liste des articles...
';
    header( "refresh:3;url=article.php" );
}else{

    $membreRepository = new \Membre\MembreRepository($connection);
    $membres = $membreRepository->fetchAll();

    echo '
Modification de l\'article n°'.$article->getId().'
';

    ?>

        <form action="" method="POST" enctype="multipart/form-data" id="formAjout">
        	Titre : <input name="titre" type="text" value="<?php echo $article->getTitre() ?>" required/>

        	Texte : <textarea name="texte" rows="5" cols="40" required><?php echo $article->getTexte() ?></textarea>

        	<?php if($_SESSION['role'] == 'a'){?>
            	Auteur :
            	<select name="auteur" required>
            		<?php
            		foreach ($membres as $membre){
            		    if($membre->getId() == $article->getAuteur()->getId()){ //Selectionne l'auteur de l'article
                            echo '<option value="'.$membre->getId().'" selected>'.$membre->getSurnom().'</option>';
            		    }else{
            		        echo '<option value="'.$membre->getId().'">'.$membre->getSurnom().'</option>';
            		    }
            		}
            		?>
				</select>

            <?php } ?>
        	Date de publication : <input name="date" type="date" value="<?php echo $article->getDate()->format('Y-m-d') ?>" required/>
			<?php
				/*$medias = $articleRepository->getMediasFromArticle($article->getId());
				$i = 1;
				foreach( $medias as $media )
				{
					echo var_dump( $media );
					echo '
';
					echo '<input type="file" value="'.$media->lien.'" name="media'.$i.'">';
					echo '<input type="hidden" value="'.$media->id_media.'" name="idMedia'.$i.'">';
					echo '
';
					$i = $i + 1;
				}
				*/
				echo 'getId().'" >Modifier les images de l\'article';
			?>

			<?php if($article->getCr()){ ?>
				Compte-rendu : <input type="checkbox" name="cr" value="1" checked>
			<?php }else{ ?>
				Compte-rendu : <input type="checkbox" name="cr" value="1">
			<?php } ?>

        	<input type="submit" name="modification" value="Envoyer"/>
        </form>

    <form action="" method="POST"><input name ="supression" type="submit" class="moins" value="Supprimer l'article"/></form>

<?php
}
?>

<?php
	pied();
?><file_sep><?php
function navAccueil()
{
	echo "\t\n";
	echo "\t
";
	$date = date( "d/m/Y" );

	if( isset( $_SESSION['pseudo'] ) )
	{
		echo "\t</button>\n";
		echo "\t
 Bonjour ".$_SESSION['pseudo']."
\n";
		echo "
Date : $date
";
	}
	else
	{
		echo "\t<button type=\"button\" class=\"bDecoCo\">Connexion</button>\n";
		echo "
Date : $date
";
	}
	echo "
";
	echo "\t\n";
	echo "
\n";
}
?><file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Tuto/Tuto.php';
require '../src/Tuto/TutoRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil", $id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

$tutoRepository = new \Tuto\TutoRepository($connection);

if(!isset($_GET['id'])){ //Si aucun tuto selectionné, renvoie vers la page de d'administration des tutos
    header("location: tuto.php");
}

$tuto = $tutoRepository->getTuto($_GET['id']);

if($tuto == NULL){ //Si tuto introuvable, renvoie vers la page de d'administration des tutos
    echo '
Erreur: le tuto n°'.$_GET['id'].' est introuvable!
';
    echo '
Redirection vers la liste des tutos...
';
    header( "refresh:3;url=tuto.php" );

}else if(isset($_POST['modification'])){ //Si tuto est modfifié, modification de la bdd puis renvoie vers la page de d'administration des tutos

    $status = $tutoRepository->setTuto($_GET['id'], $_POST['titre'], $_POST['texte'], $_POST['pdf']);

    if($status){
        echo '
Le tuto n°'.$_GET['id'].' a bien été modifié
';
    }else{
        echo '
Erreur: la modification du tuto n°'.$_GET['id'].' a échoué!
';
    }

    echo '
Redirection vers la liste des tutos...
';
    header( "refresh:3;url=tuto.php" );
}else if(isset($_POST['supression'])){ //Si tuto est supprimé, modification de la bdd puis renvoie vers la page de d'administration des tutos

    $status = $tutoRepository->deleteTuto($_GET['id']);

    if($status){
        echo '
Le tuto n°'.$_GET['id'].' a bien été supprimé
';
    }else{
        echo '
Erreur: la supression du tuto n°'.$_GET['id'].' a échoué!
';
    }

    echo '
Redirection vers la liste des tutos...
';
    header( "refresh:3;url=tuto.php" );
}else{

    echo '
Modification du tutoriel n°'.$tuto->getId().'
';

    ?>

        <form action="" method="POST">
        	Titre : <input name="titre" type="text" required value="<?php echo $tuto->getTitre() ?>"/>

        	Texte : <textarea name="texte" rows="5" cols="40" required><?php echo $tuto->getTexte() ?></textarea>

        	Lien du PDF : <input name="pdf" type="text" value="<?php echo $tuto->getPdf() ?>" required/>

        	<input type="submit" name="modification" value="Envoyer"/>
        </form>

    <form action="" method="POST"><input name ="supression" type="submit" class="moins" value="Supprimer l'tuto"/></form>

<?php
}
?>

<?php
	pied();
?><file_sep><?php
namespace Article;

use Membre\Membre;

class ArticleRepository
{
    /**
     * @var \PDO
     */
    private $connection;

    /**
     * ArticleRepository constructor.
     * @param \PDO $connection
     */
    public function __construct(\PDO $connection)
    {
        $this->connection = $connection;
    }

    public function fetchAll()
    {
        $rows = $this->connection->query('SELECT id_article, titre, texte, date, compte_rendu, id_membre, nom, prenom, surnom, promo, role
                                          FROM "article" NATURAL JOIN "membre"')->fetchAll(\PDO::FETCH_OBJ);
        $articles = [];
        foreach ($rows as $row) {
            $article = new Article();
            $auteur = new Membre();
            $auteur
            ->setId($row->id_membre)
            ->setNom($row->nom)
            ->setPrenom($row->prenom)
            ->setSurnom($row->surnom)
            ->setPromo($row->promo)
            ->setRole($row->role);
            $article
            ->setId($row->id_article)
            ->setTitre($row->titre)
            ->setTexte($row->texte)
            ->setAuteur($auteur)
            ->setDate(new \DateTimeImmutable($row->date))
            ->setCr($row->compte_rendu);

            $articles[] = $article;
        }

        return $articles;
    }

	public function fetchCompteRendu()
    {
        $rows = $this->connection->query('SELECT id_article, titre, texte, date, compte_rendu, id_membre, nom, prenom, surnom, promo, role
                                          FROM "article" NATURAL JOIN "membre"
										  WHERE compte_rendu IS true
										  ORDER BY date DESC')->fetchAll(\PDO::FETCH_OBJ);
        $articles = [];
        foreach ($rows as $row) {
            $article = new Article();
            $auteur = new Membre();
            $auteur
            ->setId($row->id_membre)
            ->setNom($row->nom)
            ->setPrenom($row->prenom)
            ->setSurnom($row->surnom)
            ->setPromo($row->promo)
            ->setRole($row->role);
            $article
            ->setId($row->id_article)
            ->setTitre($row->titre)
            ->setTexte($row->texte)
            ->setAuteur($auteur)
            ->setDate(new \DateTimeImmutable($row->date))
            ->setCr($row->compte_rendu);

            $articles[] = $article;
        }

        return $articles;
    }

	public function fetchOther()
    {
        $rows = $this->connection->query('SELECT id_article, titre, texte, date, compte_rendu, id_membre, nom, prenom, surnom, promo, role
                                          FROM "article" NATURAL JOIN "membre"
										  WHERE LOWER(titre) NOT LIKE \'%compte%rendu%\'
										  ORDER BY date DESC
										  LIMIT 10')->fetchAll(\PDO::FETCH_OBJ);
        $articles = [];
        foreach ($rows as $row) {
            $article = new Article();
            $auteur = new Membre();
            $auteur
            ->setId($row->id_membre)
            ->setNom($row->nom)
            ->setPrenom($row->prenom)
            ->setSurnom($row->surnom)
            ->setPromo($row->promo)
            ->setRole($row->role);
            $article
            ->setId($row->id_article)
            ->setTitre($row->titre)
            ->setTexte($row->texte)
            ->setAuteur($auteur)
            ->setDate(new \DateTimeImmutable($row->date))
            ->setCr($row->compte_rendu);

            $articles[] = $article;
        }

        return $articles;
    }

    public function fetchWithoutTexte()
    {
        $rows = $this->connection->query('SELECT id_article, titre, date, compte_rendu, id_membre, nom, prenom, surnom, promo, role
                                          FROM "article" NATURAL JOIN "membre"
                                          ORDER BY date DESC')->fetchAll(\PDO::FETCH_OBJ);
        $articles = [];
        foreach ($rows as $row) {
            $article = new Article();
            $auteur = new Membre();
            $auteur
                ->setId($row->id_membre)
                ->setNom($row->nom)
                ->setPrenom($row->prenom)
                ->setSurnom($row->surnom)
                ->setPromo($row->promo)
                ->setRole($row->role);
            $article
                ->setId($row->id_article)
                ->setTitre($row->titre)
                ->setAuteur($auteur)
                ->setDate(new \DateTimeImmutable($row->date))
                ->setCr($row->compte_rendu);

            $articles[] = $article;
        }

        return $articles;
    }

    public function getArticle($id)
    {
        $row = $this->connection->query('SELECT id_article, titre, texte, date, compte_rendu, id_membre, nom, prenom, surnom, promo, role
                                         FROM "article" NATURAL JOIN "membre"
                                         WHERE id_article = '.$id)->fetchAll(\PDO::FETCH_OBJ);
        if(count($row) == 0){
            return NULL;
        }
        $row = $row[0];
        $article = new Article();
        $auteur = new Membre();
        $auteur
            ->setId($row->id_membre)
            ->setNom($row->nom)
            ->setPrenom($row->prenom)
            ->setSurnom($row->surnom)
            ->setPromo($row->promo)
            ->setRole($row->role);
        $article
            ->setId($row->id_article)
            ->setTitre($row->titre)
            ->setTexte($row->texte)
            ->setAuteur($auteur)
            ->setDate(new \DateTimeImmutable($row->date))
            ->setCr($row->compte_rendu);

        return $article;
    }

    public function setArticle($id, $titre, $texte, $auteur, $date, $cr)
    {
        $sql = "UPDATE article
                SET titre = ?, texte = ?, id_membre = ?, date = ?, compte_rendu = ?
                WHERE id_article = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($titre, $texte, $auteur, $date, $cr, $id));
        return $status;
    }

    public function deleteArticle($id)
    {
        $sql = "DELETE FROM article
                WHERE id_article = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id));
        return $status;
    }

    public function createArticle($titre, $texte, $auteur, $date, $cr)
    {
        $sql = "INSERT INTO article
                (titre, texte, id_membre, date, compte_rendu) VALUES (?, ?, ?, ?, ?);";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($titre, $texte, $auteur, $date, $cr));
        return $status;
    }

    public function getIdArticle( $titre )
    {
        $row = $this->connection->query('SELECT id_article FROM article WHERE titre = \''.$titre.'\' ')->fetchAll(\PDO::FETCH_OBJ);
        if(count($row) == 0){
            return NULL;
        }
        return $row[0]->id_article;
    }

    public function deleteAllMedia($id){
        $rows = $this->connection->query('SELECT lien
                                          FROM media
                                          WHERE id_article = '.$id)->fetchAll(\PDO::FETCH_OBJ);
        foreach ($rows as $row) {
            if (file_exists($row->lien)) {
                unlink($row->lien);
            }
        }

        $sql = "DELETE FROM media
                WHERE id_article = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id));
        return $status;
    }

    public function addMedia($id, $lien){
        $sql = "INSERT INTO media
                (id_article, lien) VALUES (?, ?);";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id, $lien));
        return $status;
    }

    public function getMedias( $id )
    {
        $rows = $this->connection->query('SELECT lien
                                          FROM media
                                          WHERE id_article = '.$id)->fetchAll(\PDO::FETCH_OBJ);
		$liens = [];
        foreach ($rows as $row) {
            $liens[] = $row->lien;
        }

        return $liens;
	}

	public function getMediasFromArticle( $id )
	{
		$res = $this->connection->query('SELECT * FROM media WHERE id_article = '.$id)->fetchAll(\PDO::FETCH_OBJ);
		return $res;
	}
}
<file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Membre/Membre.php';
require '../src/Membre/MembreRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil" ,$id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

if(!isset($_GET['id'])){ //Si aucun membre selectionné, renvoie vers la page de d'administration des membres
    header("location: membre.php");
}

$dbName = 'realitiie';
$dbUser = 'postgres';
$dbPassword = '<PASSWORD>';
$connection = new PDO("pgsql:host=localhost user=$dbUser dbname=$dbName password=$dbPassword");

$membreRepository = new \Membre\MembreRepository($connection);

$membre = $membreRepository->getMembre($_GET['id']);

$roles = array('a' => "Administrateur", 'r' => "Membre"); // à compléter si ajout de nouveaux rôles

if($membre == NULL){ //Si membre introuvable, renvoie vers la page de d'administration des membres
    echo '
Erreur: le membre n°'.$_GET['id'].' est introuvable!
';
    echo '
Redirection vers la liste des membres...
';
    header( "refresh:3;url=membre.php" );
}else if(isset($_POST['modification'])){ //Si membre est modfifié, modification de la bdd puis renvoie vers la page de d'administration des membres
    $status = $membreRepository->setMembre($_GET['id'], $_POST['nom'], $_POST['prenom'], $_POST['surnom'], $_POST['password'], $_POST['promo'], $_POST['role']);

    if($status){
        echo '
Le membre n°'.$_GET['id'].' a bien été modifié
';
    }else{
        echo '
Erreur: la modification du membre n°'.$_GET['id'].' a échoué!
';
    }

    echo '
Redirection vers la liste des membres...
';
    header( "refresh:3;url=membre.php" );
}else if(isset($_POST['supression'])){ //Si membre est supprimé, modification de la bdd puis renvoie vers la page de d'administration des membres
	$membreRepository->deleteAllMedia($_GET['id']);
	$status = $membreRepository->deleteMembre($_GET['id']);

    if($status){
        echo '
Le membre n°'.$_GET['id'].' a bien été supprimé
';
    }else{
        echo '
Erreur: la supression du membre n°'.$_GET['id'].' a échoué!
';
    }

    echo '
Redirection vers la liste des membres...
';
    header( "refresh:3;url=membre.php" );
}else{

    echo '
Modification du membre n°'.$membre->getId().'
';

    ?>

    	<form action="" method="POST">
        	Nom : <input name="nom" type="text" value="<?php echo $membre->getNom() ?>" required/>

        	Prénom : <input name="prenom" type="text" value="<?php echo $membre->getPrenom() ?>" required/>

        	Surnon : <input name="surnom" type="text" value="<?php echo $membre->getSurnom() ?>" required/>

        	Mot de passe (laissez vide pour ne pas modifier) : <input name="password" type="password"/>

        	promo :
        	<select name="promo" required>
        		<?php
        		foreach (range(date("Y") + 3, 1968, 1) as $promo){
        		    if($promo == $membre->getPromo()){
        		        echo '<option value="'.$promo.'" selected>'.$promo.'</option>';
        		    }else{
        		        echo '<option value="'.$promo.'">'.$promo.'</option>';
        		    }
        		}
        		?>
        	</select>

        	role :
        	<select name="role" required>
        		<?php
        		foreach ($roles as $roleChar => $roleName){
        		    if($roleChar == $membre->getRole()){
        		        echo '<option value="'.$roleChar.'" selected>'.$roleName.'</option>';
        		    }else{
        		        echo '<option value="'.$roleChar.'">'.$roleName.'</option>';
        		    }
        		}
        		?>
        	</select>
			<?php
				echo 'getId().'" >Modifier la photo de profil';
			?>
        	<input type="submit" name="modification" value="Envoyer"/>
        </form>

    <form action="" method="POST"><input name ="supression" type="submit" class="moins" value="Supprimer le membre"/></form>

<?php
}
?>

<?php
	pied();
?><file_sep><?php
    $dbName = 'realitiie';
    $dbUser = 'postgres';
    $dbPassword = '<PASSWORD>';
    $connection = new PDO("pgsql:host=localhost user=$dbUser dbname=$dbName password=$dbPassword");

	$request = "SELECT id_membre, surnom FROM membre";
	$result = $connection->query($request);
	$result->fetch(PDO::FETCH_ASSOC);
	foreach( $result as $membre )
	{
		$a[] = $membre;
	}
	$send = json_encode($a);
	echo $send;
?>
<file_sep><?php
	$id_page="laval";
	require("../inc/inc.default.php");
	require("../inc/inc.nav.php");
	entete("Laval",$id_page);
	navAccueil();

?>

LAVAL VIRTUAL

Laval Virtual : Quézaco?

		Laval Virtual est le plus grand salon d'Europe sur la Réalitée Virtuelle (VR),
		Réalitée Augmentée (AR) et les techniques immersives. Il se déroule tous les ans en Avril
		à Laval et propose un salon avec plus de 300 exposants et plus de 200 conférenciers.
		Pour plus d'information :  Laval-virtual.com.

Et RealitIIE dans tous ça?

		Le salon de Laval Virtual propose aussi une Game Jam qui consiste à créer un jeu
		en VR/AR en un temps limité de 24h. L'association RealitIIE à donc été initialement
		créée en 2012 suite à la première participation de l'école à cette Game Jam dans le but de
		regrouper les élèves motivés pour de futures participations.

		RealitIIE envoie donc toujours une ou deux équipes de 4 élèves pour participer à ce concours.

Les jeux de Laval

Available soon!

Vous retrouverez ici tous les jeux VR qui ont été réalisés pendant cette évènement

fIIEts

	<?php
	/*
		require("../src/Jeux/Jeux.php");
		require("../src/Jeux/JeuxRepository.php");

		$jeux =

	*/
	?>

<?php
	pied();
?><file_sep><?php
namespace Jeu;

class Jeu
{
    /**
     * @var int
     */
    private $id;

    /**
     * @var string
     */
    private $titre;

    /**
     * @var string
     */
    private $git;

    /**
     * @var string
     */
    private $telechargement;

	/**
	 * @var string
	 */
	private $description;

    /**
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @param int $id
     * @return Jeu
     */
    public function setId($id)
    {
        $this->id = $id;
        return $this;
    }

    /**
     * @return string
     */
    public function getTitre()
    {
        return $this->titre;
    }

    /**
     * @param string $titre
     * @return Jeu
     */
    public function setTitre($titre)
    {
        $this->titre = $titre;
        return $this;
    }

    /**
     * @return string
     */
    public function getGit()
    {
        return $this->git;
    }

    /**
     * @param string $git
     * @return Jeu
     */
    public function setGit($git)
    {
        $this->git = $git;
        return $this;
    }

    /**
     * @return string
     */
    public function getTelechargement()
    {
        return $this->telechargement;
    }

    /**
     * @param string $telechargement
     * @return Jeu
     */
    public function setTelechargement($telechargement)
    {
        $this->telechargement = $telechargement;
        return $this;
    }

	/**
     * @return string
     */
    public function getDescription()
    {
        return $this->description;
    }

	/**
     * @param string $description
     * @return Jeu
     */
    public function setDescription($description)
    {
        $this->description = $description;
        return $this;
    }
}

<file_sep>.bloc-full {
    display: flex;
    flex-direction : row;
    justify-content: center;
    text-align: justify;
	padding: 15px;
	margin-left: 10px;
	margin-right: 10px;
}

.bloc-half {
    width: 50%;
	/*min-width: 400px;*/
    flex-direction : row;
    justify-content: center;
    text-align: justify;
	padding: 15px;
	margin-left: 10px;
	margin-right: 10px;
}

.bloc-quarter {
    width: 70%;
	min-width: 400px;
    flex-direction : row;
    justify-content: center;
    text-align: justify;
	padding: 15px;
	margin-left: 10px;
	margin-right: 10px;
}

.bloc-reduced {
    width: 70%;
	min-width: 400px;
    flex-direction : row;
    justify-content: center;
    text-align: justify;
	padding: 15px;
	margin-left: 10px;
	margin-right: 10px;
}

.bloc-threequarter {
    width: 30%;
	min-width: 400px;
    flex-direction : row;
    justify-content: center;
    text-align: justify;
	padding: 15px;
	margin-left: 10px;
	margin-right: 10px;
}

.round-border {
	border-radius: 0px 35px;
	background: #CCCCCC;
	padding: 20px;

}

.CR-border1 {
	border-radius: 35px 35px;
	background: #8888CC;
	padding: 25px;

}

.CR-border2 {
	border-radius: 35px 35px;
	background: #8888AA;
	padding: 25px;

}

#conteneur
{
    display: flex;
}

<file_sep><?php
namespace Miseajour;

use Jeu\Jeu;

class Miseajour
{
    /**
     * @var int
     */
    private $id;

    /**
     * @var string
     */
    private $jeu;

    /**
     * @var string
     */
    private $texte;

    /**
     * @var \DateTimeInterface
     */
    private $date;

    /**
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @param int $id
     * @return Miseajour
     */
    public function setId($id)
    {
        $this->id = $id;
        return $this;
    }

    /**
     * @return Jeu
     */
    public function getJeu()
    {
        return $this->jeu;
    }

    /**
     * @param Jeu $jeu
     * @return Miseajour
     */
    public function setJeu($jeu)
    {
        $this->jeu = $jeu;
        return $this;
    }

    /**
     * @return string
     */
    public function getTexte()
    {
        return $this->texte;
    }

    /**
     * @param string $texte
     * @return Miseajour
     */
    public function setTexte($texte)
    {
        $this->texte = $texte;
        return $this;
    }

    /**
     * @return \DateTimeInterface
     */
    public function getDate()
    {
        return $this->date;
    }

    /**
     * @param \DateTimeInterface $date
     * @return Miseajour
     */
    public function setDate($date)
    {
        $this->date = $date;
        return $this;
    }
}

<file_sep>--
-- PostgreSQL database dump
--

-- Dumped from database version 11.1
-- Dumped by pg_dump version 11.1

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET client_min_messages = warning;
SET row_security = off;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: article; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE public.article (
    id_article integer NOT NULL,
    titre character varying(100) NOT NULL,
    texte character varying(10000) NOT NULL,
    id_membre integer NOT NULL,
    date date NOT NULL,
    compte_rendu boolean DEFAULT false
);

ALTER TABLE public.article OWNER TO postgres;

--
-- Name: article_id_article_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--

CREATE SEQUENCE public.article_id_article_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE public.article_id_article_seq OWNER TO postgres;

--
-- Name: article_id_article_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--

ALTER SEQUENCE public.article_id_article_seq OWNED BY public.article.id_article;

--
-- Name: equipe; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE public.equipe (
    id_jeu integer NOT NULL,
    id_membre integer NOT NULL,
    role character varying(30)
);

ALTER TABLE public.equipe OWNER TO postgres;

--
-- Name: jeux; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE public.jeux (
    id_jeu integer NOT NULL,
    titre character varying(50) NOT NULL,
    git character varying(100),
    telechargement character varying(100),
    description character varying(10000)
);

ALTER TABLE public.jeux OWNER TO postgres;

--
-- Name: jeux_id_jeu_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--

CREATE SEQUENCE public.jeux_id_jeu_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE public.jeux_id_jeu_seq OWNER TO postgres;

--
-- Name: jeux_id_jeu_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--

ALTER SEQUENCE public.jeux_id_jeu_seq OWNED BY public.jeux.id_jeu;

--
-- Name: media; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE public.media (
    id_media integer NOT NULL,
    id_jeu integer,
    id_maj integer,
    id_article integer,
    id_membre integer,
    lien character varying(200),
    CONSTRAINT only_one_id CHECK ((((id_jeu IS NOT NULL) AND (id_maj IS NULL) AND (id_article IS NULL) AND (id_membre IS NULL)) OR ((id_jeu IS NULL) AND (id_maj IS NOT NULL) AND (id_article IS NULL) AND (id_membre IS NULL)) OR ((id_jeu IS NULL) AND (id_maj IS NULL) AND (id_article IS NOT NULL) AND (id_membre IS NULL)) OR ((id_jeu IS NULL) AND (id_maj IS NULL) AND (id_article IS NULL) AND (id_membre IS NOT NULL))))
);

ALTER TABLE public.media OWNER TO postgres;

--
-- Name: media_id_media_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--

CREATE SEQUENCE public.media_id_media_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE public.media_id_media_seq OWNER TO postgres;

--
-- Name: media_id_media_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--

ALTER SEQUENCE public.media_id_media_seq OWNED BY public.media.id_media;

--
-- Name: membre; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE public.membre (
    id_membre integer NOT NULL,
    nom character varying(50),
    prenom character varying(50),
    surnom character varying(50) NOT NULL,
    password character varying(72) NOT NULL,
    promo integer,
    role character varying(20)
);

ALTER TABLE public.membre OWNER TO postgres;

--
-- Name: membre_id_membre_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--

CREATE SEQUENCE public.membre_id_membre_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE public.membre_id_membre_seq OWNER TO postgres;

--
-- Name: membre_id_membre_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--

ALTER SEQUENCE public.membre_id_membre_seq OWNED BY public.membre.id_membre;

--
-- Name: miseajour; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE public.miseajour (
    id_maj integer NOT NULL,
    id_jeu integer NOT NULL,
    texte character varying(10000),
    date date NOT NULL
);

ALTER TABLE public.miseajour OWNER TO postgres;

--
-- Name: miseajour_id_maj_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--

CREATE SEQUENCE public.miseajour_id_maj_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE public.miseajour_id_maj_seq OWNER TO postgres;

--
-- Name: miseajour_id_maj_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--

ALTER SEQUENCE public.miseajour_id_maj_seq OWNED BY public.miseajour.id_maj;

--
-- Name: tuto; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE public.tuto (
    id_tuto integer NOT NULL,
    titre character varying(100) NOT NULL,
    texte character varying(1000),
    pdf character varying(100) NOT NULL
);

ALTER TABLE public.tuto OWNER TO postgres;

--
-- Name: tuto_id_tuto_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--

CREATE SEQUENCE public.tuto_id_tuto_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE public.tuto_id_tuto_seq OWNER TO postgres;

--
-- Name: tuto_id_tuto_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--

ALTER SEQUENCE public.tuto_id_tuto_seq OWNED BY public.tuto.id_tuto;

--
-- Name: article id_article; Type: DEFAULT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.article ALTER COLUMN id_article SET DEFAULT nextval('public.article_id_article_seq'::regclass);

--
-- Name: jeux id_jeu; Type: DEFAULT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.jeux ALTER COLUMN id_jeu SET DEFAULT nextval('public.jeux_id_jeu_seq'::regclass);

--
-- Name: media id_media; Type: DEFAULT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.media ALTER COLUMN id_media SET DEFAULT nextval('public.media_id_media_seq'::regclass);

--
-- Name: membre id_membre; Type: DEFAULT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.membre ALTER COLUMN id_membre SET DEFAULT nextval('public.membre_id_membre_seq'::regclass);

--
-- Name: miseajour id_maj; Type: DEFAULT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.miseajour ALTER COLUMN id_maj SET DEFAULT nextval('public.miseajour_id_maj_seq'::regclass);

--
-- Name: tuto id_tuto; Type: DEFAULT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.tuto ALTER COLUMN id_tuto SET DEFAULT nextval('public.tuto_id_tuto_seq'::regclass);

--
-- Data for Name: article; Type: TABLE DATA; Schema: public; Owner: postgres
--

INSERT INTO public.article VALUES (1, 'RealitIIE , ou l''assos qui ne fait pas que de la VR!', 'On ne fait pas que de la VR!!! On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!On ne fait pas que de la VR!!!', 4, '2019-05-12', false);
INSERT INTO public.article VALUES (6, 'Pourquoi il faut interdire Carapuce!', '
Carapuce est un cancer. C''est suffisant pour l’interdire.
', 4, '2019-05-12', false);
INSERT INTO public.article VALUES (5, 'Organisation de l''année 2019-2020', '
Pas le temps de voir, on a des projets à finir!!!

Panique!!!!
', 4, '2019-05-12', false);
INSERT INTO public.article VALUES (2, 'Compte-rendu _/_/2018', '
 Présentation de l’asso pour les nouveaux inscrits avec un message important

à transmettre à tous : ”ON NE FAIT PAS QUE DE LA VR”. L’association souffre également

d’un manque cruel d’artistes : des graphistes et pros du Blender. Si vous aimez les jeux viendez,

on trouvera bien quelque chose pour vous occuper.

 Présentation également du nouveau bureau :

 Le président dictateur Altreon

 Le trésorier malhonnête Jalik

 Le secrétaire inutile DBA3

 Opinions sur le semestre 1 :  Pas assez de concret dans les objectifs de l’asso.

Certains proposent d’organiser des démos des jeux réalisés en NJV.

 Opinions sur le semestre 2 : Intérêt prononcé pour la participation à une

Game Jam (au moins une dizaine de personnes intéressés.). Pour pallier au manque

de visibilité de Realitiie, le président et son équipe se proposent à créer un espace

sur internet pour permettre le téléchargement des jeux réalisés dans l’association.

Jalik, est également prêt à nous aider à aider pour organiser des expo CR durant les NJV.

 De par son infinie générosité, Deurstann propose de nous céder son  casque VR, (merci Deurstann).

 La question de la visibilité de l’association se pose : Plusieurs solutions sont proposées,

voici les plus pertinentes :

Rénovation de l’ancien site de l’association

Trailer à faire passer pendant les proj, pour annoncer haut et fort ”ON NE FAIT PAS QUE DE LA VR”

Rédaction d’un article sur l’IIEmonde

 Les projet en cours:  Deux équipes travaillent encore sur

leurs propres projets. Un RTS “zombie” et un hovercraft.

', 6, '2018-11-23', true);
INSERT INTO public.article VALUES (3, 'Compte rendu 25/04/2019', '
Première Réunion post Laval L’équipe envoyée :(Plou ,Prophet,Wikle,Zaphkiel)

Commentaires de Plou : « L’ENSIIE est la seule école à avoir envoyé des débutants»

	Proposition de changer les règles lors de la formtion des équipes : envoyer une équipe de 2As ou

	encore les 1As  les plus compétents. Cela laissera plus de temps au nouveaux arrivant de s’entraîner,

	et de se familiariser avec le matériel. Il faudra pour cela organiser un calendrier clair des formations .

	Dépenses à régler en cours, la consommation durant la Game Jam est remboursée.

-Préparation des évènements futurs :

NJV, organiser un stand RealitIIE,

Proposition de Fiietz : réalisation sur le vif d’un projet pendant la NJV.

HTC Vive, contraignant dans l’utilisation, réflexion  sur les détecteurs

	en cas d''utilisation dans

-Amélioration de l’image de l’association :

Ateliers proposés dans l’école rémunéré, ex(tutoriels basiques pour débutant)

Ateliers pour Déclic rémunérés

Proposition de changer le nom de l’association : plusieurs membres d’accord,

	mais pas sur le nom. La raison invoquée est le manque d’adéquation entre le nom de

	l’association et son but. La réalité virtuelle n’étant plus le seul cadre d’activité proposées.

Comme proposé à la dernière réunion le site est en restructuration dans le cadre du projet Web.

Pour annoncer le changement de nom, certains proposent de réaliser une vidéo,

Altreon, Rhum et 801 proposent de créer une banque d’assets Unity dans le site.

Achat de Matériel

	Une manette du HTC VIVE nous a lâché récemment, il faudra donc penser à prévenir

	le CRI ou le C19 . Ou encore acheter nos propres manettes avec le budget de l’association.

	Le casque offert par Deustann est également incomplet, et comme propriété de l’association,

	c’est à nous que revient le privilège d’acheter ce qui manque : notamment une protection en mousse et des manettes.

	Rhum nous a annoncé que dû à la non  000 euros dans le budget pour l’année prochaine

Jeu prposé pour le Laval démo :<NAME> voleur RV

	Idée présentée par 801 et Rhum, un jeu d’infiltration où le but est de voler une œuvre d’art,

	en utilisant des gadget  pour résoudre des puzzle en temps limité .

', 6, '2019-04-25', true);
INSERT INTO public.article VALUES (4, 'compte-rendu 02/05/2019', '
Information officielle l’actuel président Altreon part au Canada pour le S3,

l’absence du président signifie qu’il fut élire un nouveau président. Deux membres

se présentent au poste de président : Plou et Fiietz.

Les résultats du vote :            PLOU :   6              FIIETS : 3

Plou devient alors le nouveau président de l’association, à la tête de l’actuel bureau.

Détail pour la passation de la présidence :

Plou devra recevoir de Tartare les droits d’administrateur

sur le Discord de Realitiie mais également l''accès au compte SteamVR réservé

aux membres de l’association.

On rappelle que le budget disponible  est de 450 € en

plus du budget offert par le BDE.

L’achat de la memande manquante n’ayant toujours pas été fait,

il faudra renouveler la demande au C19.

Pour la démo Laval 2020 , 801 partage son avis : « l’idée du projet est bien

mais le problème du déplacement se pose ». Le jeu étant en VR l’immersion est perdue s’il faut

se déplacer avec les manettes, et considérant les dimensions du jeu à réaliser, le déplacement ne peut

pas se faire sur une distance limitée.

Rhum propose une idée: réaliser un jeu différent et mettre des capteurs sur un vélo et permettre donc au

joueur de se déplacer suivant la rotation des roue.

Pour Laval Virtual les membres de l’association sont d’accord pour envoyer les plus motivés,

 801 propose de demander des rendus après chaque tutoriel pour sélectionner les meilleurs.

 Jalik propose que l’association fasse un tuto toutes les 2 semaines .

 Pour Laval 2020, Plou prévient qu’il faudra envoyer une équipe avec le casque VR, pour éviter de partager le matériel avec les autres participants.

', 6, '2019-05-02', true);

--
-- Data for Name: equipe; Type: TABLE DATA; Schema: public; Owner: postgres
--

INSERT INTO public.equipe VALUES (1, 4, 'Dev & mod‚lisateur');
INSERT INTO public.equipe VALUES (2, 4, 'mod‚lisateur');
INSERT INTO public.equipe VALUES (2, 8, 'Developpeur');
INSERT INTO public.equipe VALUES (2, 9, 'Developpeur');

--
-- Data for Name: jeux; Type: TABLE DATA; Schema: public; Owner: postgres
--

INSERT INTO public.jeux VALUES (2, 'Restroom', NULL, 'Restroom.rar', NULL);
INSERT INTO public.jeux VALUES (3, 'Overcraft', '', '', NULL);
INSERT INTO public.jeux VALUES (1, 'Fight for the Door', ' ', 'fight_door.rar', NULL);
INSERT INTO public.jeux VALUES (4, 'Projet Piratage', '.', '.', '.');

--
-- Data for Name: media; Type: TABLE DATA; Schema: public; Owner: postgres
--

INSERT INTO public.media VALUES (1, NULL, NULL, NULL, 3, 'Altreon.png');

--
-- Data for Name: membre; Type: TABLE DATA; Schema: public; Owner: postgres
--

INSERT INTO public.membre VALUES (7, 'MACARIT', 'Jean-Loup', 'Plou', '$2y$10$kUM1m4nTDoBpIB7Jlow9EuBaYefr2RrUsAzUMeoos03fVYo2wgEUK', 2021, 'a');
INSERT INTO public.membre VALUES (8, 'PILLONEL', 'Matthis', '801', '$2y$10$f9BWBlatXL8dVH4sukt3MO3h258.W5zUTz6bNajWHBegI7pz4gOoq', 2020, 'r');
INSERT INTO public.membre VALUES (9, 'RIOUST', 'Lucas', 'Rhum', '$2y$10$fREIWObCRhh6Ta78sEXxDO5lw4BojEFIrqEujdfvJyrMUBEMcbxs6', 2020, 'r');
INSERT INTO public.membre VALUES (10, 'DUBARD', 'Loïc', 'Wikle', '$2y$10$R1BCy4MDZBdoIdIU62Fe7uu2OhW0d9C3HLrwLTR1cIb2ZqCPsf49W', 2021, 'r');
INSERT INTO public.membre VALUES (11, 'GABBAY', 'Milan', 'Jalik', '$2y$10$MxyToqUssyvDpEt2IbgJa.rdwmvfCHcc7c4q.BcXjOP1DmhrrYFtS', 2021, 'a');
INSERT INTO public.membre VALUES (4, '<NAME>', 'Rémi', 'fIIEts', '$2y$10$xnTJkXZ2CwPn52k/cxn4Xub9Lpk7GXQ9GWCMA0gVXmn9tieUT.77W', 2021, 'a');
INSERT INTO public.membre VALUES (3, 'BRANDI', 'Matteo', 'Altreon', '$2y$10$IyMJ5ciGxqwsaXc.Ws.KOuTift.uxkQ2f6wYJH7Rr4u.p7lDd4GuS', 2021, 'a');
INSERT INTO public.membre VALUES (6, 'ACHEROUFKEBIR', 'Yacine', 'DBA3', '$2y$10$.O1wReDPzxyo2mXVs3jbke4IXTodibdIlTa/t1HJGWt2Q.UdKDo7O', 2021, 'a');
INSERT INTO public.membre VALUES (12, 'INACO', 'Aurélien', 'Prophet', '$2y$10$tv7Xj9KponvVA70oiMZtg.9lGJEpmeU6r87u/XXvWXGqnCL.dSMRW', 2021, 'r');
INSERT INTO public.membre VALUES (13, 'MONNOT', 'Clément', 'Zaphkiel', '$2y$10$dlr6YKuALNktSx4ClknvS..z8hD0t0sRmMARYNKfqOaEx1RR9OPcq', 2021, 'r');

--
-- Data for Name: miseajour; Type: TABLE DATA; Schema: public; Owner: postgres
--

INSERT INTO public.miseajour VALUES (2, 1, 'Fin de la scène de départ! Ajout d''un deuxième niveau en cours. Il se passe devant un château et sur ces murailles. Ajout de la commande d action sur les deux personnages avec les touches E pour J1 et . pour J2.', '2019-02-01');
INSERT INTO public.miseajour VALUES (4, 3, 'Il faudrait que je pense à utiliser mes propres modèle 3D et nous ceux volés. Pour ça je recherche des gens fort en modélisation pour les exploiter 20h/jour sans pause (et sans les payer bien sur) afin de réaliser cette tâche ingrate.', '2019-05-13');
INSERT INTO public.miseajour VALUES (6, 3, 'Correction de l''IA. Il est maintenant plus performant, ne se prend plus les murs mais est bien trop fort pour être battu!', '2019-03-13');
INSERT INTO public.miseajour VALUES (3, 1, 'Projet un peu à l''arrêt à cause des projets de l''école mais je reprend dès la fin des cours soit mi-juin.

Au programme :

- Finir le 1er niveau en design

- Ajouter un compteur de point avec le bon affichage qui va bien

(- Commencer un autre niveau?)', '2019-05-13');

--
-- Data for Name: tuto; Type: TABLE DATA; Schema: public; Owner: postgres
--

INSERT INTO public.tuto VALUES (1, '[BLENDER] Squelettisation', 'Apprendre … ins‚erer un squelette sur un modŠle pour l animer.', 'squelettisation.pdf');
INSERT INTO public.tuto VALUES (2, '[Noob] Comment démarrer son pc', 'Enfin c''est simple...', 'noob.pdf');

--
-- Name: article_id_article_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--

SELECT pg_catalog.setval('public.article_id_article_seq', 6, true);

--
-- Name: jeux_id_jeu_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--

SELECT pg_catalog.setval('public.jeux_id_jeu_seq', 4, true);

--
-- Name: media_id_media_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--

SELECT pg_catalog.setval('public.media_id_media_seq', 1, true);

--
-- Name: membre_id_membre_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--

SELECT pg_catalog.setval('public.membre_id_membre_seq', 13, true);

--
-- Name: miseajour_id_maj_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--

SELECT pg_catalog.setval('public.miseajour_id_maj_seq', 6, true);

--
-- Name: tuto_id_tuto_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--

SELECT pg_catalog.setval('public.tuto_id_tuto_seq', 2, true);

--
-- Name: article article_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.article
    ADD CONSTRAINT article_pkey PRIMARY KEY (id_article);

--
-- Name: article article_titre_key; Type: CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.article
    ADD CONSTRAINT article_titre_key UNIQUE (titre);

--
-- Name: equipe equipe_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.equipe
    ADD CONSTRAINT equipe_pkey PRIMARY KEY (id_jeu, id_membre);

--
-- Name: jeux jeux_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.jeux
    ADD CONSTRAINT jeux_pkey PRIMARY KEY (id_jeu);

--
-- Name: jeux jeux_titre_key; Type: CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.jeux
    ADD CONSTRAINT jeux_titre_key UNIQUE (titre);

--
-- Name: media media_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.media
    ADD CONSTRAINT media_pkey PRIMARY KEY (id_media);

--
-- Name: membre membre_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.membre
    ADD CONSTRAINT membre_pkey PRIMARY KEY (id_membre);

--
-- Name: miseajour miseajour_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.miseajour
    ADD CONSTRAINT miseajour_pkey PRIMARY KEY (id_maj, id_jeu);

--
-- Name: tuto tuto_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.tuto
    ADD CONSTRAINT tuto_pkey PRIMARY KEY (id_tuto);

--
-- Name: tuto tuto_titre_key; Type: CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.tuto
    ADD CONSTRAINT tuto_titre_key UNIQUE (titre);

--
-- Name: membre unique_surnom; Type: CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.membre
    ADD CONSTRAINT unique_surnom UNIQUE (surnom);

--
-- Name: article article_id_membre_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.article
    ADD CONSTRAINT article_id_membre_fkey FOREIGN KEY (id_membre) REFERENCES public.membre(id_membre);

--
-- Name: equipe equipe_id_jeu_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.equipe
    ADD CONSTRAINT equipe_id_jeu_fkey FOREIGN KEY (id_jeu) REFERENCES public.jeux(id_jeu);

--
-- Name: equipe equipe_id_membre_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.equipe
    ADD CONSTRAINT equipe_id_membre_fkey FOREIGN KEY (id_membre) REFERENCES public.membre(id_membre);

--
-- Name: media media_id_article_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.media
    ADD CONSTRAINT media_id_article_fkey FOREIGN KEY (id_article) REFERENCES public.article(id_article);

--
-- Name: media media_id_maj_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.media
    ADD CONSTRAINT media_id_maj_fkey FOREIGN KEY (id_maj, id_jeu) REFERENCES public.miseajour(id_maj, id_jeu);

--
-- Name: media media_id_membre_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.media
    ADD CONSTRAINT media_id_membre_fkey FOREIGN KEY (id_membre) REFERENCES public.membre(id_membre);

--
-- Name: miseajour miseajour_id_jeu_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY public.miseajour
    ADD CONSTRAINT miseajour_id_jeu_fkey FOREIGN KEY (id_jeu) REFERENCES public.jeux(id_jeu);

--
-- PostgreSQL database dump complete
--

<file_sep>function ajoutMedia()
{
	ajouterSelectMedia();
}
function suppMedia()
{
	var nbMedias = document.getElementsByClassName( "selectName" ).length;
	if( nbMedias > 0 )
	{
		var medias = [];
		for( var i = 0; i < nbMedias; i++ )
		{
			medias[i] = document.getElementsByName( "media"+(i+1) )[0];
		}
		var parent = medias[medias.length - 1].parentElement.parentElement;
		parent.removeChild( medias[medias.length - 1].parentElement );
	}
}
function ajouterSelectMedia()
{
	var nbMedias = document.getElementsByClassName( "selectName" ).length;
		var id = "formAjout"
		var div             = document.createElement( "div" );
		var champ           = document.getElementById( id );
		var input           = document.createElement( "input" );

		input.type          = "file";
		input.name          = "media" + (nbMedias+1);
		input.accept		= ".jpg, .jpeg, .png"
		input.required      = "required";
		input.className     = "selectName";
		input.style.display = "inline";
		input.style.width   = "100%";

		div.style.display = "inline";

		var elementAAjouterApres = document.getElementById( "bAjoutMedia");
		div.appendChild( input );
		champ.insertBefore( div, elementAAjouterApres );
}

function verficationEnvoie()
{
	return true
	//Manque de temps
}<file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Membre/Membre.php';
require '../src/Membre/MembreRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil" ,$id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

if($_SESSION['role'] != 'a'){ //Si pas administrateur, renvoie vers d'administration
    echo '
Erreur: Vous n\'avez pas la permission d\'accéder à cette page, veuillez contacter un administrateur du site pour toutes questions
';
    echo '
Redirection vers la page d\'administration...
';
    header( "refresh:3;url=admin.php" );

    pied();

    echo '';
    exit();
}

$dbName = 'realitiie';
$dbUser = 'postgres';
$dbPassword = '<PASSWORD>';
$connection = new PDO("pgsql:host=localhost user=$dbUser dbname=$dbName password=$dbPassword");

$membreRepository = new \Membre\MembreRepository($connection);
$membres = $membreRepository->fetchAll();

$roles = array('a' => "Administrateur", 'r' => "Membre", 'p' => "Président"); // à compléter si ajout de nouveaux rôles
?>

Administration des membres

Cliquez sur un membre pour le modifier ou le supprimer

Nom	Prénom	Surnom	Promotion	Rôle

    	<?php
    	foreach ($membres as $membre) {
    	    echo
    	    '

                getId().'">'.$membre->getNom().'	'.$membre->getPrenom().'	'.$membre->getSurnom().'	'.$membre->getPromo().'	'.$roles[$membre->getRole()].'

';
    	}
    	?>

<form action="membreCreation.php"><input type="submit" class="plus" value="Créer un Membre"/></form>
<form action="admin.php"><input type="submit" class="moins" value="Revenir à l'espace d'administration"/></form>

<?php
	pied();
?><file_sep><?php
namespace Membre;

class Membre
{
    /**
     * @var int
     */
    private $id;

    /**
     * @var string
     */
    private $nom;

    /**
     * @var string
     */
    private $prenom;

    /**
     * @var string
     */
    private $surnom;

    /**
     * @var int
     */
    private $promo;

    /**
     * @var int
     */
    private $role;

    /**
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @param int $id
     * @return Membre
     */
    public function setId($id)
    {
        $this->id = $id;
        return $this;
    }

    /**
     * @return string
     */
    public function getNom()
    {
        return $this->nom;
    }

    /**
     * @param string $nom
     * @return Membre
     */
    public function setNom($nom)
    {
        $this->nom = $nom;
        return $this;
    }

    /**
     * @return string
     */
    public function getPrenom()
    {
        return $this->prenom;
    }

    /**
     * @param string $prenom
     * @return Membre
     */
    public function setPrenom($prenom)
    {
        $this->prenom = $prenom;
        return $this;
    }

    /**
     * @return string
     */
    public function getSurnom()
    {
        return $this->surnom;
    }

    /**
     * @param string $surnom
     * @return Membre
     */
    public function setSurnom($surnom)
    {
        $this->surnom = $surnom;
        return $this;
    }

    /**
     * @return int
     */
    public function getPromo()
    {
        return $this->promo;
    }

    /**
     * @param int $promo
     * @return Membre
     */
    public function setPromo($promo)
    {
        $this->promo = $promo;
        return $this;
    }

    /**
     * @return int
     */
    public function getRole()
    {
        return $this->role;
    }

    /**
     * @param int $role
     * @return Membre
     */
    public function setRole($role)
    {
        $this->role = $role;
        return $this;
    }
}

<file_sep><?php
namespace Equipe;

use Membre\Membre;
use Jeu\JeuRepository;

class EquipeRepository
{
    /**
     * @var \PDO
     */
    private $connection;

    /**
     * EquipeRepository constructor.
     * @param \PDO $connection
     */
    public function __construct(\PDO $connection)
    {
        $this->connection = $connection;
    }

    public function fetchAll()
    {
        $jeuRepository = new JeuRepository($this->connection);

        $rows = $this->connection->query('SELECT id_jeu, id_membre, equipe.role, nom, prenom, surnom, promo, membre.role
                                          FROM "equipe" NATURAL JOIN "membre"
                                          ORDER BY id_jeu')->fetchAll(\PDO::FETCH_OBJ);
        $equipes = [];

        $id_jeu = -1;
        $membres = array();
        $roles = array();

        foreach ($rows as $row) {
            if($row->id_jeu != $id_jeu && !empty($membres)){
                $jeu = $jeuRepository->getJeu($id_jeu);

                $equipe = new Equipe();
                $equipe
                    ->setJeu($jeu)
                    ->setMembres($membres)
                    ->setRoles($roles);

                $equipes[] = $equipe;

                $id_jeu = $row->id_jeu;
                unset($membres);
                unset($roles);
                $membres = array();
                $roles = array();

            }

            $membre = new Membre();
            $membre
            ->setId($row->id_membre)
            ->setNom($row->nom)
            ->setPrenom($row->prenom)
            ->setSurnom($row->surnom)
            ->setPromo($row->promo)
            ->setRole($row->membre.role);

            $membres[] = $membre;
            $roles[membre] = $row->equipe.role;
        }

        return $equipes;
	}

	public function createEquipe( $idJeu, $idMembre, $role )
	{
		$sql = "INSERT INTO equipe VALUES (?, ?, ?);";
		$req = $this->connection->prepare($sql);
		$status = $req->execute(array($idJeu,$idMembre, $role) );
		return $status;
	}

	public function setEquipe( $idJeu, $idMembre, $role )
	{
		$sql = "UPDATE equipe SET equipe.role = ? WHERE id_jeu = ? AND id_membre = ?;";
		$req = $this->connection->prepare($sql);
		$status = $req->execute(array($idJeu,$idMembre, $role) );
		return $status;
	}

	public function deleteEquipe( $idJeu, $idMembre )
	{
		$sql = "DELETE FROM equipe WHERE id_jeu = ? AND id_membre= ?";
		$req = $this->connection->prepare($sql);
		$status = $req->execute(array($idJeu,$idMembre) );
		return $status;
	}

    public function getEquipe($idJeu)
    {
        $jeuRepository = new JeuRepository($this->connection);

        $rows = $this->connection->query('SELECT membre.id_membre, equipe.role as erole, nom, prenom, surnom, promo, membre.role
                                          FROM equipe JOIN membre on equipe.id_membre = membre.id_membre
                                          WHERE id_jeu = '.$idJeu)->fetchAll(\PDO::FETCH_OBJ);

        $jeu = $jeuRepository->getJeu($idJeu);

        $membres = array();
        $roles = array();
        foreach ($rows as $row) {
            $membre = new Membre();
            $membre
            ->setId($row->id_membre)
            ->setNom($row->nom)
            ->setPrenom($row->prenom)
            ->setSurnom($row->surnom)
            ->setPromo($row->promo)
            ->setRole($row->role);

            $membres[] = $membre;
            $roles[$membre->getId()] = $row->erole;
        }

        $equipe = new Equipe();
        $equipe
        ->setJeu($jeu)
        ->setMembres($membres)
        ->setRoles($roles);

        return $equipe;
    }

	public function faitPartieEquipe($idJeu, $id_membre){
		$equipe = $this->getEquipe($idJeu);
		foreach ($equipe->getMembres() as $membre) {
			if($id_membre == $membre->getId()){
				return true;
			}
		}

		return false;
	}
}
<file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Membre/Membre.php';
require '../src/Membre/MembreRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil" ,$id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

$dbName = 'realitiie';
$dbUser = 'postgres';
$dbPassword = '<PASSWORD>';
$connection = new PDO("pgsql:host=localhost user=$dbUser dbname=$dbName password=$db<PASSWORD>");

$membreRepository = new \Membre\MembreRepository($connection);

$roles = array('a' => "Administrateur", 'r' => "Membre"); // à compléter si ajout de nouveaux rôles

if(isset($_POST['creation'])){ //Si le membre est créé, modification de la bdd puis renvoie vers la page de d'administration des membres
    $status = $membreRepository->createMembre($_POST['nom'], $_POST['prenom'], $_POST['surnom'], $_POST['password'], $_POST['promo'], $_POST['role']);

	$idMembre = $membreRepository->getIdMembre( $_POST['surnom'] );

	$i = 1;
    $envoie = TRUE;
    while( isset($_FILES['media'.$i] )) {
        $lien = "../media/";
        $lien = $lien . basename($_FILES['media'.$i]['name']);
        if(!move_uploaded_file($_FILES['media'.$i]['tmp_name'], $lien)) {
            echo '
'.var_dump($lien).'
';
            $envoie = FALSE;
            break;
        }else{
            $membreRepository->addMedia($idMembre, $lien);
        }
        $i = $i + 1;
    }

    if($status && $envoie){
        echo '
Le membre a bien été créé
';
    }else{
        echo '
Erreur: la création du nouveau membre a échoué!
';
    }

    echo '
Redirection vers la liste des membres...
';
    header( "refresh:3;url=membre.php" );
}else{

    echo '
Création d\'un membre
';

    ?>

        <form id="formAjout" action="" method="POST" enctype="multipart/form-data">
        	Nom : <input name="nom" type="text" required/>

        	Prénom : <input name="prenom" type="text" required/>

        	Surnom : <input name="surnom" type="text" required/>

        	Mot de passe : <input name="password" type="<PASSWORD>" required/>

        	promo :
        	<select name="promo" required>
        		<?php
        		foreach (range(date("Y") + 3, 1968, 1) as $promo){
        		    echo '<option value="'.$promo.'">'.$promo.'</option>';
        		}
        		?>
        	</select>

        	role :
        	<select name="role" required>
        		<?php
        		foreach ($roles as $roleChar => $roleName){
        		    echo '<option value="'.$roleChar.'">'.$roleName.'</option>';
        		}
        		?>
        	</select>

        	<input type="button" id="bAjoutMedia" onclick="ajoutMedia()" value="Ajouter une image" />
			<input type="button" id="bSuppMedia" onclick="suppMedia()" style="background-color:red" value="Supprimer la dernière image" />
        	<input type="submit" id="bEnvoyer" name="creation" value="Envoyer"/>
        </form>

    <form action="membre.php"><input type="submit" class="moins" value="Annuler"/></form>

<?php
}
?>

<?php
	pied();
?><file_sep>
	<link rel="stylesheet" href="../CSS/connexion.css">

<?php
include("../inc/session.php");

if (!isset($_POST['connexion'])) {
	?>

			<form class="login-form" action="" method="POST">
			  <input name="pseudo" type="text" placeholder="Pseudo" required/>
			  <input name="mdp" type="password" placeholder="<PASSWORD>" required/>
			  <input name="connexion" type="submit" value="Connexion" />
			</form>

	<?php
}else{ //connexion
    $connecte = create_session($_POST['pseudo'], $_POST['mdp']);
	if($connecte){
	    header("Refresh: 0");
		exit();
	}else{
	    ?>
Pseudo ou Mot de passe incorrect

    			<form class="login-form" action="" method="POST">
    			  <input name="pseudo" type="text" placeholder="Pseudo" required/>
    			  <input name="mdp" type="password" placeholder="<PASSWORD>" required/>
    			  <input name="connexion" type="submit" value="Connexion" />
    			</form>

	    <?php
	}
}
?>

<?php
	pied();
?><file_sep><?php
	function initialisation()
	{
		global $connection;
		session_start();
		$dbName = 'realitiie';
		$dbUser = 'postgres';
		$dbPassword = '<PASSWORD>';
		$connection = new PDO("pgsql:host=localhost user=$dbUser dbname=$dbName password=$dbPassword");
	}

	function entete( $titre = "" ,$id_page)
	{
		echo "<!DOCTYPE HTML>\n";
		echo "<html lang=\"fr\"\n";
		echo "\n";
		echo "\t<title>$titre</title>";
		echo "\t<meta charset=\"UTF-8\" />\n";
		echo "\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n";
		echo "\t<link rel=\"stylesheet\" href=\"../CSS/style.css\" type=\"text/css\" />\n";
		echo "\t<link rel=\"stylesheet\" href=\"../CSS/cadre.css\">\n";
		echo "\t<link rel=\"shortcut icon\" href=\"../img/badassChicken.ico\">\n";
		echo "\n";
		echo "\n";
		initialisation();
		menu($id_page);
	}

	function pied()
	{
		echo "
\n";
		echo "\n";
		echo "
mail de contact : <a href=\"mailto:<EMAIL>\"><EMAIL> . adresse  : 1 place de la résistance 91025 Evry
\n";
		echo "\n";
		echo "\n";
		echo "";
	}

	function menu($id_page)
	{
		/*echo "\t\t\n";
		echo "\t\t\tRealitiie\n";
		echo "\t\t\n";

		echo "\t\t\n";
		echo "\t\t\tAccueil\n";
		echo "\t\t\n";

		echo "\t\t\n";
		echo "\t\t\tEquipe\n";
		echo "\t\t\n";

		echo "\t\t\n";
		echo "\t\t\tArticles\n";
		echo "\t\t\n";

		echo "\t\t\n";
		echo "\t\t\tComptes-rendus\n";
		echo "\t\t\n";

		echo "\t\t\n";
		echo "\t\t\tProjets\n";
		echo "\t\t\n";

		echo "\t\t\n";
		echo "\t\t\tLaval\n";
		echo "\t\t\n";

		echo "\t\t\n";
		echo "\t\t\tRessources\n";
		echo "\t\t\n";

		if(isset($_SESSION['pseudo'])){ //Si connecté, affiche un lien vers la page d'administration
		    echo "\t\t
\n";
		    echo "\t\t\tAdministration\n";
		    echo "\t\t
\n";
		}

		//echo "\t\t
\n";
		//echo "\t\t\tExercices\n";
		//echo "\t\t
\n";

		echo "\t
\n";
		echo "\n";*/
	    echo "
";
    	echo "
";

		if($id_page != "index")
		{
			echo"
Accueil
";
		}
		else{
			echo"

Accueil

";
		}

		if($id_page != "equipe")
		{
			echo "
Équipe
";
		}
		else{
			echo"

Équipe

";
		}

		if($id_page != "article")
		{
			echo"
Articles
";
		}
		else{
			echo"

Articles

";
		}

		if($id_page != "debrief")
		{
			echo"
Comptes-rendus
";
		}
		else{
			echo"

Comptes-rendus

";
		}

		if($id_page != "projet")
		{
			echo"
Projets
";
		}
		else{
			echo"

Projets

";
		}

        if($id_page !="laval")
		{
			echo"
Laval
";
		}
		else{
			echo"

Laval

";
		}

		if($id_page != "ressources")
		{
			echo"
Ressources
";
		}
		else{
			echo"

Ressources

";
		}

	    ?>

        	    <?php
        	    if(isset($_SESSION['pseudo'])){ //Si connecté, affiche un lien vers la page d'administration
        	        if($id_page != "admin"){
        	           ?>
Administration
<?php
        	        }else{
        	           ?>
Administration
<?php
        	        }
				}
				?>

	    <?php
	}
?><file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Tuto/Tuto.php';
require '../src/Tuto/TutoRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil", $id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

$tutoRepository = new \Tuto\TutoRepository($connection);

if(isset($_POST['creation'])){ //Si l'tuto est créé, modification de la bdd puis renvoie vers la page de d'administration des tutos

    $status = $tutoRepository->createTuto($_POST['titre'], $_POST['texte'], $_POST['pdf']);

    if($status){
        echo '
Le tuto a bien été créé
';
    }else{
        echo '
Erreur: la création du nouveau tuto a échoué!
';
    }

    echo '
Redirection vers la liste des tutos...
';
    header( "refresh:3;url=tuto.php" );
}else{

    echo '
Création d\'un tutoriel
';

    ?>

        <form action="" method="POST">
        	Titre : <input name="titre" type="text" required/>

        	Texte : <textarea name="texte" rows="5" cols="40" required></textarea>

        	Lien du PDF : <input name="pdf" type="text" required/>

        	<input type="submit" name="creation" value="Envoyer"/>
        </form>

    <form action="tuto.php"><input type="submit" class="moins" value="Annuler"/></form>

<?php
}
?>

<?php
	pied();
?><file_sep>/*#menu
{
	background-color: #343A50;
	padding-top     : 15px;
	padding-bottom  : 15px;
	height          : 25px;
	box-sizing      : initial;
	font-size       : 18px;
	padding-right   : 15%;
	padding-left    : 15%;
}

/*#menu div:first-child
{
	border-left: 1px white solid;
}*/

/*#menu a div
{
	display      : inline;
	/*padding-left : 5px;
	padding-right: 5px;*/
	/*border-right : 1px white solid;*/
	/*border: 1px white solid;
	padding : 10px;
}

#menu a
{
	color          :white;
	text-decoration: none;
}

#menu a div:hover
{
	/*transition-delay: 0.2s;*/
	/*color          :red;
	text-decoration: none;
	background-color: white;
}*/

div.menu{
	background-color: #335;
	list-style-type: none;
	overflow: hidden;
	/*position: fixed;*/
	top: 0;
	width: 100%;
}

ul.menu {
	list-style-type: none;
	display: table;
	margin: 0 auto;
}

li.menu {
	float: left;
}

li.menu a.menu {
	display: block;
	color: white;
	text-align: center;
	padding: 14px 16px;
	text-decoration: none;
}

li.menu a.menu:hover:not(.active) {
	background-color: #ddd;
  	color: black;
}

.menu.active {
	background-color: #131313;
  	color: white;
}

/*.topnav {
  background-color: #f2f2f2;
  overflow: hidden;
}

.topnav a {
  float: left;
  color: #f2f2f2;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  font-size: 17px;
  border-bottom: 1px solid #555;
}

.topnav a:hover {
  background-color: #ddd;
  color: black;
}

.topnav a.active {
  background-color: #131313;
  color: white;
}*/

body
{
	margin: 0px;
}

nav
{
	background-color: rgba(213, 239, 230, 0.75);
	width           : fit-content;
	position        : fixed;
	padding         : 10px;
	margin-left     : 5px;
	margin-top      : 60px;
	border-radius   : 10px;
	font-size       : 12px;
}

article
{
	margin-right    : 15%;
	margin-left     : 15%;
	height          : calc( 95% - 55px );
	/*text-align      : justify; CASSE COUILLE*/
	background-color: rgba(213, 239, 230, 0.75);
	padding         : 10px;
	overflow        : auto;
}

footer
{
	height          : 5%;
	font-size       : 12px;
	color           : white;
	text-align      : center;
	background-color: black;
	position: fixed;
	bottom: 0;
	left: 0;
	width: 100%;
}

.bDecoCo
{
	background-color: rgba(213, 239, 230, 0.75);
	border-radius   : 5px;
	border: rgba(135, 151, 146, 0.75) 1px solid;
}

.texteBas
{
	margin-block-start: 0px;
	margin-block-end  : 0px;
	color             : white;
}

.texteBas a:link
{
	color: #5ca6e6;
}
html, body {
	margin : 0;
	padding: 0;
	width  : 100%;
	height: 100%;
	/*max-height: unset;*/
/*	height : 100%; ça casse tout quand le contenu est trop important pour un ecran */
}

body {
	background-image: url("../img/background1.png");
	background-size: 100%;
 	font-family: Verdana, sans-serif;
 	font-size: 100%;
}

h1 {
 	font-size: 200%;
 	color: black;
	text-align: center;
}

h2 {
 	font-size: 150%;
 	color: black;
 	padding-left: 15px;
}

h3 {
 	font-size: 125%;
 	color: black;
 	margin-left: 20px;
}

h4 {
 font-size: 110%;
 		color: black;
 	margin-left: 20px;
}

/*p,ul,li,td {
	color: black;
}

a:link {
 	color: blue;
 	text-decoration: underline;
}

a:visited {
 	color: purple;
}

a:hover {
 	color: blue;
 	text-decoration: none;
}

a:active, a:focus {
 	color: green;
}*/

div.tableResponsive {
	style: overflow-x:auto;
}

table, th, td {
	border-collapse: collapse;
	border         : 1px solid black;
}

table {
  	width: 100%;
}

th, td {
  	padding: 15px;
  	text-align: center;
}

th {
	background-color: #004080;
	color: white;
  	height: 50px;
}

tr:nth-child(even) {
	background-color: #f2f2f2;
}

tr:hover {
	background-color: #ddd;
}

div.modifContainer {
	 border-radius: 5px;
	  background-color: #f2f2f2;
	  padding: 20px;
}

input[type=text], input[type=password], select, textarea {
	  width: 100%;
	  padding: 12px 20px;
	  margin: 8px 0;
	  display: inline-block;
	  border: 1px solid #ccc;
	  border-radius: 4px;
	  box-sizing: border-box;
}

input[type=submit], #bAjoutMembre, #bSuppMembre, #bAjoutMedia, #bSuppMedia {
	  width: 100%;
	  background-color: #4CAF50;
	  color: white;
	  padding: 14px 20px;
	  margin: 8px 0;
	  border: none;
	  border-radius: 4px;
	  cursor: pointer;
}

input[type=submit]:hover {
  	background-color: #45a049;
}

input.admin {
	width: 100%;
	height: 50px;
	border-radius: 12px;
	background-color: #0080c0;
	font-weight: bold;
	font-size: 25px;
	-webkit-transition-duration: 0.4s; /* Safari */
  	transition-duration: 0.4s;
}

input.admin:hover {
  	background-color: #0000ff;
  	color: white;
}

input.plus {
	width: min-content;
	height: 50px;
	border-radius: 8px;
	background-color: #00ff00;
	font-weight: bold;
	font-size: 25px;
	-webkit-transition-duration: 0.4s; /* Safari */
  	transition-duration: 0.4s;
}

input.plus:hover {
  	background-color: #008000;
  	color: white;
}

input.moins {
	width: min-content;
	height: 50px;
	border-radius: 8px;
	background-color: #ff0000;
	font-weight: bold;
	font-size: 25px;
	-webkit-transition-duration: 0.4s; /* Safari */
  	transition-duration: 0.4s;
}

input.moins:hover {
  	background-color: #800000;
  	color: white;
}

.boutton_co{
margin-left: auto;
margin-right: auto;
width: 50px;
height: 50px;
}

.deconnexion {
background-size: cover;
width: 300px;
height: 200px;
}

.navigation{
padding: 14px 16px;
text-align: center;
width:80px;
 height:120px;
 background: #FFFFFF;
 margin:10px auto;
 border-radius: 10px;
 border: 2px solid black;
}

img.media{
	max-height : 320px;
	margin-left : auto;
	margin-right : auto;
	display : block;
}

img.mediaEquipe{
	max-height : 85px;
	margin-left : auto;
	margin-right : auto;
	display : block;
}
<file_sep><?php
namespace Membre;
class MembreRepository
{
    /**
     * @var \PDO
     */
    private $connection;

    /**
     * MembreRepository constructor.
     * @param \PDO $connection
     */
    public function __construct(\PDO $connection)
    {
        $this->connection = $connection;
    }

    public function fetchAll()
    {
        $rows = $this->connection->query('SELECT id_membre, nom, prenom, surnom, promo, role
                                          FROM "membre"
                                          ORDER BY promo DESC, surnom')->fetchAll(\PDO::FETCH_OBJ);
        $membres = [];
        foreach ($rows as $row) {
            $membre = new Membre();
            $membre
                ->setId($row->id_membre)
                ->setNom($row->nom)
                ->setPrenom($row->prenom)
                ->setSurnom($row->surnom)
                ->setPromo($row->promo)
                ->setRole($row->role);

            $membres[] = $membre;
        }

        return $membres;
    }

    public function getMembre($id)
    {
        $row = $this->connection->query('SELECT id_membre, nom, prenom, surnom, promo, role
                                         FROM "membre"
                                         WHERE id_membre = '.$id)->fetchAll(\PDO::FETCH_OBJ);
        if(count($row) == 0){
            return NULL;
        }
        $row = $row[0];
        $membre = new Membre();
        $membre
        ->setId($row->id_membre)
        ->setNom($row->nom)
        ->setPrenom($row->prenom)
        ->setSurnom($row->surnom)
        ->setPromo($row->promo)
        ->setRole($row->role);

        return $membre;
    }

    public function setMembre($id, $nom, $prenom, $surnom, $password, $promo, $role)
    {
        if($password == ""){
            $sql = "UPDATE membre
                    SET nom = ?, prenom = ?, surnom = ?, promo = ?, role = ?
                    WHERE id_membre = ?";
            $req = $this->connection->prepare($sql);
            $status = $req->execute(array($nom, $prenom, $surnom, $promo, $role, $id));
            return $status;
        }else{
            $password = password_hash($password, PASSWORD_BCRYPT);

            $sql = "UPDATE membre
                    SET nom = ?, prenom = ?, surnom = ?, password = ?, promo = ?, role = ?
                    WHERE id_membre = ?";
            $req = $this->connection->prepare($sql);
            $status = $req->execute(array($nom, $prenom, $surnom, $password, $promo, $role, $id));
            return $status;
        }
    }

    public function getMembrePassword($id)
    {
        $row = $this->connection->query('SELECT password
                                         FROM "membre"
                                         WHERE id_membre = '.$id)->fetchAll(\PDO::FETCH_OBJ);
        if(count($row) == 0){
            return NULL;
        }
        $row = $row[0];

        return $row->password;
    }

    public function setMembrePassword($id, $password)
    {
        $password = password_hash($password, PASSWORD_<PASSWORD>);

        $sql = "UPDATE membre
                SET password = ?
                WHERE id_membre = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($password, $id));
        return $status;
    }

    public function deleteMembre($id)
    {
        $sql = "DELETE FROM membre
                WHERE id_membre = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id));
        return $status;
    }

    public function createMembre($nom, $prenom, $surnom, $password, $promo, $role)
    {
        $password = password_hash($password, PASSWORD_B<PASSWORD>);

        $sql = "INSERT INTO membre
                (nom, prenom, surnom, password, promo, role) VALUES (?, ?, ?, ?, ?, ?);";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($nom, $prenom, $surnom, $password, $promo, $role));
        return $status;
    }

    public function authentication($surnom, $password)
    {
        $sql = "SELECT id_membre, nom, prenom, password, promo, role
                FROM membre
                WHERE surnom = ?";
        $req = $this->connection->prepare($sql);
        $req->execute(array($surnom));
        $row = $req->fetch(\PDO::FETCH_OBJ);

        if($row == NULL || !password_verify($password, $row->password)){
            return NULL;
        }

        $membre = new Membre();
        $membre
        ->setId($row->id_membre)
        ->setNom($row->nom)
        ->setPrenom($row->prenom)
        ->setSurnom($surnom)
        ->setPromo($row->promo)
        ->setRole($row->role);

        return $membre;
    }

	public function getIdMembre( $surnom )
    {
        $row = $this->connection->query('SELECT id_membre FROM membre WHERE surnom = \''.$surnom.'\' ')->fetchAll(\PDO::FETCH_OBJ);
        if(count($row) == 0){
            return NULL;
        }
        return $row[0]->id_membre;
    }

	public function deleteAllMedia($id){
        $rows = $this->connection->query('SELECT lien
                                          FROM media
                                          WHERE id_membre = '.$id)->fetchAll(\PDO::FETCH_OBJ);
        foreach ($rows as $row) {
            if (file_exists($row->lien)) {
                unlink($row->lien);
            }
        }

        $sql = "DELETE FROM media
                WHERE id_membre = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id));
        return $status;
    }

    public function addMedia($id, $lien){
        $sql = "INSERT INTO media
                (id_membre, lien) VALUES (?, ?);";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id, $lien));
        return $status;
    }

    public function getMedias( $id )
    {
        $rows = $this->connection->query('SELECT lien
                                          FROM media
                                          WHERE id_membre = '.$id)->fetchAll(\PDO::FETCH_OBJ);
		$liens = [];
        foreach ($rows as $row) {
            $liens[] = $row->lien;
        }

        return $liens;
	}

	public function getMediasFromMembre( $id )
	{
		$res = $this->connection->query('SELECT * FROM media WHERE id_membre = '.$id)->fetchAll(\PDO::FETCH_OBJ);
		return $res;
	}
}
<file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Article/Article.php';
require '../src/Article/ArticleRepository.php';
require '../src/Membre/Membre.php';
require '../src/Membre/MembreRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil" ,$id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

$articleRepository = new \Article\ArticleRepository($connection);

if(isset($_POST['creation'])){ //Si l'article est créé, modification de la bdd puis renvoie vers la page de d'administration des articles
    if(!isset($_POST['auteur'])){
        $_POST['auteur'] = $_SESSION['id'];
    }

    if (isset($_POST['cr'])){
        $cr = $_POST['cr'];
    }else{
        $cr = 0;
    }

    $status = $articleRepository->createArticle($_POST['titre'], $_POST['texte'], $_POST['auteur'], $_POST['date'], $cr);

    $idArticle = $articleRepository->getIdArticle( $_POST['titre'] );

    $i = 1;
    $envoie = TRUE;
    while( isset($_FILES['media'.$i] )) {
        $lien = "../media/";
        $lien = $lien . basename($_FILES['media'.$i]['name']);
        if(!move_uploaded_file($_FILES['media'.$i]['tmp_name'], $lien)) {
            echo '
'.var_dump($lien).'
';
            $envoie = FALSE;
            break;
        }else{
            $articleRepository->addMedia($idArticle, $lien);
        }
        $i = $i + 1;
    }

    if($status && $envoie){
        echo '
L\'article a bien été créé
';
    }else{
        echo '
Erreur: la création du nouvel article a échoué!
';
    }

    echo '
Redirection vers la liste des articles...
';
    header( "refresh:3;url=article.php" );
}else{

    $membreRepository = new \Membre\MembreRepository($connection);
    $membres = $membreRepository->fetchAll();

    echo '
Création d\'un article
';

    ?>

        <form id="formAjout" action="" method="POST" enctype="multipart/form-data">
        	Titre : <input name="titre" type="text" required/>

        	Texte : <textarea name="texte" rows="5" cols="40" required></textarea>

        	<?php if($_SESSION['role'] == 'a'){?>
        		Auteur :
            	<select name="auteur" required>
            		<?php
            		//if($membre->getId() = $article->getAuteur()->getId()){echo "selected";}
            		foreach ($membres as $membre){
            		    echo '<option value="'.$membre->getId().'">'.$membre->getSurnom().'</option>';
            		}
            		?>
            	</select>

            <?php } ?>

        	Date de publication : <input name="date" type="date" required/>

        	Compte-rendu : <input type="checkbox" name="cr" value="1">

        	<input type="button" id="bAjoutMedia" onclick="ajoutMedia()" value="Ajouter une image" />
			<input type="button" id="bSuppMedia" onclick="suppMedia()" style="background-color:red" value="Supprimer la dernière image" />

        	<input type="submit" id="bEnvoyer" name="creation" value="Envoyer"/>
        </form>

    <form action="article.php"><input type="submit" class="moins" value="Annuler"/></form>

<?php
}
?>

<?php
	pied();
?><file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Jeu/Jeu.php';
require '../src/Jeu/JeuRepository.php';
require '../src/Equipe/Equipe.php';
require '../src/Equipe/EquipeRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil" ,$id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

$jeuRepository = new \Jeu\JeuRepository($connection);
$equipeRepository = new \Equipe\EquipeRepository($connection);

if(isset($_POST['creation'])){ //Si le jeu est créé, modification de la bdd puis renvoie vers la page de d'administration des jeux

	$titreJeu    = htmlspecialchars_decode($_POST['titre']);
	$git         = htmlspecialchars_decode($_POST['git']);
	$lienT       = htmlspecialchars_decode($_POST['telechargement']);
	$description = htmlspecialchars_decode($_POST['description']);

	$status = $jeuRepository->createJeu($titreJeu, $git, $lienT, $description);

	$idJeu = $jeuRepository->getIdJeu( $titreJeu );

	$i = 1;
	while( isset($_POST['membre'.$i]) && isset($_POST['roleMembre'.$i]) )
	{
		$idMembre = htmlspecialchars_decode($_POST['membre'.$i]);
		$role     = htmlspecialchars_decode($_POST['roleMembre'.$i]);
		$equipeRepository->createEquipe( $idJeu, $idMembre, $role );
		$i = $i + 1;
	}

	$i = 1;
    $envoie = TRUE;
    while( isset($_FILES['media'.$i] )) {
        $lien = "../media/";
        $lien = $lien . basename($_FILES['media'.$i]['name']);
        if(!move_uploaded_file($_FILES['media'.$i]['tmp_name'], $lien)) {
            echo '
'.var_dump($lien).'
';
            $envoie = FALSE;
            break;
        }else{
            $jeuRepository->addMedia($idJeu, $lien);
        }
        $i = $i + 1;
    }

	if($status && $envoie){
		echo '
Le projet a bien été créé
';
	}else{
		echo '
Erreur: la création du nouveau projet a échoué!
';
	}

	echo '
Redirection vers la liste des projets...
';
	header( "refresh:3;url=jeux.php" );
}else{

    echo '
Création d\'un projet
';

    ?>

        <form id="formAjout" id="formAjoutProjet" action="" method="POST" onsubmit="return verficationEnvoie()" enctype="multipart/form-data">
        	Titre : <input name="titre" type="text" required/>

			Description : <textarea name="description" rows="5" cols="40" required></textarea>

        	Lien du git : <textarea name="git" rows="5" cols="40" required></textarea>

			Lien de téléchargement : <textarea name="telechargement" rows="5" cols="40" required></textarea>
			<input type="button" id="bAjoutMembre" onclick="ajoutMembre()" value="Ajouter un membre" />
			<input type="button" id="bSuppMembre" onclick="suppMembre()" style="background-color:red" value="Supprimer le dernier Membre" />

			<input type="button" id="bAjoutMedia" onclick="ajoutMedia()" value="Ajouter une image" />
			<input type="button" id="bSuppMedia" onclick="suppMedia()" style="background-color:red" value="Supprimer la dernière image" />

        	<input type="submit" id="bEnvoyer" name="creation" value="Envoyer"/>
        </form>

    <form action="jeux.php"><input type="submit" class="moins" value="Annuler"/></form>

<?php
}
?>

<?php
	pied();
?><file_sep><?php
namespace Tuto;

class Tuto
{
    /**
     * @var int
     */
    private $id;

    /**
     * @var string
     */
    private $titre;

    /**
     * @var string
     */
    private $texte;

    /**
     * @var string
     */
    private $pdf;

    /**
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @param int $id
     * @return Tuto
     */
    public function setId($id)
    {
        $this->id = $id;
        return $this;
    }

    /**
     * @return string
     */
    public function getTitre()
    {
        return $this->titre;
    }

    /**
     * @param string $titre
     * @return Tuto
     */
    public function setTitre($titre)
    {
        $this->titre = $titre;
        return $this;
    }

    /**
     * @return string
     */
    public function getTexte()
    {
        return $this->texte;
    }

    /**
     * @param string $texte
     * @return Tuto
     */
    public function setTexte($texte)
    {
        $this->texte = $texte;
        return $this;
    }

    /**
     * @return string
     */
    public function getPdf()
    {
        return $this->pdf;
    }

    /**
     * @param string $pdf
     * @return Tuto
     */
    public function setPdf($pdf)
    {
        $this->pdf = $pdf;
        return $this;
    }
}

<file_sep><?php
	$id_page="debrief";
	require("../inc/inc.default.php");
	require("../inc/inc.nav.php");
	require("../src/Article/Article.php");
	require("../src/Article/ArticleRepository.php");
	require("../src/Membre/Membre.php");
	entete("Comptes-rendus",$id_page);

	navAccueil();

	$dbName = 'realitiie';
	$dbUser = 'postgres';
	$dbPassword = '<PASSWORD>';
	$connection = new PDO("pgsql:host=localhost user=$dbUser dbname=$dbName password=$dbPassword");

	$articleRepository = new \Article\ArticleRepository($connection);
	$articles = $articleRepository->fetchCompteRendu();
?>

<?php
	$i = 2;
	foreach($articles as $article){
		if ($article->getDate() > getDate()){
			if ($i == 1)
				$i = 2;
			else
				$i = 1;

			echo '

'.$article->getTitre().'
';

			$imgs = $articleRepository->getMedias($article->getId());
			foreach($imgs as $img){
				if(file_exists($img)){
						echo '';
				}
			}

			echo '
'.$article->getTexte().'

 Auteur : '.$article->getAuteur()->getSurnom().'

';
		}
	}
?>

<?php pied(); ?><file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Article/Article.php';
require '../src/Article/ArticleRepository.php';
require '../src/Membre/Membre.php';
require '../src/Membre/MembreRepository.php';
require '../src/Miseajour/Miseajour.php';
require '../src/Miseajour/MiseajourRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil" ,$id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

if(!isset($_GET['idArticle']) && !isset($_GET['idMembre']) && !isset($_GET['idMaj']) ){ //Si pas connecté, renvoie vers la page de connexion
	header("location:../public/index.php");
}

if( isset($_POST['modificationMedia'] ) )
{
	if( isset($_GET['idArticle']) )
	{
		$idArticle = htmlspecialchars_decode( $_GET['idArticle']);
		$articleRepository = new \Article\ArticleRepository($connection);
		$status = $articleRepository->deleteAllMedia($idArticle);
		$i = 1;
		$envoie = TRUE;
		while( isset( $_FILES[ 'media'.$i ] ) )
		{
			$lien = "../media/";
			$lien = $lien . basename($_FILES['media'.$i]['name']);
			if(!move_uploaded_file($_FILES['media'.$i]['tmp_name'], $lien)) {
				echo '
'.var_dump($lien).'
';
				$envoie = FALSE;
				break;
			}else{
				$articleRepository->addMedia($idArticle, $lien);
			}
			$i = $i + 1;
		}
		if($status && $envoie){
			echo '
Les modifications ont été faites
';
		}else{
			echo '
Erreur: la modification a échouée
';
		}

		echo '
Redirection vers la liste des articles...
';
		header( "refresh:3;url=article.php" );
	}
	else if( isset($_GET['idMembre']) )
	{
		$idMembre = htmlspecialchars_decode( $_GET['idMembre']);

		$membreRepository = new \Membre\MembreRepository($connection);

		$status = $membreRepository->deleteAllMedia($idMembre);
		$i = 1;
		$envoie = TRUE;
		while( isset( $_FILES[ 'media'.$i ] ) )
		{
			$lien = "../media/";
			$lien = $lien . basename($_FILES['media'.$i]['name']);
			if(!move_uploaded_file($_FILES['media'.$i]['tmp_name'], $lien)) {
				echo '
'.var_dump($lien).'
';
				$envoie = FALSE;
				break;
			}else{
				$membreRepository->addMedia($idMembre, $lien);
			}
			$i = $i + 1;
		}
		if($status && $envoie){
			echo '
Les modifications ont été faites
';
		}else{
			echo '
Erreur: la modification a échouée
';
		}

		echo '
Redirection vers la liste des membres...
';
		header( "refresh:3;url=membre.php" );
	}
	else if( isset($_GET['idMaj']) )
	{
		$idMaj = htmlspecialchars_decode( $_GET['idMaj']);

		$majRepository = new \Miseajour\MiseajourRepository($connection);

		$status = $majRepository->deleteAllMedia($idMaj);
		$i = 1;
		$envoie = TRUE;
		while( isset( $_FILES[ 'media'.$i ] ) )
		{
			$lien = "../media/";
			$lien = $lien . basename($_FILES['media'.$i]['name']);
			if(!move_uploaded_file($_FILES['media'.$i]['tmp_name'], $lien)) {
				echo '
'.var_dump($lien).'
';
				$envoie = FALSE;
				break;
			}else{
				$majRepository->addMedia($idMaj, $lien);
			}
			$i = $i + 1;
		}
		if($status && $envoie){
			echo '
Les modifications ont été faites
';
		}else{
			echo '
Erreur: la modification a échouée
';
		}

		echo '
Redirection vers la liste des projets...
';
		header( "refresh:3;url=jeux.php" );
	}
}
else
{
?>

		<form id="formAjout" action="" method="POST" enctype="multipart/form-data">

			<input type="button" id="bAjoutMedia" onclick="ajoutMedia()" value="Ajouter une image" />
			<input type="button" id="bSuppMedia" onclick="suppMedia()" style="background-color:red" value="Supprimer la dernière image" />

			<input type="submit" id="bEnvoyer" name="modificationMedia" value="Envoyer"/>
		</form>

<?php
}
?><file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Jeu/Jeu.php';
require '../src/Jeu/JeuRepository.php';
require '../src/Miseajour/Miseajour.php';
require '../src/Miseajour/MiseajourRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil" ,$id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

if(!isset($_GET['id'])){ //Si aucun miseajour selectionné, renvoie vers la page de d'administration des mise a jours
    header("location: jeux.php");
}

$MajRepository = new \Miseajour\MiseajourRepository($connection);
$maj = $MajRepository->getMiseajour($_GET['id']);

if($maj == NULL){ //Si la mise à jour introuvable, renvoie vers la page des projets
    echo '
Erreur: la mise a jour n°'.$_GET['id'].' est introuvable!
';
    echo '
Redirection vers la liste des projets...
';
    header( "refresh:3;url=jeux.php" );

}else if(isset($_POST['modification'])){ //Si la mise a jour est modfifié, modification de la bdd puis renvoie vers la page de modification du projet
    $status = $MajRepository->setMiseajour($_GET['id'], $_POST['texte'], $_POST['date']);

    if($status){
        echo '
La mise a jour n°'.$_GET['id'].' a bien été modifié
';
    }else{
        echo '
Erreur: la modification de la mise a jour n°'.$_GET['id'].' a échoué!
';
    }

    echo '
Redirection vers le projet...
';
    header( "refresh:3;url=jeuModification.php?id=".$maj->getJeu()->getId());
}else if(isset($_POST['supression'])){ //Si la mise a jour est supprimé, modification de la bdd puis renvoie vers la page de modification du projet
	$MajRepository->deleteAllMedia($_GET['id']);
	$status = $MajRepository->deleteMiseajour($_GET['id']);

    if($status){
        echo '
La mise a jour n°'.$_GET['id'].' a bien été supprimé
';
    }else{
        echo '
Erreur: la supression de la mise a jour n°'.$_GET['id'].' a échoué!
';
    }

    echo '
Redirection vers le projet...
';
    header( "refresh:3;url=jeuModification.php?id=".$maj->getJeu()->getId());
}else{

    echo '
Modification de la mise a jour n°'.$maj->getId().'
';

    ?>

        <form action="" method="POST">
        	Texte : <textarea name="texte" rows="5" cols="40" required><?php echo $maj->getTexte() ?></textarea>

        	Date de publication : <input name="date" type="date" value="<?php echo $maj->getDate()->format('Y-m-d') ?>" required/>
        	<?php
				echo 'getId().'" >Modifier l\'image de mise à jour';
			?>
			<input type="submit" name="modification" value="Envoyer"/>
        </form>

    <form action="" method="POST"><input name ="supression" type="submit" class="moins" value="Supprimer la mise a jour"/></form>

<?php
}
?>

<?php
	pied();
?><file_sep><?php
	$id_page="tuto";
	require("../inc/inc.default.php");
	require("../inc/inc.nav.php");
	entete("Tutos",$id_page);

	navAccueil();

?>

Vous retrouverez ici tous les tutos sur les différents outils utilisés une fois connecté.

<?php pied(); ?><file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Tuto/Tuto.php';
require '../src/Tuto/TutoRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "Accueil", $id_page );
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

$tutoRepository = new \Tuto\TutoRepository($connection);
//$tutoRepository = new \Tuto\TutoRepository($connection);
$tutos = $tutoRepository->fetchAll();
?>

Administration des tutos

Cliquez sur un tuto pour le modifier ou le supprimer

Titre	Lien du PDF

    	<?php
    	foreach ($tutos as $tuto) {
    	    echo
    	    '

                getId().'">'.$tuto->getTitre().'	'.$tuto->getPdf().'

';

    	}
    	?>

<form action="tutoCreation.php"><input type="submit" class="plus" value="Écrire un Tuto"/></form>
<form action="admin.php"><input type="submit" class="moins" value="Revenir à l'espace d'administration"/></form>

<?php
	pied();
?><file_sep>
	<link rel="stylesheet" href="../CSS/style.css">

<?php
$id_page="admin";
require '../src/Jeu/Jeu.php';
require '../src/Jeu/JeuRepository.php';
require '../src/Membre/Membre.php';
require '../src/Membre/MembreRepository.php';
require '../src/Equipe/Equipe.php';
require '../src/Equipe/EquipeRepository.php';
require( "../inc/inc.default.php" );
require( "../inc/inc.nav.php" );
entete( "jeux" ,$id_page);
navAccueil();

if(!isset($_SESSION['pseudo'])){ //Si pas connecté, renvoie vers la page de connexion
    require( "../inc/connexionForm.php" );
    exit();
}

$jeuRepository = new \Jeu\JeuRepository($connection);
$equipeRepository = new \Equipe\EquipeRepository($connection);
$jeux = $jeuRepository->fetchAll();
?>

Administration des projets

Cliquez sur un projet pour le modifier ou le supprimer

Titre

    	<?php
    	foreach ($jeux as $jeu) {
    	    if($_SESSION['role'] == 'a' || $equipeRepository->faitPartieEquipe($jeu->getId(), $_SESSION['id'])){
        	    echo
        	    '

                    getId().'">'.$jeu->getTitre().'

';
    	    }
    	}
    	?>

<form action="jeuCreation.php"><input type="submit" class="plus" value="Créer un nouveau projet"/></form>
<form action="admin.php"><input type="submit" class="moins" value="Revenir à l'espace d'administration"/></form>

<?php
	pied();
?><file_sep><?php
namespace Tuto;
class TutoRepository
{
    /**
     * @var \PDO
     */
    private $connection;

    /**
     * TutoRepository constructor.
     * @param \PDO $connection
     */
    public function __construct(\PDO $connection)
    {
        $this->connection = $connection;
    }

    public function fetchAll()
    {
        $rows = $this->connection->query('SELECT * FROM "tuto"')->fetchAll(\PDO::FETCH_OBJ);
        $tutos = [];
        foreach ($rows as $row) {
            $tuto = new Tuto();
            $tuto
                ->setId($row->id_tuto)
                ->setTitre($row->titre)
                ->setTexte($row->texte)
                ->setPdf($row->pdf);

            $tutos[] = $tuto;
        }

        return $tutos;
    }

    public function getTuto($id)
    {
        $row = $this->connection->query('SELECT titre, texte, pdf
                                         FROM "tuto"
                                         WHERE id_tuto = '.$id)->fetchAll(\PDO::FETCH_OBJ);
        if(count($row) == 0){
            return NULL;
        }
        $row = $row[0];
        $tuto = new Tuto();
        $tuto
        ->setId($id)
        ->setTitre($row->titre)
        ->setTexte($row->texte)
        ->setPdf($row->pdf);

        return $tuto;
    }

    public function setTuto($id, $titre, $texte, $pdf)
    {
        $sql = "UPDATE tuto
                SET titre = ?, texte = ?, pdf = ?
                WHERE id_tuto = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($titre, $texte, $pdf, $id));
        return $status;
    }

    public function deleteTuto($id)
    {
        $sql = "DELETE FROM tuto
                WHERE id_tuto = ?";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($id));
        return $status;
    }

    public function createTuto($titre, $texte, $pdf)
    {
        $sql = "INSERT INTO tuto
                (titre, texte, pdf) VALUES (?, ?, ?);";
        $req = $this->connection->prepare($sql);
        $status = $req->execute(array($titre, $texte, $pdf));
        return $status;
    }
}
<file_sep><?php
	$id_page="ressources";
	require("../inc/inc.default.php");
	require("../inc/inc.nav.php");
	require("../src/Tuto/Tuto.php");
	require("../src/Tuto/TutoRepository.php");
	entete("Ressources",$id_page);

	navAccueil();

	$dbName = 'realitiie';
	$dbUser = 'postgres';
	$dbPassword = '<PASSWORD>';
	$connection = new PDO("pgsql:host=localhost user=$dbUser dbname=$dbName password=$dbPassword");

	$TutoRepository = new \Tuto\TutoRepository($connection);
	$tutos = $TutoRepository->fetchAll();

?>

Voici des tutos qui pourront vous aider dans vos projets!

<?php
	foreach($tutos as $tuto){
		echo '

'.$tuto->getTitre().'

'.$tuto->getTexte().'

				getPdf().'">
					view '.$tuto->getTitre().'.pdf

';
	}
?>

<?php pied(); ?><file_sep><?php
namespace Equipe;

use Jeu\Jeu;
use Membre\Membre;

class Equipe
{
    /**
     * @var Jeu
     */
    private $jeu;

    /**
     * @var Membre[]
     */
    private $membres;

    /**
     * @var int=>string[]
     */
    private $roles;

    /**
     * @return Jeu
     */
    public function getJeu()
    {
        return $this->jeu;
    }

    /**
     * @param Jeu $jeu
     * @return Equipe
     */
    public function setJeu($jeu)
    {
        $this->jeu = $jeu;
        return $this;
    }

    /**
     * @return Membre[]
     */
    public function getMembres()
    {
        return $this->membres;
    }

    /**
     * @param string[] $membres
     * @return Equipe
     */
    public function setMembres($membres)
    {
        $this->membres = $membres;
        return $this;
    }

    /**
     * @return int=>string[]
     */
    public function getRoles()
    {
        return $this->roles;
    }

    /**
     * @param int=>string[] $roles
     * @return Equipe
     */
    public function setRoles($roles)
    {
        $this->roles = $roles;
        return $this;
    }

    /**
     * @param int $membre
     * @return string
     */
    public function getRole($membre)
    {
        if(isset($this->roles[$membre])){
            return $this->roles[$membre];
        }else{
            return "";
        }
    }

}<file_sep><?php
    $id_page="projet";
	require("../inc/inc.default.php");
	require("../inc/inc.nav.php");

	$dbName = 'realitiie';
	$dbUser = 'postgres';
	$dbPassword = '<PASSWORD>';
	$connection = new PDO("pgsql:host=localhost user=$dbUser dbname=$dbName password=<PASSWORD>");

	require("../src/Jeu/Jeu.php");
	require("../src/Jeu/JeuRepository.php");
	require("../src/Equipe/Equipe.php");
	require("../src/Equipe/EquipeRepository.php");
	require("../src/Membre/Membre.php");
	require("../src/Membre/MembreRepository.php");
	//require("../src/Article/Article.php");
	//require("../src/Article/ArticleRepository.php");
	require("../src/Miseajour/Miseajour.php");
	require("../src/Miseajour/MiseajourRepository.php");

	$JeuRepository = new \Jeu\JeuRepository($connection);
	$EquipeRepository = new \Equipe\EquipeRepository($connection);
	//$ArticleRepository = new \Article\ArticleRepository($connection);
	$MembreRepository = new \Membre\MembreRepository($connection);
	$MiseajourRepository = new \Miseajour\MiseajourRepository($connection);

	if(!isset($_GET['id'])){
		header("location: projet.php");
	}
	$jeu = $JeuRepository->getJeu($_GET['id']);

	if($jeu == NULL){
		echo '
Erreur: le jeu n°'.$_GET['id'].' est introuvable!
';
		echo '
Redirection vers la liste des jeux...
';
		header( "refresh:3;url=projet.php" );
	}

	$idjeu = $jeu->getId();
	$equipe = $EquipeRepository->getEquipe($idjeu);
	$maj = $MiseajourRepository->fetchAllFromJeu($idjeu);

	entete( $jeu->getTitre(), $id_page );
	navAccueil();
?>

	<?php
	echo '
'.$jeu->getTitre().'
';

	$imgs = $JeuRepository->getMedias($jeu->getId());
	foreach($imgs as $img){
		if(file_exists($img) == true){
				echo '';
		}
	}
	?>

	<?php
	echo '
Description :

'.$jeu->getDescription().'

 Ce magnifique jeu a été réalisé par :

';
			foreach ($equipe->getMembres() as $mem){
				echo '
'.$mem->getSurnom().' : '.$equipe->getRole($mem->getId()).'
';
			}
		echo '

 Vous pouvez le télécharger ici :
		getTelechargement().' download='.$jeu->getTitre().'>Votre jeu trop bien!!
';
	?>

Mise à jour du jeu

	<?php
		if(sizeof($maj)==0){
			echo 'Ce jeu n\'a pas encore de mise à jour';
		}

		else{
			foreach($maj as $m){
				if ( $m->getDate()->format("d M Y") <= getDate()){
					echo '
Mise à jour du '.$m->getDate()->format("d M Y").'
';

					$imgs = $MiseajourRepository->getMedias($m->getId());
					foreach($imgs as $img){
						if(file_exists($img)){
							echo '';
						}
					}

					echo '
'.$m->getTexte().'
';
				}
			}
		}
	?>

<?php pied(); ?>

languages: CSS SQL JavaScript PHP

repo_language: CSS

repo_name: Altreon/ensiie-project