/** * Execute the console command. * * @return mixed */ public function fire() { $this->info('Starting import from MCF Modlist...'); $this->info(''); $versions = MinecraftVersion::all(); foreach ($versions as $version) { $this->info('Starting import of ' . $version->name . ' mods...'); $mods = $this->getModJson($version->name); foreach ($mods as $mod) { $this->info('Processing ' . $mod->name); $database_mod = ImportMCFModlist::where('name', '=', $mod->name)->first(); if (!$database_mod) { $database_mod = new ImportMCFModlist(); } $database_mod->name = $mod->name; $database_mod->description = $mod->desc; $database_mod->raw_authors = serialize($mod->author); if (isset($mod->source)) { $database_mod->source = $mod->source; } $database_mod->url = $mod->link; $database_mod->raw_type = serialize($mod->type); $database_mod->raw_dependencies = serialize($mod->dependencies); $database_mod->raw_minecraft_versions = serialize($mod->versions); $database_mod->save(); } } }
public function postStartImport() { if (!$this->checkRoute()) { return Redirect::route('index'); } $mod_info_array = []; $input = Input::only('import_nem', 'import_mcf', 'url', 'json'); if ($input['import_nem']) { $import_type = 'nem'; $nem_mod = ImportNEM::find($input['import_nem']); $mod_info = true; } elseif ($input['import_mcf']) { $import_type = 'mcf'; $mcf_mod = ImportMCFModlist::find($input['import_mcf']); $mod_info = true; } elseif (Input::hasFile('import_file')) { $import_type = 'mcmodinfo'; $import_file = Input::file('import_file'); $mod_info = $this->processUpload($import_file); if (!$mod_info) { return Redirect::action('ImportController@getStartImport')->withErrors(['message' => 'Unable to process uploaded file.'])->withInput(); } } else { $import_type = 'mcmodinfo'; if ($input['url']) { $import = new Import(); $mod_info = $import->downloadModInfo($input['url']); if (!$mod_info) { return Redirect::action('ImportController@getStartImport')->withErrors(['message' => 'Cannot parse URL contents.'])->withInput(); } } elseif ($input['json']) { $mod_info = json_decode($input['json']); if (!$mod_info) { return Redirect::action('ImportController@getStartImport')->withErrors(['message' => 'Cannot parse JSON.'])->withInput(); } } } if ($import_type == 'mcmodinfo') { $mod_info_array['name'] = $mod_info[0]->name; $mod_info_array['description'] = isset($mod_info[0]->description) ? $mod_info[0]->description : ''; $mod_info_array['minecraft_version'] = isset($mod_info[0]->mcversion) ? serialize([$mod_info[0]->mcversion]) : serialize(['']); $mod_info_array['url'] = isset($mod_info[0]->url) ? $mod_info[0]->url : ''; if (isset($mod_info[0]->authorList)) { $mod_info_array['authors'] = serialize($mod_info[0]->authorList); } if (isset($mod_info[0]->authors)) { $mod_info_array['authors'] = serialize($mod_info[0]->authors); } } elseif ($import_type == 'nem') { $mod_info_array['description'] = ''; //NEM doesn't include any spaces in the name. So we are going to check MFC to see if they list it with a space. $name_with_spaces = preg_replace('/(?<!\\ )[A-Z0-9]/', ' $0', $nem_mod->name); $mcf_result = ImportMCFModlist::where('name', ltrim($name_with_spaces))->first(); if (isset($mcf_result->name)) { $mod_info_array['name'] = $mcf_result->name; $mod_info_array['description'] = $mcf_result->description; } else { $mod_info_array['name'] = $nem_mod->name; $mcf_result = ImportMCFModlist::where('name', $nem_mod->name)->first(); if (isset($mcf_result->description)) { $mod_info_array['description'] = $mcf_result->description; } } $mod_info_array['minecraft_version'] = $nem_mod->raw_minecraft_versions; $mod_info_array['authors'] = $nem_mod->raw_authors; $mod_info_array['url'] = $nem_mod->url; } elseif ($import_type == 'mcf') { $mod_info_array['name'] = $mcf_mod->name; $mod_info_array['description'] = $mcf_mod->description; $mod_info_array['minecraft_version'] = $mcf_mod->raw_minecraft_versions; $mod_info_array['authors'] = $mcf_mod->raw_authors; if (preg_match('/j\\.mp/', $mcf_mod->url)) { $mod_info_array['url'] = $this->getBitlyFullURL($mcf_mod->url); } else { $mod_info_array['url'] = $mcf_mod->url; } } if ($mod_info) { $import_index = new Import(); $import_index->name = $mod_info_array['name']; $import_index->description = $mod_info_array['description']; $import_index->minecraft_version = $mod_info_array['minecraft_version']; $import_index->url = $mod_info_array['url']; $import_index->raw_authors = $mod_info_array['authors']; $import_index->type = 1; $success = $import_index->save(); if (!$success) { return Redirect::action('ImportController@getStartImport')->withErrors(['message' => 'Unable to save to database.'])->withInput(); } $import_id = $import_index->id; $authors_to_process = $this->processAuthors($import_id, unserialize($mod_info_array['authors'])); if ($authors_to_process > 0) { return Redirect::action('ImportController@getImportAuthor', [$import_id]); } return Redirect::action('ImportController@getImportMod', [$import_id]); } return Redirect::action('ImportController@getStartImport')->withErrors(['message' => 'Something went wrong.'])->withInput(); }