<?php namespace App\Console\Commands; use Illuminate\Console\Command; class FixDoubleEscape extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'snipeit:unescape'; /** * The console command description. * * @var string */ protected $description = 'This should be run to fix some double-escaping issues from earlier versions of Snipe-IT.'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { $tables = [ \App\Models\Asset::class => ['name'], \App\Models\License::class => ['name'], \App\Models\Consumable::class => ['name'], \App\Models\Accessory::class => ['name'], \App\Models\Component::class => ['name'], \App\Models\Company::class => ['name'], \App\Models\Manufacturer::class => ['name'], \App\Models\Supplier::class => ['name'], \App\Models\Statuslabel::class => ['name'], \App\Models\Depreciation::class => ['name'], \App\Models\AssetModel::class => ['name'], \App\Models\Group::class => ['name'], \App\Models\Department::class => ['name'], \App\Models\Location::class => ['name'], \App\Models\User::class => ['first_name', 'last_name'], ]; $count = []; foreach ($tables as $classname => $fields) { $count[$classname] = []; $count[$classname]['classname'] = 0; foreach ($fields as $field) { $count[$classname]['classname']++; $count[$classname][$field] = 0; foreach ($classname::where("$field", 'LIKE', '%&%')->get() as $row) { $this->info('Updating '.$field.' for '.$classname); $row->{$field} = html_entity_decode($row->{$field}, ENT_QUOTES); $row->save(); $count[$classname][$field]++; } } } $this->info('Update complete'); } }