public function categories($categorie = null) { // On commence par récupérer une recette aléatoire de la catégorie sélectionnée par l'utilisateur : $this->load->model('RecetteManager'); $recetteManager = new RecetteManager(); $recette = $recetteManager->get_random_by_categorie(urldecode($categorie)); $data = array(); if ($recette) { // On récupère les ingrédients de la recette : $ingredients = $recetteManager->get_ingredients($recette->id_recette); $data['ingredients'] = $ingredients; } // Ici on récupère les sous-catégories : $this->load->model('CategorieManager'); $categorieManager = new CategorieManager(); $id_categorie_mere = $categorieManager->get_id(urldecode($categorie))->id_categorie; $sous_categories = $categorieManager->get_sous_categories($id_categorie_mere); $data['sous_categories'] = $sous_categories; $data['recette'] = $recette; // Ici on récupère toutes les autres recettes correspondant à cettecatégorie : $recettes = $recetteManager->get_recettes_by_categorie($categorie); $nb_recettes = count($recettes); $nb_div = ceil($nb_recettes / 3); $data['recettes'] = $recettes; $data['nb_div'] = $nb_div; $data['nb_recettes'] = $nb_recettes; $data['categorie'] = urldecode($categorie); $data['menu_categories'] = $this->menu_categories; $this->layout->view('categorie', $data); }
public function index() { // On charge les différentes classes et models : $this->load->library('recette'); $this->load->model('recetteManager'); $this->load->library('ingredient'); $this->load->model('ingredientManager'); // On instancie les managers : $recetteManager = new RecetteManager(); $ingredientManager = new IngredientManager(); // On récupère les données relatives à une recette aléatoirement : $donnees = $recetteManager->get_random(); $recette = new Recette($donnees); // On récupère dans un tableau les id_ingredients et les quantités en lien avec la recette : $id_ingredients = $recetteManager->get_ingredients($recette->id_recette()); // Pour chacun des ingrédients, on stocke dans un tableau son nom et sa quantité : $ingredients = array(); foreach ($id_ingredients as $row) { $donnees = array(); $donnees['nom'] = $ingredientManager->get_nom($row->id_ingredient)->nom_ingredient; $donnees['quantite'] = $row->quantite; $ingredients[] = $donnees; } $slug = url_title($recette->titre()); // On récupère les catégories principales : $this->load->model('CategorieManager'); $categorieManager = new CategorieManager(); $categories = $categorieManager->get_categories(); $data = array(); $data['recette'] = $recette; $data['id_recette'] = $recette->id_recette(); $data['titre'] = $recette->titre(); $data['photo'] = $recette->photo(); $data['description'] = $recette->description(); $data['ingredients'] = $ingredients; // Il s'agit d'un tableau de tableaux $data['categories'] = $categories; $data['active'] = "accueil"; $data['menu_categories'] = $this->menu_categories; $this->layout->view('accueil', $data); }
public function modifier($id = null) { if (!is_connected()) { redirect('accueil'); } else { $this->load->helper('form'); $this->load->library('form_validation'); // On fixe les règles concernant l'ajout d'une recette : $this->form_validation->set_rules('titre', '"Titre de la recette"', 'trim|required|encode_php_tags'); $this->form_validation->set_rules('categorie', '"Catégorie de la recette"', 'trim|required|encode_php_tags'); $this->form_validation->set_rules('sous_categorie', '"Sous-Catégorie de la recette"', 'trim|encode_php_tags'); $this->form_validation->set_rules('preparation', '"Préparation de la recette"', 'trim|required|encode_php_tags'); $this->form_validation->set_rules('nb_personnes', '"Nombre de personnes"', 'trim|required|encode_php_tags'); $this->form_validation->set_rules('duree', '"Durée de la recette"', 'trim|required|encode_php_tags'); $this->form_validation->set_rules('prix', '"Catégorie de prix"', 'trim|required|encode_php_tags'); $this->form_validation->set_rules('difficulte', '"Catégorie de difficulté"', 'trim|required|encode_php_tags'); // On contrôle l'upload de la photo : $config['upload_path'] = './assets/images/recettes/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '2048'; $config['max_width'] = '2000'; $config['max_height'] = '2000'; $this->load->library('upload', $config); if ($this->form_validation->run()) { // On teste si une photo a été envoyée if ($_FILES['photo']['name'] == null) { // Ici le formulaire est valide mais aucune photo n'a été envoyée // On récupère les ids correspondants aux catégories : $this->load->model('CategorieManager'); $categorieManager = new CategorieManager(); $id_categorie = (int) $categorieManager->get_id($this->input->post('categorie'))->id_categorie; if ($this->input->post('sous_categorie')) { $id_sous_categorie = (int) $categorieManager->get_id($this->input->post('sous_categorie'))->id_categorie; } // On place l'ensemble des champs dans un tableau pour pouvoir les mettre à jour : $slug = url_title($this->input->post('titre')); $data = array('titre' => $this->input->post('titre'), 'id_categorie' => $id_categorie, 'id_sous_categorie' => $id_sous_categorie, 'description' => $this->input->post('preparation'), 'nombre_personnes' => $this->input->post('nb_personnes'), 'duree' => $this->input->post('duree'), 'categorie_prix' => $this->input->post('prix'), 'categorie_difficulte' => $this->input->post('difficulte'), 'slug' => $slug); // On met à jour les données : $this->db->where('id_recette', $this->input->post('id_recette')); $this->db->update('recette', $data); // Ici on s'occuppe des ingrédients : // On commence par supprimer tous les ingrédients de la table ingredient_recette associée à la recette en question : $this->db->delete('ingredient_recette', array('id_recette' => $this->input->post('id_recette'))); // Puis on récupère les ingrédients du formulaire et on les ajoute en bdd : $nb_ingredients = (int) $this->input->post('nb_ingredients'); $this->load->model('IngredientManager'); $this->load->model('IngredientRecetteManager'); $ingredientManager = new IngredientManager(); $ingredientRecetteManager = new IngredientRecetteManager(); for ($i = 1; $i <= $nb_ingredients; $i++) { $nom_ingredient = $this->input->post('ingredient_' . $i); $id_ingredient = $ingredientManager->get_id($nom_ingredient); if ($id_ingredient == null) { // On ajoute ici le nouvel ingrédient en bdd : $id_ingredient = $ingredientManager->ajouter_ingredient($nom_ingredient); $quantite = $this->input->post('quantite_' . $i); $ingredientRecetteManager->ajouter($id_ingredient, $this->input->post('id_recette'), $quantite); } else { $quantite = $this->input->post('quantite_' . $i); $ingredientRecetteManager->ajouter($id_ingredient, $this->input->post('id_recette'), $quantite); } } redirect('recettes/detail/' . $this->input->post('id_recette')); } else { // Ici, le formulaire est valide et une photo a été envoyée, on vérifie donc qu'elle correspond aux bons critères if (!$this->upload->do_upload('photo') == true) { // Le formulaire est vide ou invalide $this->load->model('CategorieManager'); $this->load->model('RecetteManager'); $this->load->model('IngredientManager'); // On récupère la recette correspondante $recetteManager = new RecetteManager(); $recette = $recetteManager->get_recette_object($id); if ($recette == null) { $recette = $recetteManager->get_recette_object($this->input->post('id_recette')); } // On récupère les catégories $categorieManager = new CategorieManager(); $categories = $categorieManager->get_categories(); $sous_categories = null; // On récupère les sous-catégories : if ($recette) { $sous_categories = $categorieManager->get_sous_categories($recette->id_categorie); } // On récupère les ingrédients de la recette $ingredients = null; if ($recette) { $ingredients = $recetteManager->get_ingredients($recette->id_recette); } $data = array(); $data['recette'] = $recette; $data['categories'] = $categories; $data['sous_categories'] = $sous_categories; $data['ingredients'] = $ingredients; $data['menu_categories'] = $this->menu_categories; $this->layout->view('formulaire_modification_recette', $data); } else { // Ici l'upload est valide, on envoie les données en bdd : // On récupère les ids correspondants aux catégories : $data_photo = array('upload_data' => $this->upload->data()); //On crée une miniature de l'image : $config['image_library'] = 'gd2'; $config['source_image'] = $data_photo['upload_data']['full_path']; $config['new_image'] = "miniature_" . $data_photo['upload_data']['file_name']; //$config['create_thumb'] = TRUE; $config['maintain_ratio'] = false; $config['width'] = 500; $config['height'] = 375; $this->load->library('image_lib', $config); $this->image_lib->resize(); $this->load->model('CategorieManager'); $categorieManager = new CategorieManager(); $id_categorie = (int) $categorieManager->get_id($this->input->post('categorie'))->id_categorie; $id_sous_categorie = (int) $categorieManager->get_id($this->input->post('sous_categorie'))->id_categorie; // On place l'ensemble des champs dans un tableau pour pouvoir les mettre à jour : $slug = url_title($this->input->post('titre')); $data = array('titre' => $this->input->post('titre'), 'id_categorie' => $id_categorie, 'id_sous_categorie' => $id_sous_categorie, 'description' => $this->input->post('preparation'), 'nombre_personnes' => $this->input->post('nb_personnes'), 'duree' => $this->input->post('duree'), 'categorie_prix' => $this->input->post('prix'), 'categorie_difficulte' => $this->input->post('difficulte'), 'photo' => $data_photo['upload_data']['file_name'], 'slug' => $slug); // On met à jour les données : $this->db->where('id_recette', $this->input->post('id_recette')); $this->db->update('recette', $data); // Ici on s'occuppe des ingrédients : // On commence par supprimer tous les ingrédients de la table ingredient_recette associée à la recette en question : $this->db->delete('ingredient_recette', array('id_recette' => $this->input->post('id_recette'))); // Puis on récupère les ingrédients du formulaire et on les ajoute en bdd : $nb_ingredients = (int) $this->input->post('nb_ingredients'); $this->load->model('IngredientManager'); $this->load->model('IngredientRecetteManager'); $ingredientManager = new IngredientManager(); $ingredientRecetteManager = new IngredientRecetteManager(); for ($i = 1; $i <= $nb_ingredients; $i++) { $nom_ingredient = $this->input->post('ingredient_' . $i); $id_ingredient = $ingredientManager->get_id($nom_ingredient); if ($id_ingredient == null) { // On ajoute ici le nouvel ingrédient en bdd : $id_ingredient = $ingredientManager->ajouter_ingredient($nom_ingredient); $quantite = $this->input->post('quantite_' . $i); $ingredientRecetteManager->ajouter($id_ingredient, $this->input->post('id_recette'), $quantite); } else { $quantite = $this->input->post('quantite_' . $i); $ingredientRecetteManager->ajouter($id_ingredient, $this->input->post('id_recette'), $quantite); } } redirect('recettes/detail/' . $this->input->post('id_recette')); } } } else { $this->load->model('CategorieManager'); $this->load->model('RecetteManager'); $this->load->model('IngredientManager'); // On récupère la recette correspondante $recetteManager = new RecetteManager(); $recette = $recetteManager->get_recette_object($id); if ($recette == null) { $recette = $recetteManager->get_recette_object($this->input->post('id_recette')); } // On récupère les catégories $categorieManager = new CategorieManager(); $categories = $categorieManager->get_categories(); $sous_categories = null; // On récupère les sous-catégories : if ($recette) { $sous_categories = $categorieManager->get_sous_categories($recette->id_categorie); } // On récupère les ingrédients de la recette $ingredients = null; if ($recette) { $ingredients = $recetteManager->get_ingredients($recette->id_recette); } $data = array(); $data['recette'] = $recette; $data['categories'] = $categories; $data['sous_categories'] = $sous_categories; $data['ingredients'] = $ingredients; $data['active'] = "ajouter_recette"; $data['menu_categories'] = $this->menu_categories; $this->layout->view('formulaire_modification_recette', $data); } } }