mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-12 15:35:15 +00:00
Code cleanup courtesy of Scrutiniser CI.
This commit is contained in:
@@ -126,7 +126,7 @@ class AbnAmroDescription extends Specifix implements SpecifixInterface
|
|||||||
foreach ($matches as $match) {
|
foreach ($matches as $match) {
|
||||||
$key = $match[1];
|
$key = $match[1];
|
||||||
$value = trim($match[2]);
|
$value = trim($match[2]);
|
||||||
Log::debug("SEPA: $key - $value");
|
Log::debug('SEPA: ' . $key . ' - ' . $value);
|
||||||
switch (strtoupper($key)) {
|
switch (strtoupper($key)) {
|
||||||
case 'OMSCHRIJVING':
|
case 'OMSCHRIJVING':
|
||||||
$newDescription = $value;
|
$newDescription = $value;
|
||||||
|
@@ -155,9 +155,6 @@ class AuthController extends Controller
|
|||||||
return redirect($this->redirectPath());
|
return redirect($this->redirectPath());
|
||||||
}
|
}
|
||||||
throw new FireflyException('The authenticated user object is invalid.');
|
throw new FireflyException('The authenticated user object is invalid.');
|
||||||
|
|
||||||
|
|
||||||
return redirect($this->redirectPath());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -272,20 +272,8 @@ class RuleController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function testTriggers(TestRuleFormRequest $request)
|
public function testTriggers(TestRuleFormRequest $request)
|
||||||
{
|
{
|
||||||
// build trigger array from response TODO move to function:
|
// build trigger array from response
|
||||||
$triggers = [];
|
$triggers = $this->getValidTriggerList($request);
|
||||||
$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,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (count($triggers) == 0) {
|
if (count($triggers) == 0) {
|
||||||
@@ -300,20 +288,14 @@ class RuleController extends Controller
|
|||||||
$matcher->setRange($range);
|
$matcher->setRange($range);
|
||||||
$matcher->setTriggers($triggers);
|
$matcher->setTriggers($triggers);
|
||||||
$matchingTransactions = $matcher->findMatchingTransactions();
|
$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
|
// Warn the user if only a subset of transactions is returned
|
||||||
|
$warning = '';
|
||||||
if (count($matchingTransactions) == $limit) {
|
if (count($matchingTransactions) == $limit) {
|
||||||
$warning = trans('firefly.warning_transaction_subset', ['max_num_transactions' => $limit]);
|
$warning = trans('firefly.warning_transaction_subset', ['max_num_transactions' => $limit]);
|
||||||
} else {
|
} else {
|
||||||
if (count($matchingTransactions) == 0) {
|
if (count($matchingTransactions) == 0) {
|
||||||
$warning = trans('firefly.warning_no_matching_transactions', ['num_transactions' => $range]);
|
$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.
|
* @param TestRuleFormRequest $request
|
||||||
* Only returns triggers that will not match any transaction
|
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function getValidTriggerList()
|
protected function getValidTriggerList(TestRuleFormRequest $request): array
|
||||||
{
|
{
|
||||||
|
|
||||||
$triggers = [];
|
$triggers = [];
|
||||||
$order = 1;
|
|
||||||
$data = [
|
$data = [
|
||||||
'rule-triggers' => Input::get('rule-trigger'),
|
'rule-triggers' => $request->get('rule-trigger'),
|
||||||
'rule-trigger-values' => Input::get('rule-trigger-value'),
|
'rule-trigger-values' => $request->get('rule-trigger-value'),
|
||||||
'rule-trigger-stop' => Input::get('rule-trigger-stop'),
|
'rule-trigger-stop' => $request->get('rule-trigger-stop'),
|
||||||
];
|
];
|
||||||
|
foreach ($data['rule-triggers'] as $index => $triggerType) {
|
||||||
foreach ($data['rule-triggers'] as $index => $trigger) {
|
$triggers[] = [
|
||||||
$value = $data['rule-trigger-values'][$index];
|
'type' => $triggerType,
|
||||||
$stopProcessing = isset($data['rule-trigger-stop'][$index]) ? true : false;
|
'value' => $data['rule-trigger-values'][$index],
|
||||||
|
'stopProcessing' => intval($data['rule-trigger-stop'][$index]) === 1 ? 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++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $triggers;
|
return $triggers;
|
||||||
|
@@ -89,7 +89,6 @@ class JournalFormRequest extends Request
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new FireflyException('Cannot handle transaction type of type ' . e($what) . '.');
|
throw new FireflyException('Cannot handle transaction type of type ' . e($what) . '.');
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $rules;
|
return $rules;
|
||||||
|
@@ -26,7 +26,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules
|
* @package FireflyIII\Rules
|
||||||
*/
|
*/
|
||||||
class Processor
|
final class Processor
|
||||||
{
|
{
|
||||||
/** @var Collection */
|
/** @var Collection */
|
||||||
private $actions;
|
private $actions;
|
||||||
|
@@ -10,7 +10,6 @@ declare(strict_types = 1);
|
|||||||
|
|
||||||
namespace FireflyIII\Rules;
|
namespace FireflyIII\Rules;
|
||||||
|
|
||||||
use FireflyIII\Models\Rule;
|
|
||||||
use FireflyIII\Models\TransactionJournal;
|
use FireflyIII\Models\TransactionJournal;
|
||||||
use FireflyIII\Models\TransactionType;
|
use FireflyIII\Models\TransactionType;
|
||||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||||
@@ -46,15 +45,10 @@ class TransactionMatcher
|
|||||||
$pagesize = min($this->range / 2, $this->limit * 2);
|
$pagesize = min($this->range / 2, $this->limit * 2);
|
||||||
|
|
||||||
// Variables used within the loop
|
// Variables used within the loop
|
||||||
$numTransactionsProcessed = 0;
|
$processed = 0;
|
||||||
$page = 1;
|
$page = 1;
|
||||||
$matchingTransactions = new Collection();
|
$result = new Collection();
|
||||||
|
$processor = Processor::makeFromStringArray($this->triggers);
|
||||||
// Flags to indicate the end of the loop
|
|
||||||
$reachedEndOfList = false;
|
|
||||||
$foundEnoughTransactions = false;
|
|
||||||
$searchedEnoughTransactions = false;
|
|
||||||
$processor = Processor::makeFromStringArray($this->triggers);
|
|
||||||
|
|
||||||
// Start a loop to fetch batches of transactions. The loop will finish if:
|
// Start a loop to fetch batches of transactions. The loop will finish if:
|
||||||
// - all transactions have been fetched from the database
|
// - all transactions have been fetched from the database
|
||||||
@@ -73,31 +67,23 @@ class TransactionMatcher
|
|||||||
);
|
);
|
||||||
|
|
||||||
// merge:
|
// merge:
|
||||||
$matchingTransactions = $matchingTransactions->merge($filtered);
|
$result = $result->merge($filtered);
|
||||||
|
|
||||||
// $matchingTransactions += array_filter(
|
|
||||||
// $set, function ($transaction) {
|
|
||||||
// $processor = new Processor(new Rule, $transaction);
|
|
||||||
//
|
|
||||||
// return $processor->isTriggeredBy($this->triggers);
|
|
||||||
// }
|
|
||||||
// );
|
|
||||||
|
|
||||||
// Update counters
|
// Update counters
|
||||||
$page++;
|
$page++;
|
||||||
$numTransactionsProcessed += count($set);
|
$processed += count($set);
|
||||||
|
|
||||||
// Check for conditions to finish the loop
|
// Check for conditions to finish the loop
|
||||||
$reachedEndOfList = (count($set) < $pagesize);
|
$reachedEndOfList = (count($set) < $pagesize);
|
||||||
$foundEnoughTransactions = (count($matchingTransactions) >= $this->limit);
|
$foundEnoughTransactions = (count($result) >= $this->limit);
|
||||||
$searchedEnoughTransactions = ($numTransactionsProcessed >= $this->range);
|
$searchedEnoughTransactions = ($processed >= $this->range);
|
||||||
} while (!$reachedEndOfList && !$foundEnoughTransactions && !$searchedEnoughTransactions);
|
} while (!$reachedEndOfList && !$foundEnoughTransactions && !$searchedEnoughTransactions);
|
||||||
|
|
||||||
// If the list of matchingTransactions is larger than the maximum number of results
|
// 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
|
// (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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -19,7 +19,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @package FireflyIII\Rules\Triggers
|
||||||
*/
|
*/
|
||||||
class AmountExactly extends AbstractTrigger implements TriggerInterface
|
final class AmountExactly extends AbstractTrigger implements TriggerInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -19,7 +19,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @package FireflyIII\Rules\Triggers
|
||||||
*/
|
*/
|
||||||
class AmountLess extends AbstractTrigger implements TriggerInterface
|
final class AmountLess extends AbstractTrigger implements TriggerInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -19,7 +19,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @package FireflyIII\Rules\Triggers
|
||||||
*/
|
*/
|
||||||
class AmountMore extends AbstractTrigger implements TriggerInterface
|
final class AmountMore extends AbstractTrigger implements TriggerInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -19,7 +19,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @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)
|
public static function willMatchEverything($value = null)
|
||||||
{
|
{
|
||||||
if (!is_null($value)) {
|
if (!is_null($value)) {
|
||||||
return strval($value) === "";
|
return strval($value) === '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -18,7 +18,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @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)
|
public static function willMatchEverything($value = null)
|
||||||
{
|
{
|
||||||
if (!is_null($value)) {
|
if (!is_null($value)) {
|
||||||
return strval($value) === "";
|
return strval($value) === '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -18,7 +18,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @package FireflyIII\Rules\Triggers
|
||||||
*/
|
*/
|
||||||
class DescriptionIs extends AbstractTrigger implements TriggerInterface
|
final class DescriptionIs extends AbstractTrigger implements TriggerInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -18,7 +18,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @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)
|
public static function willMatchEverything($value = null)
|
||||||
{
|
{
|
||||||
if (!is_null($value)) {
|
if (!is_null($value)) {
|
||||||
return strval($value) === "";
|
return strval($value) === '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -18,7 +18,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @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)
|
public static function willMatchEverything($value = null)
|
||||||
{
|
{
|
||||||
if (!is_null($value)) {
|
if (!is_null($value)) {
|
||||||
return strval($value) === "";
|
return strval($value) === '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -18,7 +18,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @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)
|
public static function willMatchEverything($value = null)
|
||||||
{
|
{
|
||||||
if (!is_null($value)) {
|
if (!is_null($value)) {
|
||||||
return strval($value) === "";
|
return strval($value) === '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -18,7 +18,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @package FireflyIII\Rules\Triggers
|
||||||
*/
|
*/
|
||||||
class FromAccountIs extends AbstractTrigger implements TriggerInterface
|
final class FromAccountIs extends AbstractTrigger implements TriggerInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -18,7 +18,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @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)
|
public static function willMatchEverything($value = null)
|
||||||
{
|
{
|
||||||
if (!is_null($value)) {
|
if (!is_null($value)) {
|
||||||
return strval($value) === "";
|
return strval($value) === '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -18,7 +18,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @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)
|
public static function willMatchEverything($value = null)
|
||||||
{
|
{
|
||||||
if (!is_null($value)) {
|
if (!is_null($value)) {
|
||||||
return strval($value) === "";
|
return strval($value) === '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -18,7 +18,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @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)
|
public static function willMatchEverything($value = null)
|
||||||
{
|
{
|
||||||
if (!is_null($value)) {
|
if (!is_null($value)) {
|
||||||
return strval($value) === "";
|
return strval($value) === '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -18,7 +18,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @package FireflyIII\Rules\Triggers
|
||||||
*/
|
*/
|
||||||
class ToAccountIs extends AbstractTrigger implements TriggerInterface
|
final class ToAccountIs extends AbstractTrigger implements TriggerInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -18,7 +18,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @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)
|
public static function willMatchEverything($value = null)
|
||||||
{
|
{
|
||||||
if (!is_null($value)) {
|
if (!is_null($value)) {
|
||||||
return strval($value) === "";
|
return strval($value) === '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -18,7 +18,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @package FireflyIII\Rules\Triggers
|
||||||
*/
|
*/
|
||||||
class TransactionType extends AbstractTrigger implements TriggerInterface
|
final class TransactionType extends AbstractTrigger implements TriggerInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -38,9 +38,6 @@ class TriggerFactory
|
|||||||
$class = self::getTriggerClass($triggerType);
|
$class = self::getTriggerClass($triggerType);
|
||||||
$obj = $class::makeFromTriggerValue($trigger->trigger_value);
|
$obj = $class::makeFromTriggerValue($trigger->trigger_value);
|
||||||
|
|
||||||
// this is a massive HACK. TODO.
|
|
||||||
$obj->databaseObject = $trigger;
|
|
||||||
|
|
||||||
return $obj;
|
return $obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -18,7 +18,7 @@ use Log;
|
|||||||
*
|
*
|
||||||
* @package FireflyIII\Rules\Triggers
|
* @package FireflyIII\Rules\Triggers
|
||||||
*/
|
*/
|
||||||
class UserAction extends AbstractTrigger implements TriggerInterface
|
final class UserAction extends AbstractTrigger implements TriggerInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user