예제 #1
0
 public function upload()
 {
     $newupload = new Recipes($_POST);
     // $this->getUploadFormData();
     $newupload->insert();
     // $errors
     $view = new AccountEditView(compact('newupload'));
     $view->render();
 }
 /**
  * Shows the welcome view with a list with all plants in system
  * and a list with all recipes in system
  */
 public function showWelcome()
 {
     $plants = Plants::all();
     $recipes = Recipes::all();
     $data = array('plants' => $plants, 'recipes' => $recipes);
     return View::make('welcomeView')->with('data', $data);
 }
 public function showRecipeDetail($recipeId)
 {
     $theRecipe = Recipes::find($recipeId);
     $plantRecipe = new PlantRecipe();
     $plantsForRecipe = $plantRecipe->findPlantsForRecipe($recipeId);
     $data = array('recipe' => $theRecipe, 'plants' => $plantsForRecipe);
     return View::make('recipeDetailView')->with('data', $data);
 }
 public function postSearch()
 {
     $name = Input::get('name');
     $min = Input::get('min') ?: 1;
     $max = Input::get('max') ?: 50;
     $class = Input::get('class') ?: 'all';
     $per_page = Input::get('per_page') ?: 10;
     $sorting = Input::get('sorting') ?: 'name_asc';
     if (!in_array($per_page, array(10, 25, 50))) {
         $per_page = 10;
     }
     if (!is_numeric($min)) {
         $min = 1;
     }
     if (!is_numeric($max)) {
         $max = 50;
     }
     if ($min > $max) {
         list($max, $min) = array($min, $max);
     }
     $job_list = ClassJob::get_name_abbr_list();
     if ($class && $class != 'all') {
         $classjob = ClassJob::get_by_abbr($class);
     }
     $sorting = explode('_', $sorting);
     $order_by = 'name';
     $sort = 'asc';
     if (count($sorting) == 2) {
         // Only overwrite if need-be (i.e. don't test for "name" or "asc")
         if ($sorting[0] == 'level') {
             $order_by = $sorting[0];
         }
         if ($sorting[1] == 'desc') {
             $sort = $sorting[1];
         }
     }
     $query = Recipes::with('item', 'item.name')->select('*', 'recipes.id AS recipe_id', 'recipes.level AS level')->join('items AS i', 'i.id', '=', 'recipes.item_id')->join('translations AS t', 't.id', '=', 'i.name_' . Config::get('language'));
     $query->orderBy($order_by == 'name' ? 't.term' : 'recipes.' . $order_by, $sort);
     if ($name) {
         $query->whereHas('item', function ($query) use($name) {
             $query->whereHas('name', function ($query) use($name) {
                 $query->where('term', 'like', '%' . $name . '%');
             });
         });
     }
     if ($min && $max) {
         $query->whereBetween('recipes.level_view', array($min, $max));
     }
     if (isset($classjob)) {
         $query->where('recipes.classjob_id', $classjob->id);
     }
     $recipes = $query->paginate($per_page);
     View::share('list', $recipes);
     View::share('per_page', $per_page);
     $output = array('tbody' => View::make('recipes.results')->render(), 'tfoot' => View::make('recipes.results_footer')->render());
     return $output;
 }
예제 #5
0
 public function postRead()
 {
     $recipe = new Recipes();
     $data = $recipe->getRecipes();
     return Response::json($data);
 }
예제 #6
0
        $upload = new Upload();
        //коммент
        call_user_func(array($upload, 'out'));
        break;
    case 'auth':
        header('Content-Type: application/json');
        $ident = new auth();
        if (isset($_GET['auth'])) {
            $auth = $_GET['auth'];
            switch ($auth) {
                case 'user':
                    $ident->get_user();
                    break;
                case 'logout':
                    $ident->logount();
                    break;
                default:
                    $ident->login();
                    break;
            }
        } else {
            $ident->login();
        }
        break;
    default:
        // header('Content-Type: application/json');
        $recipes = new Recipes();
        $shag = $_GET['shag'];
        echo $recipes->getRecipes($shag);
        break;
}
예제 #7
0
<?php

