From e8d19abf7ab9f7261267dbc08bdd8a6e3195c70d Mon Sep 17 00:00:00 2001 From: paulwer Date: Mon, 30 Jan 2023 11:04:55 +0100 Subject: [PATCH] sort early returns + type_id/category_id&event_id as strings --- app/Filters/BankIntegrationFilters.php | 4 ++++ app/Filters/BankTransactionFilters.php | 3 ++- app/Filters/BankTransactionRuleFilters.php | 4 ++++ app/Filters/ClientFilters.php | 4 ++++ app/Filters/CompanyGatewayFilters.php | 4 ++++ app/Filters/CreditFilters.php | 4 ++++ app/Filters/DesignFilters.php | 7 ++++--- app/Filters/DocumentFilters.php | 7 ++++--- app/Filters/ExpenseCategoryFilters.php | 4 ++++ app/Filters/ExpenseFilters.php | 4 ++++ app/Filters/InvoiceFilters.php | 3 +-- app/Filters/PaymentTermFilters.php | 4 ++++ app/Filters/ProductFilters.php | 3 ++- app/Filters/ProjectFilters.php | 4 ++++ app/Filters/PurchaseOrderFilters.php | 4 ++++ app/Filters/QuoteFilters.php | 4 ++++ app/Filters/RecurringExpenseFilters.php | 4 ++++ app/Filters/RecurringInvoiceFilters.php | 4 ++++ app/Filters/RecurringQuoteFilters.php | 4 ++++ app/Filters/SubscriptionFilters.php | 4 ++++ app/Filters/SystemLogFilters.php | 16 ++++++++++------ app/Filters/TaskFilters.php | 4 ++++ app/Filters/TaskStatusFilters.php | 4 ++++ app/Filters/TaxRateFilters.php | 4 ++++ app/Filters/TokenFilters.php | 4 ++++ app/Filters/UserFilters.php | 4 ++++ app/Filters/VendorFilters.php | 4 ++++ app/Filters/WebhookFilters.php | 4 ++++ 28 files changed, 111 insertions(+), 16 deletions(-) diff --git a/app/Filters/BankIntegrationFilters.php b/app/Filters/BankIntegrationFilters.php index 6701f59bf325..3149394eeaa1 100644 --- a/app/Filters/BankIntegrationFilters.php +++ b/app/Filters/BankIntegrationFilters.php @@ -94,6 +94,10 @@ class BankIntegrationFilters extends QueryFilters public function sort(string $sort): Builder { $sort_col = explode('|', $sort); + + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/BankTransactionFilters.php b/app/Filters/BankTransactionFilters.php index 2aabb67f0609..5f613174d276 100644 --- a/app/Filters/BankTransactionFilters.php +++ b/app/Filters/BankTransactionFilters.php @@ -128,8 +128,9 @@ class BankTransactionFilters extends QueryFilters { $sort_col = explode('|', $sort); - if(!is_array($sort_col)) + if (!is_array($sort_col) || count($sort_col) != 2) { return $this->builder; + } if($sort_col[0] == 'deposit') return $this->builder->where('base_type', 'CREDIT')->orderBy('amount', $sort_col[1]); diff --git a/app/Filters/BankTransactionRuleFilters.php b/app/Filters/BankTransactionRuleFilters.php index 76d3f936d001..55b95b0dac46 100644 --- a/app/Filters/BankTransactionRuleFilters.php +++ b/app/Filters/BankTransactionRuleFilters.php @@ -65,6 +65,10 @@ class BankTransactionRuleFilters extends QueryFilters public function sort(string $sort): Builder { $sort_col = explode('|', $sort); + + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/ClientFilters.php b/app/Filters/ClientFilters.php index 762e4384aab9..3846de9d3035 100644 --- a/app/Filters/ClientFilters.php +++ b/app/Filters/ClientFilters.php @@ -143,6 +143,10 @@ class ClientFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + if($sort_col[0] == 'display_name') $sort_col[0] = 'name'; diff --git a/app/Filters/CompanyGatewayFilters.php b/app/Filters/CompanyGatewayFilters.php index 9722e9124c5d..14656aa7d250 100644 --- a/app/Filters/CompanyGatewayFilters.php +++ b/app/Filters/CompanyGatewayFilters.php @@ -47,6 +47,10 @@ class CompanyGatewayFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/CreditFilters.php b/app/Filters/CreditFilters.php index 61247aad1e5d..c1f1f89cf8c0 100644 --- a/app/Filters/CreditFilters.php +++ b/app/Filters/CreditFilters.php @@ -104,6 +104,10 @@ class CreditFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/DesignFilters.php b/app/Filters/DesignFilters.php index 3a2ae7edd63a..9fcd17677ff6 100644 --- a/app/Filters/DesignFilters.php +++ b/app/Filters/DesignFilters.php @@ -48,10 +48,11 @@ class DesignFilters extends QueryFilters { $sort_col = explode('|', $sort); - if(is_array($sort_col)) - return $this->builder->orderBy($sort_col[0], $sort_col[1]); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } - return $this->builder; + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } /** diff --git a/app/Filters/DocumentFilters.php b/app/Filters/DocumentFilters.php index bcdcd9e09ec2..575e471bfd12 100644 --- a/app/Filters/DocumentFilters.php +++ b/app/Filters/DocumentFilters.php @@ -58,10 +58,11 @@ class DocumentFilters extends QueryFilters { $sort_col = explode('|', $sort); - if(is_array($sort_col)) - return $this->builder->orderBy($sort_col[0], $sort_col[1]); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } - return $this->builder; + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/ExpenseCategoryFilters.php b/app/Filters/ExpenseCategoryFilters.php index 53ed1e987024..9dd9c54d5fe4 100644 --- a/app/Filters/ExpenseCategoryFilters.php +++ b/app/Filters/ExpenseCategoryFilters.php @@ -45,6 +45,10 @@ class ExpenseCategoryFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + if (is_array($sort_col) && in_array($sort_col[1], ['asc', 'desc']) && in_array($sort_col[0], ['name'])) return $this->builder->orderBy($sort_col[0], $sort_col[1]); diff --git a/app/Filters/ExpenseFilters.php b/app/Filters/ExpenseFilters.php index 1e3a622b7def..cb2fa31815e6 100644 --- a/app/Filters/ExpenseFilters.php +++ b/app/Filters/ExpenseFilters.php @@ -151,6 +151,10 @@ class ExpenseFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + if (is_array($sort_col) && in_array($sort_col[1], ['asc', 'desc']) && in_array($sort_col[0], ['public_notes', 'date', 'id_number', 'custom_value1', 'custom_value2', 'custom_value3', 'custom_value4'])) { return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/InvoiceFilters.php b/app/Filters/InvoiceFilters.php index f76f178f6f7c..55d2d2097fcb 100644 --- a/app/Filters/InvoiceFilters.php +++ b/app/Filters/InvoiceFilters.php @@ -179,8 +179,7 @@ class InvoiceFilters extends QueryFilters { $sort_col = explode('|', $sort); - //catch invalid explode array count - if (count($sort_col) == 1) { + if (!is_array($sort_col) || count($sort_col) != 2) { return $this->builder; } diff --git a/app/Filters/PaymentTermFilters.php b/app/Filters/PaymentTermFilters.php index f9d87955d7ea..dea2ab36375e 100644 --- a/app/Filters/PaymentTermFilters.php +++ b/app/Filters/PaymentTermFilters.php @@ -46,6 +46,10 @@ class PaymentTermFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/ProductFilters.php b/app/Filters/ProductFilters.php index 3a976a9c9678..03dc74f155b5 100644 --- a/app/Filters/ProductFilters.php +++ b/app/Filters/ProductFilters.php @@ -62,8 +62,9 @@ class ProductFilters extends QueryFilters { $sort_col = explode('|', $sort); - if(!is_array($sort_col)) + if (!is_array($sort_col) || count($sort_col) != 2) { return $this->builder; + } return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/ProjectFilters.php b/app/Filters/ProjectFilters.php index 4d1cb2199ca6..fb32fd6913da 100644 --- a/app/Filters/ProjectFilters.php +++ b/app/Filters/ProjectFilters.php @@ -57,6 +57,10 @@ class ProjectFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + if(is_array($sort_col)) return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/PurchaseOrderFilters.php b/app/Filters/PurchaseOrderFilters.php index f99a7f3a8105..7b766ca9230e 100644 --- a/app/Filters/PurchaseOrderFilters.php +++ b/app/Filters/PurchaseOrderFilters.php @@ -119,6 +119,10 @@ class PurchaseOrderFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/QuoteFilters.php b/app/Filters/QuoteFilters.php index 950d6bc00497..9c87a2b72a9a 100644 --- a/app/Filters/QuoteFilters.php +++ b/app/Filters/QuoteFilters.php @@ -130,6 +130,10 @@ class QuoteFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + if($sort_col[0] == 'valid_until') $sort_col[0] = 'due_date'; diff --git a/app/Filters/RecurringExpenseFilters.php b/app/Filters/RecurringExpenseFilters.php index fa30dc401575..ffd82427e57b 100644 --- a/app/Filters/RecurringExpenseFilters.php +++ b/app/Filters/RecurringExpenseFilters.php @@ -59,6 +59,10 @@ class RecurringExpenseFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/RecurringInvoiceFilters.php b/app/Filters/RecurringInvoiceFilters.php index 7b981f2cd80c..0291200b4f8d 100644 --- a/app/Filters/RecurringInvoiceFilters.php +++ b/app/Filters/RecurringInvoiceFilters.php @@ -102,6 +102,10 @@ class RecurringInvoiceFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/RecurringQuoteFilters.php b/app/Filters/RecurringQuoteFilters.php index 8c35c25b5c75..b551c5eba734 100644 --- a/app/Filters/RecurringQuoteFilters.php +++ b/app/Filters/RecurringQuoteFilters.php @@ -58,6 +58,10 @@ class RecurringQuoteFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/SubscriptionFilters.php b/app/Filters/SubscriptionFilters.php index 1ff2051c6305..e8f137558b11 100644 --- a/app/Filters/SubscriptionFilters.php +++ b/app/Filters/SubscriptionFilters.php @@ -46,6 +46,10 @@ class SubscriptionFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/SystemLogFilters.php b/app/Filters/SystemLogFilters.php index 8c79691e3e05..aa3c88ac974a 100644 --- a/app/Filters/SystemLogFilters.php +++ b/app/Filters/SystemLogFilters.php @@ -18,27 +18,27 @@ use Illuminate\Database\Eloquent\Builder; */ class SystemLogFilters extends QueryFilters { - public function type_id(int $type_id): Builder + public function type_id(string $type_id = ''): Builder { - if (isset($event_id)) { + if (strlen($type_id)) { return $this->builder; } return $this->builder->where('type_id', $type_id); } - public function category_id(int $category_id): Builder + public function category_id(string $category_id = ''): Builder { - if (isset($event_id)) { + if (strlen($category_id)) { return $this->builder; } return $this->builder->where('category_id', $category_id); } - public function event_id(int $event_id): Builder + public function event_id(string $event_id = ''): Builder { - if (isset($event_id)) { + if (strlen($event_id)) { return $this->builder; } @@ -71,6 +71,10 @@ class SystemLogFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/TaskFilters.php b/app/Filters/TaskFilters.php index d3e7c77c673a..88efbc430abc 100644 --- a/app/Filters/TaskFilters.php +++ b/app/Filters/TaskFilters.php @@ -101,6 +101,10 @@ class TaskFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/TaskStatusFilters.php b/app/Filters/TaskStatusFilters.php index ee2d87a10c7e..3e1baab6ee78 100644 --- a/app/Filters/TaskStatusFilters.php +++ b/app/Filters/TaskStatusFilters.php @@ -46,6 +46,10 @@ class TaskStatusFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/TaxRateFilters.php b/app/Filters/TaxRateFilters.php index 482c9ed947ac..9fd81df73264 100644 --- a/app/Filters/TaxRateFilters.php +++ b/app/Filters/TaxRateFilters.php @@ -46,6 +46,10 @@ class TaxRateFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/TokenFilters.php b/app/Filters/TokenFilters.php index c98601dc2e64..e775c6601cd3 100644 --- a/app/Filters/TokenFilters.php +++ b/app/Filters/TokenFilters.php @@ -46,6 +46,10 @@ class TokenFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/UserFilters.php b/app/Filters/UserFilters.php index ef2e257d59a3..a1faf9a27f7b 100644 --- a/app/Filters/UserFilters.php +++ b/app/Filters/UserFilters.php @@ -50,6 +50,10 @@ class UserFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/VendorFilters.php b/app/Filters/VendorFilters.php index 4b5c456875ae..0c7a647ac875 100644 --- a/app/Filters/VendorFilters.php +++ b/app/Filters/VendorFilters.php @@ -65,6 +65,10 @@ class VendorFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); } diff --git a/app/Filters/WebhookFilters.php b/app/Filters/WebhookFilters.php index 606a9984fccb..38554a21305e 100644 --- a/app/Filters/WebhookFilters.php +++ b/app/Filters/WebhookFilters.php @@ -46,6 +46,10 @@ class WebhookFilters extends QueryFilters { $sort_col = explode('|', $sort); + if (!is_array($sort_col) || count($sort_col) != 2) { + return $this->builder; + } + return $this->builder->orderBy($sort_col[0], $sort_col[1]); }