Skip to content
Snippets Groups Projects
Functions.php 3.92 KiB
<?php

function recipeContains($recipe, $ingredient)
{
    foreach($recipe['index'] as $ing) if($ing === $ingredient) return true;
    return false;
}

function getRecipesForJS($wanted_ingredients, $unwanted_ingredients, $max_unsatisfied, $allow_missing, $allow_unwanted)
{
    $res = "";
    $validRecipes = getRecipes($wanted_ingredients, $unwanted_ingredients, $max_unsatisfied, $allow_missing, $allow_unwanted);
    foreach($validRecipes as $recipe) 
    {
        $res .= $recipe['id'] . ':' . $recipe['score'] . '|';
    }
    return $res;
}

function getRecipes($wanted_ingredients, $unwanted_ingredients, $max_unsatisfied, $allow_missing, $allow_unwanted)
{
    include "Donnees.inc.php";

    $Recipes = array();
    for($i = 0; $i < count($Recettes); $i++)
    {
        $recipe = $Recettes[$i];

        $score = 0;
        $valid = true;

        foreach($wanted_ingredients as $w_ing)
        {
            if(!recipeContains($recipe, $w_ing)) 
            {
                if(!$allow_missing) 
                {
                    $valid = false;
                    break;
                }
                $score++;
            }
        }
        if($valid) 
        {
            foreach($unwanted_ingredients as $uw_ing)
            {
                if(recipeContains($recipe, $uw_ing)) 
                {
                    if(!$allow_unwanted) 
                    {
                        $valid = false;
                        break;
                    }
                    $score++;
                }
            }
            if($valid) 
            {
                if($score <= $max_unsatisfied)
                {
                    //$Recipes .= $i . ':' . $score . '|';
                    $Recipes[] = array(
                        'id'=> $i,
                        'score'=> $score
                    );
                }
            }   
        }
    }
    return $Recipes;
}

function getIngredients($parent_category)
{
    include "Donnees.inc.php";
    $res = 'f';

    if(isset($Hierarchie[$parent_category]))
    {
        $ingredients = $Hierarchie[$parent_category]['sous-categorie'];
    
        foreach($ingredients as $i)
        {
            $res .= $i . '|';
        }
    }

    return $res;
}

function getRecipeImage($name)
{
    $formatted_name = explode(' ', $name);
    $formatted_name = implode('_', $formatted_name) . '.jpg';
    return $formatted_name;
}

function getSubIngredients($cat)
{
    include "Donnees.inc.php";

    $sub_list = array();

    if(!isset($Hierarchie[$cat]['sous-categorie'])) $sub_list[] = $cat;
 
    else foreach($Hierarchie[$cat]['sous-categorie'] as $ing)
    {
        foreach(getSubIngredients($ing) as $sub)
        {
            if(!in_array($sub, $sub_list)) $sub_list[] = $sub;
        }
    }

    return $sub_list;
}

function getAllIngredients()
{
    return getSubIngredients('Aliment');
}

// Renvoie un tableau de sous-categories de l'aliment en cours, null si l'aliment n'en a pas
function get_sous_categories($aliment) {
    include "Donnees.inc.php";
    $res = null;
    if(isset($Hierarchie[$aliment]['sous-categorie'])) {
         $res = $Hierarchie[$aliment]['sous-categorie'];
    }
    return $res;
}

// Renvoie un tableau de super-categories de l'aliment en cours, null si l'aliment n'en a pas
function get_super_categories($aliment) {
    include "Donnees.inc.php";
    $res = null;
    if(isset($Hierarchie[$aliment]['super-categorie'])) {
        $res = $Hierarchie[$aliment]['super-categorie'];
    }
    return $res;
}

// Renvoie un tableau de tous les aliments feuille de la catégorie en paramètre 
function get_all_aliments($categorie) {
    include "Donnees.inc.php";
    $res = [];
    if(isset($Hierarchie[$categorie]['sous-categorie'])) {
        $sous_cat = $Hierarchie[$categorie]['sous-categorie'];
        foreach($sous_cat as $sc) {
            $res = array_merge($res, get_all_aliments($sc));
        }
    } else {
        $res[] = $categorie;
    }
    return $res;
}

?>