header('Content-Type: text/html; charset=utf-8');
error_reporting(E_ALL);
ini_set('display_errors', 1);
// include the items class
include_once 'classes/RecipesClass.php';
// response
$response = array();
$encoded;
$recipes = new Recipes();
$allRecipes = $recipes->all();
if (isset($allRecipes)) {
    $response['data'] = $allRecipes;
}
// response
echo json_encode($response, JSON_PRETTY_PRINT);
예제 #8
0
$app->put('/recipes/:id', function ($id) use($app) {
    $request = (array) json_decode($app->request()->getBody());
    $name = $request['name'];
    $db = new Recipes();
    $items = $db->update_recipe($id, $name);
    if ($items) {
        // if successful, return the new object with the values
        $results = array('id' => $id, 'name' => $name);
        $app->response()->header('Content-Type', 'application/json');
        echo json_encode($results);
    } else {
        $app->response()->status(500);
    }
});
// DELETE route
$app->delete('/recipes/:id', function ($id) use($app) {
    $request = (array) json_decode($app->request()->getBody());
    $db = new Recipes();
    $items = $db->delete_recipe($id);
    if ($items) {
        $db = new Ingredients();
        $items = $db->delete_ingredient_by_value($id);
        $db = new Directions();
        $items = $db->delete_direction_by_value($id);
        // if successful, just return the deleted item if it's needed on the client side
        $app->response()->header('Content-Type', 'application/json');
        echo json_encode($request);
    } else {
        $app->response()->status(500);
    }
});
 public function getList()
 {
     // All Jobs
     $job_list = ClassJob::get_name_abbr_list();
     View::share('job_list', $job_list);
     $include_quests = TRUE;
     if (!Input::all()) {
         return Redirect::back();
     }
     // Get Options
     $options = explode(':', array_keys(Input::all())[0]);
     // Parse Options              						// Defaults
     $desired_job = isset($options[0]) ? $options[0] : 'CRP';
     $start = isset($options[1]) ? $options[1] : 1;
     $end = isset($options[2]) ? $options[2] : 5;
     $self_sufficient = isset($options[3]) ? $options[3] : 1;
     $misc_items = isset($options[4]) ? $options[4] : 0;
     $special = isset($options[5]) ? $options[5] : 0;
     $item_ids = $item_amounts = array();
     $top_level = TRUE;
     if ($desired_job == 'List') {
         $start = $end = null;
         $include_quests = FALSE;
         // Get the list
         $item_amounts = Session::get('list', array());
         $item_ids = array_keys($item_amounts);
         if (empty($item_ids)) {
             return Redirect::to('/list');
         }
         View::share('item_ids', $item_ids);
         View::share('item_amounts', $item_amounts);
         $top_level = $item_amounts;
     }
     if ($desired_job == 'Item') {
         $item_id = $special;
         $start = $end = null;
         $include_quests = FALSE;
         // Get the list
         $item_amounts = array($item_id => 1);
         $item_ids = array_keys($item_amounts);
         if (empty($item_ids)) {
             return Redirect::to('/list');
         }
         View::share('item_ids', $item_ids);
         View::share('item_amounts', $item_amounts);
         View::share('item_special', true);
         $top_level = $item_amounts;
     }
     if (!$item_ids) {
         // Jobs are capital
         $desired_job = strtoupper($desired_job);
         // Make sure it's a real job, jobs might be multiple
         $job = array();
         foreach (explode(',', $desired_job) as $ds) {
             $job[] = ClassJob::get_by_abbr($ds);
         }
         // If the job isn't real, error out
         if (!isset($job[0])) {
             // Check for DOL quests
             $quests = array();
             foreach (array('MIN', 'BTN', 'FSH') as $job) {
                 $job = ClassJob::get_by_abbr($job);
                 $quests[$job] = QuestItem::where('classjob_id', $job->id)->orderBy('level')->with('item')->get();
             }
             return View::make('crafting')->with('error', TRUE)->with('quests', $quests);
         }
         $job_ids = array();
         foreach ($job as $j) {
             $job_ids[] = $j->id;
         }
         $full_name_desired_job = false;
         if (count($job) == 1) {
             $job = $job[0];
             $full_name_desired_job = $job->name->term;
         }
         // Starting maximum of 1
         if ($start < 0) {
             $start = 1;
         }
         if ($start > $end) {
             $end = $start;
         }
         if ($end - $start > 9) {
             $end = $start + 9;
         }
         // Check for quests
         $quest_items = QuestItem::with('classjob', 'classjob.abbr')->whereBetween('level', array($start, $end))->whereIn('classjob_id', $job_ids)->orderBy('level')->with('item')->get();
         View::share(array('job' => $job, 'start' => $start, 'end' => $end, 'quest_items' => $quest_items, 'desired_job' => $desired_job, 'full_name_desired_job' => $full_name_desired_job));
     }
     // Gather Recipes and Reagents
     $query = Recipes::with('name', 'classjob', 'classjob.name', 'classjob.abbr', 'item', 'item.name', 'item.quest', 'item.leve', 'item.vendors', 'item.beasts', 'item.clusters', 'item.clusters.classjob', 'item.clusters.classjob.abbr', 'reagents', 'reagents.vendors', 'reagents.beasts', 'reagents.clusters', 'reagents.clusters.classjob', 'reagents.clusters.classjob.abbr', 'reagents.recipe', 'reagents.recipe.name', 'reagents.recipe.item', 'reagents.recipe.item.name', 'reagents.recipe.item.vendors', 'reagents.recipe.item.beasts', 'reagents.recipe.item.clusters', 'reagents.recipe.item.clusters.classjob', 'reagents.recipe.item.clusters.classjob.abbr', 'reagents.recipe.classjob', 'reagents.recipe.classjob.abbr')->groupBy('recipes.item_id')->orderBy('rank');
     if ($misc_items == 0 && $desired_job != 'List') {
         $query->whereHas('item', function ($query) {
             $query->whereNotIn('itemcategory_id', array(14, 15))->where(function ($query) {
                 $query->where('itemcategory_id', '!=', 16)->where('itemuicategory_id', '!=', 63);
                 // Other
             });
         });
     }
     if ($item_ids) {
         $query->whereIn('recipes.item_id', $item_ids);
     } else {
         $query->whereHas('classjob', function ($query) use($job_ids) {
             $query->whereIn('classjob.id', $job_ids);
         })->whereBetween('level', array($start, $end));
     }
     $recipes = $query->remember(Config::get('site.cache_length'))->get();
     // Fix the amount of the top level to be evenly divisible by the amount the recipe yields
     if (is_array($top_level)) {
         foreach ($recipes as $recipe) {
             $tl_item =& $top_level[$recipe->item_id];
             // If they're not evently divisible
             if ($tl_item % $recipe->yields != 0) {
                 // Make it so
                 $tl_item = ceil($tl_item / $recipe->yields) * $recipe->yields;
             }
         }
         unset($tl_item);
         View::share('item_amounts', $top_level);
     }
     $reagent_list = $this->_reagents($recipes, $self_sufficient, 1, $include_quests, $top_level);
     // Look through the list.  Is there something we're already crafting?
     // Subtract what's being made from needed reagents.
     //  Example, culinary 11 to 15, you need olive oil for Parsnip Salad (lvl 13)
     //   But you make 3 olive oil at level 11.  We don't want them crafting another olive oil.
     foreach ($recipes as $recipe) {
         if (!isset($reagent_list[$recipe->item_id])) {
             continue;
         }
         $reagent_list[$recipe->item_id]['both_list_warning'] = TRUE;
         $reagent_list[$recipe->item_id]['make_this_many'] += 1;
     }
     // Look through the reagent list, make sure the reagents are evently divisible by what they yield
     foreach ($reagent_list as &$reagent) {
         // If they're not evently divisible
         if ($reagent['make_this_many'] % $reagent['yields'] != 0) {
             // Make it so
             $reagent['make_this_many'] = ceil($reagent['make_this_many'] / $reagent['yields']) * $reagent['yields'];
         }
     }
     unset($reagent);
     // Let's sort them further, group them by..
     // Gathered, Then by Level
     // Other (likely mob drops)
     // Crafted, Then by level
     // Bought, by price
     $sorted_reagent_list = array('Gathered' => array(), 'Bought' => array(), 'Other' => array(), 'Pre-Requisite Crafting' => array(), 'Crafting List' => array());
     $gathering_class_abbreviations = ClassJob::get_abbr_list(Config::get('site.job_ids.gathering'));
     foreach ($reagent_list as $reagent) {
         $section = 'Other';
         $level = 0;
         // Section
         if (in_array($reagent['self_sufficient'], $gathering_class_abbreviations)) {
             $section = 'Gathered';
             $level = $reagent['item']->level;
         } elseif ($reagent['self_sufficient']) {
             $section = 'Pre-Requisite Crafting';
             if (!isset($reagent['item']->recipe[0])) {
                 dd($reagent['item']);
             }
             $level = $reagent['item']->recipe[0]->level;
         } elseif (count($reagent['item']->vendors)) {
             $section = 'Bought';
             $level = $reagent['item']->min_price;
         }
         if (!isset($sorted_reagent_list[$section][$level])) {
             $sorted_reagent_list[$section][$level] = array();
         }
         $sorted_reagent_list[$section][$level][$reagent['item']->id] = $reagent;
         ksort($sorted_reagent_list[$section][$level]);
     }
     foreach ($sorted_reagent_list as $section => $list) {
         ksort($sorted_reagent_list[$section]);
     }
     // Sort the pre-requisite crafting by rank
     // We don't need to sort them by level, just make sure it's in the proper structure
     // The keys don't matter either
     $prc =& $sorted_reagent_list['Pre-Requisite Crafting'];
     $new_prc = array('1' => array());
     foreach ($prc as $vals) {
         foreach ($vals as $v) {
             $new_prc['1'][] = $v;
         }
     }
     // Sort them by rank first
     usort($new_prc['1'], function ($a, $b) {
         return $a['item']->rank - $b['item']->rank;
     });
     // Then by classjob
     usort($new_prc['1'], function ($a, $b) {
         return $a['item']->recipe[0]->classjob_id - $b['item']->recipe[0]->classjob_id;
     });
     $prc = $new_prc;
     return View::make('crafting.list')->with(array('recipes' => $recipes, 'reagent_list' => $sorted_reagent_list, 'self_sufficient' => $self_sufficient, 'misc_items' => $misc_items, 'include_quests' => $include_quests));
 }