. */ namespace FireflyIII\Console\Commands\Correction; use FireflyIII\Models\TransactionGroup; use FireflyIII\Models\TransactionJournal; use Illuminate\Console\Command; /** * Class FixLongDescriptions */ class FixLongDescriptions extends Command { private const MAX_LENGTH = 1000; /** * The console command description. * * @var string */ protected $description = 'Fixes long descriptions in journals and groups.'; /** * The name and signature of the console command. * * @var string */ protected $signature = 'firefly-iii:fix-long-descriptions'; /** * Execute the console command. * * @return int */ public function handle(): int { $journals = TransactionJournal::get(['id', 'description']); /** @var TransactionJournal $journal */ foreach ($journals as $journal) { if (strlen($journal->description) > self::MAX_LENGTH) { $journal->description = substr($journal->description, 0, self::MAX_LENGTH); $journal->save(); $this->line(sprintf('Truncated description of transaction journal #%d', $journal->id)); } } $groups = TransactionGroup::get(['id', 'title']); /** @var TransactionGroup $group */ foreach ($groups as $group) { if (strlen($group->title) > self::MAX_LENGTH) { $group->title = substr($group->title, 0, self::MAX_LENGTH); $group->save(); $this->line(sprintf('Truncated description of transaction group #%d', $group->id)); } } return 0; } }