public function getMods($version = 'all') { $mods = []; $limit = 100; $offset = 0; $input = Input::only('limit', 'offset'); if ($input['limit']) { $limit = $input['limit']; } if ($input['offset']) { $offset = $input['offset']; } if ($version == 'all') { $raw_mods = Mod::select('id', 'name', 'deck', 'website', 'download_link', 'wiki_link', 'description', 'slug', 'created_at', 'updated_at')->skip($offset)->take($limit)->get(); $mod_count = Mod::select('id')->count(); } else { $version = $this->getVersion($version); $raw_version = MinecraftVersion::where('name', '=', $version)->first(); $version_id = $raw_version->id; if (!$raw_version) { return Response::json(['error' => 'Not a valid version.']); } $query = Mod::whereHas('versions', function ($q) use($version_id) { $q->where('minecraft_versions.id', '=', $version_id); }); $mod_count = $query->count(); $query->skip($offset)->take($limit); $raw_mods = $query->get(); } if (!$raw_mods) { return Response::json(['error' => 'No results.']); } foreach ($raw_mods as $mod) { $mods['results'][] = ['id' => $mod->id, 'name' => $mod->name, 'short_description' => $mod->deck, 'website' => $mod->website, 'download_link' => $mod->download_link, 'donate_link' => $mod->website, 'wiki_link' => $mod->wiki_link, 'description' => $mod->description, 'slug' => $mod->slug, 'created_at' => $mod->created_at, 'updated_at' => $mod->updated_at]; } $mods['meta'] = ['total_results' => $mod_count, 'limit' => $limit, 'offset' => $offset]; return Response::json($mods); }