Initial commit

Création de tous les dossiers et fichiers avec mise à part des constantes
This commit is contained in:
Timothée Huneau 2023-04-11 19:11:26 +02:00
commit 4c71fb59b4
42 changed files with 2544 additions and 0 deletions

70
inc/fonctions.php Normal file
View file

@ -0,0 +1,70 @@
<?php
function transformeCharsAutorises($entree){
$transformations = [
'#Œ#' => 'Oe',
'#œ#' => 'oe',
'#Æ#' => 'Ae',
'#æ#' => 'ae',
'#[^a-zàâäéèêëîïôöùûüÿçñA-ZÀÂÄÉÈÊËÎÏÔÖÙÛÜŸÇÑ ,\'-]#' => '',
'#^[ ,-]+#' => '',
'#[ ]+$#' => '',
'#\'#' => '\\\''
];
foreach ($transformations as $reEtape => $remplacement){
$entree = preg_replace($reEtape, $remplacement, $entree);
}
$entree = mb_strtoupper(mb_substr($entree, 0, 1)) . mb_substr($entree, 1);
return $entree;
}
function calculeMinutesFromTexte($texteDuree){
$texteDuree = preg_replace("/ /", "", $texteDuree);
preg_match("#(?:([0-9]*) ?j(?:our\(s\)|our|ours)?)? ?(?:([0-9]*) ?h(?:eure\(s\)|eure|eures)?)? ?(?:([0-9]*) ?min(?:ute\(s\)|ute|utes)?)?#", $texteDuree, $matches) ;
$dureeMinutes = 0;
foreach($matches as $clef => $duree){
if ($clef == 1 and $duree != NULL){$dureeMinutes += 1440*$duree;}
if ($clef == 2 and $duree != NULL){$dureeMinutes += 60*$duree;}
if ($clef == 3){$dureeMinutes += intval($duree);}
}
return $dureeMinutes;
}
function calculeTexteFromMinutes($minute){
$restant = $minute;
$texteMinutes = '';
$tempsJours = intdiv($restant,1440);
$texteMinutes .= ($tempsJours) != 0 ? $tempsJours . ' jour(s) ' : '';
$restant = $restant % 1440;
$tempsHeures = intdiv($restant,60);
$texteMinutes .= ($tempsHeures) != 0 ? $tempsHeures . ' heure(s) ' : '';
$restant = $restant % 60;
$texteMinutes .= ($restant) != 0 ? $restant . ' minute(s)' : '';
return $texteMinutes;
}
function lectureVersEcriture($texte){
$texte = preg_replace("#<br/>#","##",$texte);
$texte = preg_replace("#</p><p>#","\n",$texte);
$texte = preg_replace("#⌀#","#diam",$texte);
return $texte;
}
function ecritureVersLecture($texte){
$texte = preg_replace("/##/","<br/>",$texte);
$texte = preg_replace("/\n/","</p><p>",$texte);
$texte = preg_replace("/#diam/","",$texte);
return $texte;
}
function echappementBDD($texte){ //echappe tous les caractères pour que la chaînes soit acceptable dasn une requete SQL
$texte = preg_replace("/'/","\'",$texte);
return $texte;
}
?>

240
inc/modele.php Normal file
View file

