Exemple #1
0
 public function detail($slug)
 {
     $this->load->library('Recette');
     $this->load->library('Categorie');
     $this->load->model('CategorieManager');
     $this->load->model('RecetteManager');
     $this->load->model('UtilisateurManager');
     $this->load->model('IngredientManager');
     $recetteManager = new RecetteManager();
     $categorieManager = new CategorieManager();
     $ingredientManager = new IngredientManager();
     $recette = $recetteManager->get_recette_by_slug($slug);
     $data = array();
     $data['recette'] = $recette;
     // On récupère les catégories principales :
     $this->load->model('CategorieManager');
     $categorieManager = new CategorieManager();
     $categories = $categorieManager->get_categories();
     // 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;
     }
     $data['ingredients'] = $ingredients;
     $data['categories'] = $categories;
     $data['menu_categories'] = $this->menu_categories;
     $this->layout->view('detail', $data);
 }
Exemple #2
0
 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);
         }
     }
 }