diff --git a/app/Helpers/Csv/Specifix/AbnAmroDescription.php b/app/Helpers/Csv/Specifix/AbnAmroDescription.php index ad3175efd1..54d7c80d85 100644 --- a/app/Helpers/Csv/Specifix/AbnAmroDescription.php +++ b/app/Helpers/Csv/Specifix/AbnAmroDescription.php @@ -126,7 +126,7 @@ class AbnAmroDescription extends Specifix implements SpecifixInterface foreach ($matches as $match) { $key = $match[1]; $value = trim($match[2]); - Log::debug("SEPA: $key - $value"); + Log::debug('SEPA: ' . $key . ' - ' . $value); switch (strtoupper($key)) { case 'OMSCHRIJVING': $newDescription = $value; diff --git a/app/Http/Controllers/Auth/AuthController.php b/app/Http/Controllers/Auth/AuthController.php index 7c33242577..974778a9c8 100644 --- a/app/Http/Controllers/Auth/AuthController.php +++ b/app/Http/Controllers/Auth/AuthController.php @@ -155,9 +155,6 @@ class AuthController extends Controller return redirect($this->redirectPath()); } throw new FireflyException('The authenticated user object is invalid.'); - - - return redirect($this->redirectPath()); } /** diff --git a/app/Http/Controllers/RuleController.php b/app/Http/Controllers/RuleController.php index 4a79966139..52cf7fae2e 100644 --- a/app/Http/Controllers/RuleController.php +++ b/app/Http/Controllers/RuleController.php @@ -272,20 +272,8 @@ class RuleController extends Controller */ public function testTriggers(TestRuleFormRequest $request) { - // build trigger array from response TODO move to function: - $triggers = []; - $data = [ - 'rule-triggers' => $request->get('rule-trigger'), - 'rule-trigger-values' => $request->get('rule-trigger-value'), - 'rule-trigger-stop' => $request->get('rule-trigger-stop'), - ]; - foreach ($data['rule-triggers'] as $index => $triggerType) { - $triggers[] = [ - 'type' => $triggerType, - 'value' => $data['rule-trigger-values'][$index], - 'stopProcessing' => intval($data['rule-trigger-stop'][$index]) === 1 ? true : false, - ]; - } + // build trigger array from response + $triggers = $this->getValidTriggerList($request); if (count($triggers) == 0) { @@ -300,20 +288,14 @@ class RuleController extends Controller $matcher->setRange($range); $matcher->setTriggers($triggers); $matchingTransactions = $matcher->findMatchingTransactions(); - // Dispatch the actual work to a matched object - // $matchingTransactions - // = (new TransactionMatcher($triggers)) - // ->setTransactionLimit($range) - // ->findMatchingTransactions($limit); // Warn the user if only a subset of transactions is returned + $warning = ''; if (count($matchingTransactions) == $limit) { $warning = trans('firefly.warning_transaction_subset', ['max_num_transactions' => $limit]); } else { if (count($matchingTransactions) == 0) { $warning = trans('firefly.warning_no_matching_transactions', ['num_transactions' => $range]); - } else { - $warning = ""; } } @@ -378,38 +360,25 @@ class RuleController extends Controller } /** - * Returns a list of triggers as provided in the URL. - * Only returns triggers that will not match any transaction + * @param TestRuleFormRequest $request * * @return array */ - protected function getValidTriggerList() + protected function getValidTriggerList(TestRuleFormRequest $request): array { + $triggers = []; - $order = 1; $data = [ - 'rule-triggers' => Input::get('rule-trigger'), - 'rule-trigger-values' => Input::get('rule-trigger-value'), - 'rule-trigger-stop' => Input::get('rule-trigger-stop'), + 'rule-triggers' => $request->get('rule-trigger'), + 'rule-trigger-values' => $request->get('rule-trigger-value'), + 'rule-trigger-stop' => $request->get('rule-trigger-stop'), ]; - - foreach ($data['rule-triggers'] as $index => $trigger) { - $value = $data['rule-trigger-values'][$index]; - $stopProcessing = isset($data['rule-trigger-stop'][$index]) ? true : false; - - // Create a new trigger object - $ruleTrigger = new RuleTrigger; - $ruleTrigger->order = $order; - $ruleTrigger->active = 1; - $ruleTrigger->stop_processing = $stopProcessing; - $ruleTrigger->trigger_type = $trigger; - $ruleTrigger->trigger_value = $value; - - // Store in list - if (!$ruleTrigger->matchesAnything()) { - $triggers[] = $ruleTrigger; - $order++; - } + foreach ($data['rule-triggers'] as $index => $triggerType) { + $triggers[] = [ + 'type' => $triggerType, + 'value' => $data['rule-trigger-values'][$index], + 'stopProcessing' => intval($data['rule-trigger-stop'][$index]) === 1 ? true : false, + ]; } return $triggers; diff --git a/app/Http/Requests/JournalFormRequest.php b/app/Http/Requests/JournalFormRequest.php index 060a41dbb8..c21d3b2793 100644 --- a/app/Http/Requests/JournalFormRequest.php +++ b/app/Http/Requests/JournalFormRequest.php @@ -89,7 +89,6 @@ class JournalFormRequest extends Request break; default: throw new FireflyException('Cannot handle transaction type of type ' . e($what) . '.'); - break; } return $rules; diff --git a/app/Rules/Processor.php b/app/Rules/Processor.php index b575e59e28..73f9f2c8d5 100644 --- a/app/Rules/Processor.php +++ b/app/Rules/Processor.php @@ -26,7 +26,7 @@ use Log; * * @package FireflyIII\Rules */ -class Processor +final class Processor { /** @var Collection */ private $actions; diff --git a/app/Rules/TransactionMatcher.php b/app/Rules/TransactionMatcher.php index 2298bc4ad3..dbfbabdbcd 100644 --- a/app/Rules/TransactionMatcher.php +++ b/app/Rules/TransactionMatcher.php @@ -10,7 +10,6 @@ declare(strict_types = 1); namespace FireflyIII\Rules; -use FireflyIII\Models\Rule; use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionType; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; @@ -46,15 +45,10 @@ class TransactionMatcher $pagesize = min($this->range / 2, $this->limit * 2); // Variables used within the loop - $numTransactionsProcessed = 0; - $page = 1; - $matchingTransactions = new Collection(); - - // Flags to indicate the end of the loop - $reachedEndOfList = false; - $foundEnoughTransactions = false; - $searchedEnoughTransactions = false; - $processor = Processor::makeFromStringArray($this->triggers); + $processed = 0; + $page = 1; + $result = new Collection(); + $processor = Processor::makeFromStringArray($this->triggers); // Start a loop to fetch batches of transactions. The loop will finish if: // - all transactions have been fetched from the database @@ -73,31 +67,23 @@ class TransactionMatcher ); // merge: - $matchingTransactions = $matchingTransactions->merge($filtered); - -// $matchingTransactions += array_filter( -// $set, function ($transaction) { -// $processor = new Processor(new Rule, $transaction); -// -// return $processor->isTriggeredBy($this->triggers); -// } -// ); + $result = $result->merge($filtered); // Update counters $page++; - $numTransactionsProcessed += count($set); + $processed += count($set); // Check for conditions to finish the loop $reachedEndOfList = (count($set) < $pagesize); - $foundEnoughTransactions = (count($matchingTransactions) >= $this->limit); - $searchedEnoughTransactions = ($numTransactionsProcessed >= $this->range); + $foundEnoughTransactions = (count($result) >= $this->limit); + $searchedEnoughTransactions = ($processed >= $this->range); } while (!$reachedEndOfList && !$foundEnoughTransactions && !$searchedEnoughTransactions); // If the list of matchingTransactions is larger than the maximum number of results // (e.g. if a large percentage of the transactions match), truncate the list - $matchingTransactions = $matchingTransactions->slice(0, $this->limit); + $result = $result->slice(0, $this->limit); - return $matchingTransactions; + return $result; } /** diff --git a/app/Rules/Triggers/AmountExactly.php b/app/Rules/Triggers/AmountExactly.php index 0ce48cc86a..642d17a19a 100644 --- a/app/Rules/Triggers/AmountExactly.php +++ b/app/Rules/Triggers/AmountExactly.php @@ -19,7 +19,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class AmountExactly extends AbstractTrigger implements TriggerInterface +final class AmountExactly extends AbstractTrigger implements TriggerInterface { /** diff --git a/app/Rules/Triggers/AmountLess.php b/app/Rules/Triggers/AmountLess.php index d98fcdf9c3..2ea1a2365c 100644 --- a/app/Rules/Triggers/AmountLess.php +++ b/app/Rules/Triggers/AmountLess.php @@ -19,7 +19,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class AmountLess extends AbstractTrigger implements TriggerInterface +final class AmountLess extends AbstractTrigger implements TriggerInterface { /** diff --git a/app/Rules/Triggers/AmountMore.php b/app/Rules/Triggers/AmountMore.php index 543de53062..5b41b9e7c5 100644 --- a/app/Rules/Triggers/AmountMore.php +++ b/app/Rules/Triggers/AmountMore.php @@ -19,7 +19,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class AmountMore extends AbstractTrigger implements TriggerInterface +final class AmountMore extends AbstractTrigger implements TriggerInterface { /** diff --git a/app/Rules/Triggers/DescriptionContains.php b/app/Rules/Triggers/DescriptionContains.php index 093ed9fd72..497cb14fb4 100644 --- a/app/Rules/Triggers/DescriptionContains.php +++ b/app/Rules/Triggers/DescriptionContains.php @@ -19,7 +19,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class DescriptionContains extends AbstractTrigger implements TriggerInterface +final class DescriptionContains extends AbstractTrigger implements TriggerInterface { /** @@ -41,7 +41,7 @@ class DescriptionContains extends AbstractTrigger implements TriggerInterface public static function willMatchEverything($value = null) { if (!is_null($value)) { - return strval($value) === ""; + return strval($value) === ''; } return true; diff --git a/app/Rules/Triggers/DescriptionEnds.php b/app/Rules/Triggers/DescriptionEnds.php index a9059e43a9..02e64fb170 100644 --- a/app/Rules/Triggers/DescriptionEnds.php +++ b/app/Rules/Triggers/DescriptionEnds.php @@ -18,7 +18,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class DescriptionEnds extends AbstractTrigger implements TriggerInterface +final class DescriptionEnds extends AbstractTrigger implements TriggerInterface { /** @@ -40,7 +40,7 @@ class DescriptionEnds extends AbstractTrigger implements TriggerInterface public static function willMatchEverything($value = null) { if (!is_null($value)) { - return strval($value) === ""; + return strval($value) === ''; } return true; diff --git a/app/Rules/Triggers/DescriptionIs.php b/app/Rules/Triggers/DescriptionIs.php index 764c0c1c58..6e6e160368 100644 --- a/app/Rules/Triggers/DescriptionIs.php +++ b/app/Rules/Triggers/DescriptionIs.php @@ -18,7 +18,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class DescriptionIs extends AbstractTrigger implements TriggerInterface +final class DescriptionIs extends AbstractTrigger implements TriggerInterface { /** diff --git a/app/Rules/Triggers/DescriptionStarts.php b/app/Rules/Triggers/DescriptionStarts.php index 7379fd0e2a..557c799e68 100644 --- a/app/Rules/Triggers/DescriptionStarts.php +++ b/app/Rules/Triggers/DescriptionStarts.php @@ -18,7 +18,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class DescriptionStarts extends AbstractTrigger implements TriggerInterface +final class DescriptionStarts extends AbstractTrigger implements TriggerInterface { /** @@ -40,7 +40,7 @@ class DescriptionStarts extends AbstractTrigger implements TriggerInterface public static function willMatchEverything($value = null) { if (!is_null($value)) { - return strval($value) === ""; + return strval($value) === ''; } return true; diff --git a/app/Rules/Triggers/FromAccountContains.php b/app/Rules/Triggers/FromAccountContains.php index c8ef44a4e5..012ef8d249 100644 --- a/app/Rules/Triggers/FromAccountContains.php +++ b/app/Rules/Triggers/FromAccountContains.php @@ -18,7 +18,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class FromAccountContains extends AbstractTrigger implements TriggerInterface +final class FromAccountContains extends AbstractTrigger implements TriggerInterface { /** @@ -40,7 +40,7 @@ class FromAccountContains extends AbstractTrigger implements TriggerInterface public static function willMatchEverything($value = null) { if (!is_null($value)) { - return strval($value) === ""; + return strval($value) === ''; } return true; diff --git a/app/Rules/Triggers/FromAccountEnds.php b/app/Rules/Triggers/FromAccountEnds.php index 01958bb928..fd3e152321 100644 --- a/app/Rules/Triggers/FromAccountEnds.php +++ b/app/Rules/Triggers/FromAccountEnds.php @@ -18,7 +18,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class FromAccountEnds extends AbstractTrigger implements TriggerInterface +final class FromAccountEnds extends AbstractTrigger implements TriggerInterface { /** @@ -40,7 +40,7 @@ class FromAccountEnds extends AbstractTrigger implements TriggerInterface public static function willMatchEverything($value = null) { if (!is_null($value)) { - return strval($value) === ""; + return strval($value) === ''; } return true; diff --git a/app/Rules/Triggers/FromAccountIs.php b/app/Rules/Triggers/FromAccountIs.php index 1257d62a32..73937fbb53 100644 --- a/app/Rules/Triggers/FromAccountIs.php +++ b/app/Rules/Triggers/FromAccountIs.php @@ -18,7 +18,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class FromAccountIs extends AbstractTrigger implements TriggerInterface +final class FromAccountIs extends AbstractTrigger implements TriggerInterface { /** diff --git a/app/Rules/Triggers/FromAccountStarts.php b/app/Rules/Triggers/FromAccountStarts.php index b2b8439b96..aa24d02973 100644 --- a/app/Rules/Triggers/FromAccountStarts.php +++ b/app/Rules/Triggers/FromAccountStarts.php @@ -18,7 +18,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class FromAccountStarts extends AbstractTrigger implements TriggerInterface +final class FromAccountStarts extends AbstractTrigger implements TriggerInterface { /** @@ -40,7 +40,7 @@ class FromAccountStarts extends AbstractTrigger implements TriggerInterface public static function willMatchEverything($value = null) { if (!is_null($value)) { - return strval($value) === ""; + return strval($value) === ''; } return true; diff --git a/app/Rules/Triggers/ToAccountContains.php b/app/Rules/Triggers/ToAccountContains.php index da798084df..a8f580f136 100644 --- a/app/Rules/Triggers/ToAccountContains.php +++ b/app/Rules/Triggers/ToAccountContains.php @@ -18,7 +18,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class ToAccountContains extends AbstractTrigger implements TriggerInterface +final class ToAccountContains extends AbstractTrigger implements TriggerInterface { /** @@ -40,7 +40,7 @@ class ToAccountContains extends AbstractTrigger implements TriggerInterface public static function willMatchEverything($value = null) { if (!is_null($value)) { - return strval($value) === ""; + return strval($value) === ''; } return true; diff --git a/app/Rules/Triggers/ToAccountEnds.php b/app/Rules/Triggers/ToAccountEnds.php index d065868ac4..1179f415e4 100644 --- a/app/Rules/Triggers/ToAccountEnds.php +++ b/app/Rules/Triggers/ToAccountEnds.php @@ -18,7 +18,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class ToAccountEnds extends AbstractTrigger implements TriggerInterface +final class ToAccountEnds extends AbstractTrigger implements TriggerInterface { /** @@ -40,7 +40,7 @@ class ToAccountEnds extends AbstractTrigger implements TriggerInterface public static function willMatchEverything($value = null) { if (!is_null($value)) { - return strval($value) === ""; + return strval($value) === ''; } return true; diff --git a/app/Rules/Triggers/ToAccountIs.php b/app/Rules/Triggers/ToAccountIs.php index 942264c877..65215ba9f5 100644 --- a/app/Rules/Triggers/ToAccountIs.php +++ b/app/Rules/Triggers/ToAccountIs.php @@ -18,7 +18,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class ToAccountIs extends AbstractTrigger implements TriggerInterface +final class ToAccountIs extends AbstractTrigger implements TriggerInterface { /** diff --git a/app/Rules/Triggers/ToAccountStarts.php b/app/Rules/Triggers/ToAccountStarts.php index 58bceb1e4d..c5ec517544 100644 --- a/app/Rules/Triggers/ToAccountStarts.php +++ b/app/Rules/Triggers/ToAccountStarts.php @@ -18,7 +18,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class ToAccountStarts extends AbstractTrigger implements TriggerInterface +final class ToAccountStarts extends AbstractTrigger implements TriggerInterface { /** @@ -40,7 +40,7 @@ class ToAccountStarts extends AbstractTrigger implements TriggerInterface public static function willMatchEverything($value = null) { if (!is_null($value)) { - return strval($value) === ""; + return strval($value) === ''; } return true; diff --git a/app/Rules/Triggers/TransactionType.php b/app/Rules/Triggers/TransactionType.php index 204cacdcc4..90decda2b7 100644 --- a/app/Rules/Triggers/TransactionType.php +++ b/app/Rules/Triggers/TransactionType.php @@ -18,7 +18,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class TransactionType extends AbstractTrigger implements TriggerInterface +final class TransactionType extends AbstractTrigger implements TriggerInterface { /** diff --git a/app/Rules/Triggers/TriggerFactory.php b/app/Rules/Triggers/TriggerFactory.php index bab4baf49f..071ce1870e 100644 --- a/app/Rules/Triggers/TriggerFactory.php +++ b/app/Rules/Triggers/TriggerFactory.php @@ -38,9 +38,6 @@ class TriggerFactory $class = self::getTriggerClass($triggerType); $obj = $class::makeFromTriggerValue($trigger->trigger_value); - // this is a massive HACK. TODO. - $obj->databaseObject = $trigger; - return $obj; } diff --git a/app/Rules/Triggers/UserAction.php b/app/Rules/Triggers/UserAction.php index 9d087326f2..a93d006340 100644 --- a/app/Rules/Triggers/UserAction.php +++ b/app/Rules/Triggers/UserAction.php @@ -18,7 +18,7 @@ use Log; * * @package FireflyIII\Rules\Triggers */ -class UserAction extends AbstractTrigger implements TriggerInterface +final class UserAction extends AbstractTrigger implements TriggerInterface { /**