@ -0,0 +1,240 @@
<?php
function seConnecter() {
if($_SESSION['auth']){
$connexion = mysqli_connect(SERVEUR, SUPER_UTILISATRICE, SUPER_MOTDEPASSE, BDD);
}
else{
$connexion = mysqli_connect(SERVEUR, UTILISATRICE_PAR_DEFAUT, MOTDEPASSE_PAR_DEFAUT, BDD);
}
if (mysqli_connect_errno()) {
echo "<script>console.log('Echec de la connexion à la base');</script>";
exit();
}
mysqli_set_charset($connexion,'utf8');
return $connexion;
}
// déconnexion de la BD
function deconnectBD($connexion) {
mysqli_close($connexion);
}
function getAllIngredients(){
$c = seConnecter();
$requete = "
SELECT *
FROM Ingredient
ORDER BY nom;
";
$resultatIngredients = mysqli_query($c, $requete);
$listeIngredients = [];
while($ingredient = mysqli_fetch_assoc($resultatIngredients)){
$listeIngredients[$ingredient['id']] = $ingredient;
}
deconnectBD($c);
return $listeIngredients;
}
function getAllUstensiles(){
$c = seConnecter();
$requete = "
SELECT *
FROM Ustensile
ORDER BY nom;
";
$resultatUstensiles = mysqli_query($c, $requete);
$listeUstensiles = [];
while($ustensile = mysqli_fetch_assoc($resultatUstensiles)){
$listeUstensiles[$ustensile['id']] = $ustensile;
}
deconnectBD($c);
return $listeUstensiles;
}
function getAllPreparations(){
$c = seConnecter();
$requete = "
SELECT *
FROM Preparation
ORDER BY nom;
";
$resultatPreparations = mysqli_query($c, $requete);
$listePreparations = [];
while($preparation = mysqli_fetch_assoc($resultatPreparations)){
$listePreparations[$preparation['id']] = $preparation;
}
deconnectBD($c);
return $listePreparations;
}
function getAllRecettes(){
$c = seConnecter();
$requete = "
SELECT *
FROM Recette
ORDER BY nom;
";
$resultatRecettes = mysqli_query($c, $requete);
$listeRecettes = [];
while($recette = mysqli_fetch_assoc($resultatRecettes)){
$listeRecettes[$recette['id']] = $recette;
}
deconnectBD($c);
return $listeRecettes;
}
function recupereGenres($c){
$requete = "
SELECT *
FROM Genre
;";
$resultatGenre = mysqli_query($c,$requete);
$listeGenres = [];
while ($genre = mysqli_fetch_assoc($resultatGenre)){
$listeGenres[$genre['id']] = $genre['nom'];
}
return $listeGenres;
}
function recupereUnites($c){
$requete = "
SELECT *
FROM Unite
;";
$resultatUnite = mysqli_query($c,$requete);
$listeUnites = [];
while ($unite = mysqli_fetch_assoc($resultatUnite)){
$listeUnites[$unite['id']] = $unite['nom'];
}
return $listeUnites;
}
// modification vaut false si on effectue une création de recette et l'id de la recette à modifier sinon
// les listes d'ingrédients, de préparation et d'ustensile sont des tableaux de tableaux indexés sur les id des éléments utilisés.
function insererRecette($infosRecette, $listeIngredients, $listeUstensile, $listePreparation, $listeReutilise, $modification){
$c = seConnecter();
try {
mysqli_begin_transaction($c);
$nom = echappementBDD($infosRecette['nom']);
$tempsTotal = calculeMinutesFromTexte($infosRecette['tempsTotal']);
$genre = $infosRecette['genre'];
$unitePortion = $infosRecette['unitePortion'];
$nbPortion = $infosRecette['nbPortion'];
$realisation = echappementBDD(ecritureVersLecture($infosRecette['realisation']));
if($modification){
$idRecette = $modification;
$requetePrincipale = "
UPDATE Recette
SET
nom = '$nom',
tempsTotal = $tempsTotal,
genre = $genre,
unitePortion = $unitePortion,
nbPortion = $nbPortion,
realisation = '$realisation'
WHERE id = $idRecette;
";
mysqli_query($c, $requetePrincipale);
$requeteSupprIngredients = "DELETE FROM RecetteIngredient WHERE recette = $idRecette;";
mysqli_query($c, $requeteSupprIngredients);
$requeteSupprUstensiles = "DELETE FROM RecetteUstensile WHERE recette = $idRecette;";
mysqli_query($c, $requeteSupprUstensiles);
$requeteSupprPreparations = "DELETE FROM RecettePreparation WHERE recette = $idRecette;";
mysqli_query($c, $requeteSupprPreparations);
$requeteSupprReutilises = "DELETE FROM Reutilise WHERE utilisant = $idRecette;";
mysqli_query($c, $requeteSupprReutilises);
}else{
$requetePrincipale = "
INSERT INTO Recette (nom, tempsTotal, genre, unitePortion, nbPortion, realisation)
VALUES (
'$nom',
$tempsTotal,
$genre,
$unitePortion,
$nbPortion,
'$realisation'
);";
mysqli_query($c, $requetePrincipale);
$idRecette = mysqli_insert_id($c);
}
foreach($listeIngredients as $id => $ingredient){
$quantite = $ingredient['quantite'];
$unite = $ingredient['unite'];
$requete = "
INSERT INTO RecetteIngredient (ingredient, recette, quantite, unite)
VALUES (
$id,
$idRecette,
$quantite,
$unite
)
;";
mysqli_query($c, $requete);
}
foreach($listeUstensile as $id => $ustensile){
$commentaire = mysqli_real_escape_string($c, $ustensile['commentaire']);
$requete = "
INSERT INTO RecetteUstensile (ustensile, recette, commentaire)
VALUES (
$id,
$idRecette,
'$commentaire'
)
;";
mysqli_query($c, $requete);
}
foreach($listePreparation as $id => $preparation){
$duree = $preparation['duree'];
$temperature = $preparation['temp'];
$requete = "
INSERT INTO RecettePreparation (preparation, recette, duree, temperature)
VALUES (
$id,
$idRecette,
'$duree',
'$temperature'
)
;";
mysqli_query($c, $requete);
}
foreach($listeReutilise as $id => $utilisee){
$requete = "
INSERT INTO Reutilise (utilisee, utilisant)
VALUES (
$id,
$idRecette
)
;";
mysqli_query($c, $requete);
}
mysqli_commit($c);
}
catch (Exception $e){
mysqli_query('ROLLBACK');
$echec = true;
}
return $idRecette;
}
?>

