/**
 	Returns an array with all the current ingredients in it for this recipe
 	@param $servings the number of servings to scale the ingredients to
 	@param $optional if true then the optional ingredients are returned as well
 */
 function getIngredients($servings = NULL, $optional = FALSE)
 {
     global $DB_LINK, $db_table_ingredientmaps;
     $ingredients = array();
     $scaling = null;
     // compute the scaling
     if ($this->serving_size != 0 && $this->serving_size != "") {
         $scaling = $servings / $this->serving_size;
     }
     if ($scaling == NULL || $servings == 0) {
         $scaling = 1;
     }
     $sql = "SELECT * FROM {$db_table_ingredientmaps} WHERE map_recipe=" . $DB_LINK->addq($this->id, get_magic_quotes_gpc());
     $rc = $DB_LINK->Execute($sql);
     while (!$rc->EOF) {
         // Only add the ingredient if we are suppose to
         if ($optional && $rc->fields['map_optional'] == $DB_LINK->true || $rc->fields['map_optional'] != $DB_LINK->true) {
             $ingObj = new Ingredient();
             $ingObj->setIngredientMap($rc->fields['map_ingredient'], $rc->fields['map_recipe'], $rc->fields['map_qualifier'], $rc->fields['map_quantity'], $rc->fields['map_unit'], $rc->fields['map_order']);
             $ingObj->loadIngredient();
             $ingObj->convertToBaseUnits($scaling);
             $ingredients = ShoppingList::combineIngredients($ingredients, $ingObj);
         }
         $rc->MoveNext();
     }
     return $ingredients;
 }