diff --git a/app/Application.php b/app/Application.php index 4fc0fba1..092b5f9f 100644 --- a/app/Application.php +++ b/app/Application.php @@ -6,6 +6,10 @@ use Illuminate\Database\Eloquent\Model; class Application extends Model { + public $incrementing = false; + + protected $primaryKey = 'appid'; + // public function icon() { diff --git a/app/Console/Commands/RegisterApp.php b/app/Console/Commands/RegisterApp.php new file mode 100644 index 00000000..108ce13a --- /dev/null +++ b/app/Console/Commands/RegisterApp.php @@ -0,0 +1,61 @@ +argument('folder'); + $json = app_path('SupportedApps/'.$folder.'/app.json'); + if(file_exists($json)) { + $app = json_decode(file_get_contents($json)); + $exists = Application::find($app->appid); + if($exists) { + $this->error('This app is already registered'); + exit; + } + // Doesn't exist so add it + SupportedApps::saveApp($app, new Application); + $this->info("Application Added - ".$app->name." - ".$app->appid); + + } else { + $this->error('Could not find '.$json); + } + + + } +} diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index f1cb2fd7..82b29d9c 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -348,7 +348,9 @@ class ItemController extends Controller { $localapps = Application::all(); $list = json_decode(SupportedApps::getList()->getBody()); + $validapps = []; foreach($list->apps as $app) { + $validapps[] = $app->appid; if(!file_exists(app_path('SupportedApps/'.$app->name))) { SupportedApps::getFiles($app); $application = new Application; @@ -361,12 +363,11 @@ class ItemController extends Controller SupportedApps::getFiles($app); SupportedApps::saveApp($app, $localapp); } - } else { // local folder, add to database - $application = new Application; - SupportedApps::saveApp($app, $application); - } + } } } + //$delete = Application::whereNotIn('appid', $validapps)->delete(); // delete any apps not in list + // removed the delete so local apps can be added } diff --git a/app/SupportedApps.php b/app/SupportedApps.php index ae8cd7cc..8cdc0b0c 100644 --- a/app/SupportedApps.php +++ b/app/SupportedApps.php @@ -93,8 +93,9 @@ abstract class SupportedApps //die("i: ".$img_src); copy($img_src, $img_dest); + $app->appid = $details->appid; $app->name = $details->name; - $app->sha = $details->sha; + $app->sha = $details->sha ?? null; $app->icon = 'supportedapps/'.$details->icon; $app->website = $details->website; $app->license = $details->license; diff --git a/database/migrations/2018_10_18_110905_create_applications_table.php b/database/migrations/2018_10_18_110905_create_applications_table.php index 44f76f6f..ba59dc2e 100644 --- a/database/migrations/2018_10_18_110905_create_applications_table.php +++ b/database/migrations/2018_10_18_110905_create_applications_table.php @@ -15,7 +15,7 @@ class CreateApplicationsTable extends Migration { Schema::create('applications', function (Blueprint $table) { - $table->increments('id'); + $table->string('appid')->unique(); $table->string('name')->unique(); $table->string('sha')->unique()->nullable(); $table->string('icon')->nullable();