83
inc/routes.php Normal file
View file

@ -0,0 +1,83 @@
<?php
$routes = array(
'accueil' => array(
'controleur' => 'cAccueil',
'vue' => 'vAccueil',
'nom' => 'Accueil',
'aside' => 'aAccueil',
'script' => 'sAccueil'
),
'ajouterRecette' => array(
'controleur' => 'cAjouterRecette',
'vue' => 'vAjouterRecette',
'nom' => 'Ajouter une recette',
'aside' => 'aAjouterRecette',
'script' => 'void'
),
'ajouterElement' => array(
'controleur' => 'cAjouterElement',
'vue' => 'vAjouterElement',
'nom' => 'Ajouter des éléments',
'aside' => 'void',
'script' => 'void'
),
'statistiques' => array(
'controleur' => 'cStatistiques',
'vue' => 'vStatistiques',
'nom' => 'Statistiques',
'aside' => 'void',
'script' => 'void'
),
'recette' => array(
'controleur' => 'cRecette',
'vue' => 'vRecette',
'nom' => 'Recette',
'aside' => 'aRecette',
'script' => 'sRecette'
),
'supprimerRecette' => array(
'controleur' => 'cSupprimerRecette',
'vue' => 'vSupprimerRecette',
'nom' => 'Suppresion d\'une recette',
'aside' => 'void',
'script' => 'void'
),
'supprimerElement' => array(
'controleur' => 'cSupprimerElement',
'vue' => 'vSupprimerElement',
'nom' => 'Suppresion d\'un élément',
'aside' => 'void',
'script' => 'void'
),
'element' => array(
'controleur' => 'cElement',
'vue' => 'vElement',
'nom' => '',
'aside' => 'void',
'script' => 'void'
),
'connexion' => array(
'controleur' => 'cConnexion',
'vue' => 'vConnexion',
'nom' => 'Connexion',
'aside' => 'void',
'script' => 'void'
),
'test' => array(
'controleur' => 'cTests',
'vue' => 'vTests',
'nom' => 'Tests',
'aside' => 'void',
'script' => 'void'
)
);
?>