private function fetchModversion($mod, $version)
 {
     $response = array();
     $version = Modversion::where("mod_id", "=", $mod->id)->where("version", "=", $version)->first();
     if (empty($version)) {
         return array("error" => "Mod version does not exist");
     }
     $response['md5'] = $version->md5;
     $response['url'] = Config::get('solder.mirror_url') . 'mods/' . $version->mod->name . '/' . $version->mod->name . '-' . $version->version . '.zip';
     return $response;
 }
 /**
  * AJAX Methods for Modpack Manager
  **/
 public function anyModify($action = null)
 {
     if (!Request::ajax()) {
         return Response::view('errors.missing', array(), 404);
     }
     if (empty($action)) {
         return Response::view('errors.500', array(), 500);
     }
     switch ($action) {
         case "version":
             $version_id = Input::get('version');
             $modversion_id = Input::get('modversion_id');
             $affected = DB::table('build_modversion')->where('build_id', '=', Input::get('build_id'))->where('modversion_id', '=', $modversion_id)->update(array('modversion_id' => $version_id));
             if ($affected == 0) {
                 if ($modversion_id != $version_id) {
                     $status = 'failed';
                 } else {
                     $status = 'aborted';
                 }
             } else {
                 $status = 'success';
             }
             return Response::json(array('status' => $status, 'reason' => 'Rows Affected: ' . $affected));
             break;
         case "delete":
             $affected = DB::table('build_modversion')->where('build_id', '=', Input::get('build_id'))->where('modversion_id', '=', Input::get('modversion_id'))->delete();
             $status = 'success';
             if ($affected == 0) {
                 $status = 'failed';
             }
             return Response::json(array('status' => $status, 'reason' => 'Rows Affected: ' . $affected));
             break;
         case "add":
             $build = Build::find(Input::get('build'));
             $mod = Mod::where('name', '=', Input::get('mod-name'))->first();
             $ver = Modversion::where('mod_id', '=', $mod->id)->where('version', '=', Input::get('mod-version'))->first();
             $affected = DB::table('build_modversion')->where('build_id', '=', $build->id)->where('modversion_id', '=', $ver->id)->get();
             $duplicate = !empty($affected);
             if ($duplicate) {
                 return Response::json(array('status' => 'failed', 'reason' => 'Duplicate Modversion found'));
             } else {
                 $build->modversions()->attach($ver->id);
                 return Response::json(array('status' => 'success', 'pretty_name' => $mod->pretty_name, 'version' => $ver->version));
             }
             break;
         case "recommended":
             $modpack = Modpack::find(Input::get('modpack'));
             $new_version = Input::get('recommended');
             $modpack->recommended = $new_version;
             $modpack->save();
             Cache::forget('modpack.' . $modpack->slug);
             return Response::json(array("success" => "Updated " . $modpack->name . "'s recommended  build to " . $new_version, "version" => $new_version));
             break;
         case "latest":
             $modpack = Modpack::find(Input::get('modpack'));
             $new_version = Input::get('latest');
             $modpack->latest = $new_version;
             $modpack->save();
             Cache::forget('modpack.' . $modpack->slug);
             return Response::json(array("success" => "Updated " . $modpack->name . "'s latest  build to " . $new_version, "version" => $new_version));
             break;
         case "published":
             $build = Build::find(Input::get('build'));
             $published = Input::get('published');
             $build->is_published = $published ? true : false;
             $build->save();
             return Response::json(array("success" => "Updated build " . $build->version . "'s published status."));
         case "private":
             $build = Build::find(Input::get('build'));
             $private = Input::get('private');
             $build->private = $private ? true : false;
             $build->save();
             return Response::json(array("success" => "Updated build " . $build->version . "'s private status."));
     }
 }