. */ declare(strict_types=1); namespace FireflyIII\TransactionRules\Actions; use FireflyIII\Events\TriggeredAuditLog; use FireflyIII\Models\RuleAction; use FireflyIII\Models\TransactionJournal; use FireflyIII\TransactionRules\Traits\RefreshNotesTrait; /** * Class SetDescription. */ class SetDescription implements ActionInterface { use RefreshNotesTrait; private RuleAction $action; /** * TriggerInterface constructor. */ public function __construct(RuleAction $action) { $this->action = $action; } public function actOnArray(array $journal): bool { $this->refreshNotes($journal); /** @var TransactionJournal $object */ $object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']); $before = $object->description; $after = $this->action->getValue($journal); // replace newlines. $after = str_replace(["\r", "\n", "\t", "\036", "\025"], '', $after); \DB::table('transaction_journals') ->where('id', '=', $journal['transaction_journal_id']) ->update(['description' => $after]) ; app('log')->debug( sprintf( 'RuleAction SetDescription changed the description of journal #%d from "%s" to "%s".', $journal['transaction_journal_id'], $journal['description'], $after ) ); $object->refresh(); event(new TriggeredAuditLog($this->action->rule, $object, 'update_description', $before, $after)); return true; } }