mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 02:36:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			261 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			261 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /*
 | |
|  * search.php
 | |
|  * Copyright (c) 2022 james@firefly-iii.org
 | |
|  *
 | |
|  * This file is part of Firefly III (https://github.com/firefly-iii).
 | |
|  *
 | |
|  * This program is free software: you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU Affero General Public License as
 | |
|  * published by the Free Software Foundation, either version 3 of the
 | |
|  * License, or (at your option) any later version.
 | |
|  *
 | |
|  * This program is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  * GNU Affero General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU Affero General Public License
 | |
|  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | |
|  */
 | |
| 
 | |
| declare(strict_types=1);
 | |
| 
 | |
| return [
 | |
|     'operators'        => [
 | |
|         'user_action'                             => ['alias' => false, 'needs_context' => true],
 | |
|         'account_id'                              => ['alias' => false, 'needs_context' => true],
 | |
|         'reconciled'                              => ['alias' => false, 'needs_context' => false],
 | |
|         'source_account_id'                       => ['alias' => false, 'needs_context' => true],
 | |
|         'destination_account_id'                  => ['alias' => false, 'needs_context' => true],
 | |
|         'transaction_type'                        => ['alias' => false, 'needs_context' => true],
 | |
|         'type'                                    => ['alias' => true, 'alias_for' => 'transaction_type', 'needs_context' => true],
 | |
|         'tag_is'                                  => ['alias' => false, 'needs_context' => true],
 | |
|         'tag_is_not'                              => ['alias' => false, 'needs_context' => true],
 | |
|         'tag'                                     => ['alias' => true, 'alias_for' => 'tag_is', 'needs_context' => true],
 | |
|         'tag_contains'                            => ['alias' => false, 'needs_context' => true],
 | |
|         'tag_ends'                                => ['alias' => false, 'needs_context' => true],
 | |
|         'tag_starts'                              => ['alias' => false, 'needs_context' => true],
 | |
|         'description_is'                          => ['alias' => false, 'needs_context' => true],
 | |
|         'description'                             => ['alias' => true, 'alias_for' => 'description_is', 'needs_context' => true],
 | |
|         'description_contains'                    => ['alias' => false, 'needs_context' => true],
 | |
|         'description_ends'                        => ['alias' => false, 'needs_context' => true],
 | |
|         'description_starts'                      => ['alias' => false, 'needs_context' => true],
 | |
|         'notes_is'                                => ['alias' => false, 'needs_context' => true],
 | |
|         'notes_are'                               => ['alias' => true, 'alias_for' => 'notes_is', 'needs_context' => true],
 | |
|         'notes_contains'                          => ['alias' => false, 'needs_context' => true],
 | |
|         'notes_contain'                           => ['alias' => true, 'alias_for' => 'notes_contains', 'needs_context' => true],
 | |
|         'notes'                                   => ['alias' => true, 'alias_for' => 'notes_contains', 'needs_context' => true],
 | |
|         'notes_ends'                              => ['alias' => false, 'needs_context' => true],
 | |
|         'notes_end'                               => ['alias' => true, 'alias_for' => 'notes_ends', 'needs_context' => true],
 | |
|         'notes_starts'                            => ['alias' => false, 'needs_context' => true],
 | |
|         'notes_start'                             => ['alias' => true, 'alias_for' => 'notes_starts', 'needs_context' => true],
 | |
|         'source_account_is'                       => ['alias' => false, 'needs_context' => true],
 | |
|         'from_account_is'                         => ['alias' => true, 'alias_for' => 'source_account_is', 'needs_context' => true],
 | |
|         'source_account_contains'                 => ['alias' => false, 'needs_context' => true],
 | |
|         'source'                                  => ['alias' => true, 'alias_for' => 'source_account_contains', 'needs_context' => true],
 | |
|         'from'                                    => ['alias' => true, 'alias_for' => 'source_account_contains', 'needs_context' => true],
 | |
|         'from_account_contains'                   => ['alias' => true, 'alias_for' => 'source_account_contains', 'needs_context' => true],
 | |
|         'source_account_ends'                     => ['alias' => false, 'needs_context' => true],
 | |
|         'from_account_ends'                       => ['alias' => true, 'alias_for' => 'source_account_ends', 'needs_context' => true],
 | |
|         'source_account_starts'                   => ['alias' => false, 'needs_context' => true],
 | |
|         'from_account_starts'                     => ['alias' => true, 'alias_for' => 'source_account_starts', 'needs_context' => true],
 | |
|         'source_account_nr_is'                    => ['alias' => false, 'needs_context' => true],
 | |
|         'from_account_nr_is'                      => ['alias' => true, 'alias_for' => 'source_account_nr_is', 'needs_context' => true],
 | |
|         'source_account_nr_contains'              => ['alias' => false, 'needs_context' => true],
 | |
|         'from_account_nr_contains'                => ['alias' => true, 'alias_for' => 'source_account_nr_contains', 'needs_context' => true],
 | |
|         'source_account_nr_ends'                  => ['alias' => false, 'needs_context' => true],
 | |
|         'from_account_nr_ends'                    => ['alias' => true, 'alias_for' => 'source_account_nr_ends', 'needs_context' => true],
 | |
|         'source_account_nr_starts'                => ['alias' => false, 'needs_context' => true],
 | |
|         'from_account_nr_starts'                  => ['alias' => true, 'alias_for' => 'source_account_nr_starts', 'needs_context' => true],
 | |
|         'destination_account_is'                  => ['alias' => false, 'needs_context' => true],
 | |
|         'to_account_is'                           => ['alias' => true, 'alias_for' => 'destination_account_is', 'needs_context' => true],
 | |
|         'destination_account_contains'            => ['alias' => false, 'needs_context' => true],
 | |
|         'destination'                             => ['alias' => true, 'alias_for' => 'destination_account_contains', 'needs_context' => true],
 | |
|         'to'                                      => ['alias' => true, 'alias_for' => 'destination_account_contains', 'needs_context' => true],
 | |
|         'to_account_contains'                     => ['alias' => true, 'alias_for' => 'destination_account_contains', 'needs_context' => true],
 | |
|         'destination_account_ends'                => ['alias' => false, 'needs_context' => true],
 | |
|         'to_account_ends'                         => ['alias' => true, 'alias_for' => 'destination_account_ends', 'needs_context' => true],
 | |
|         'destination_account_starts'              => ['alias' => false, 'needs_context' => true],
 | |
|         'to_account_starts'                       => ['alias' => true, 'alias_for' => 'destination_account_starts', 'needs_context' => true],
 | |
|         'destination_account_nr_is'               => ['alias' => false, 'needs_context' => true],
 | |
|         'to_account_nr_is'                        => ['alias' => true, 'alias_for' => 'destination_account_nr_is', 'needs_context' => true],
 | |
|         'destination_account_nr_contains'         => ['alias' => false, 'needs_context' => true],
 | |
|         'to_account_nr_contains'                  => ['alias' => true, 'alias_for' => 'destination_account_nr_contains', 'needs_context' => true],
 | |
|         'destination_account_nr_ends'             => ['alias' => false, 'needs_context' => true],
 | |
|         'to_account_nr_ends'                      => ['alias' => true, 'alias_for' => 'destination_account_nr_ends', 'needs_context' => true],
 | |
|         'destination_account_nr_starts'           => ['alias' => false, 'needs_context' => true],
 | |
|         'to_account_nr_starts'                    => ['alias' => true, 'alias_for' => 'destination_account_nr_starts', 'needs_context' => true],
 | |
|         'account_is'                              => ['alias' => false, 'needs_context' => true],
 | |
|         'account_contains'                        => ['alias' => false, 'needs_context' => true],
 | |
|         'account_ends'                            => ['alias' => false, 'needs_context' => true],
 | |
|         'account_starts'                          => ['alias' => false, 'needs_context' => true],
 | |
|         'account_nr_is'                           => ['alias' => false, 'needs_context' => true],
 | |
|         'account_nr_contains'                     => ['alias' => false, 'needs_context' => true],
 | |
|         'account_nr_ends'                         => ['alias' => false, 'needs_context' => true],
 | |
|         'account_nr_starts'                       => ['alias' => false, 'needs_context' => true],
 | |
|         'category_is'                             => ['alias' => false, 'needs_context' => true],
 | |
|         'category_contains'                       => ['alias' => false, 'needs_context' => true],
 | |
|         'category'                                => ['alias' => true, 'alias_for' => 'category_contains', 'needs_context' => true],
 | |
|         'category_ends'                           => ['alias' => false, 'needs_context' => true],
 | |
|         'category_starts'                         => ['alias' => false, 'needs_context' => true],
 | |
|         'budget_is'                               => ['alias' => false, 'needs_context' => true],
 | |
|         'budget_contains'                         => ['alias' => false, 'needs_context' => true],
 | |
|         'budget'                                  => ['alias' => true, 'alias_for' => 'budget_contains', 'needs_context' => true],
 | |
|         'budget_ends'                             => ['alias' => false, 'needs_context' => true],
 | |
|         'budget_starts'                           => ['alias' => false, 'needs_context' => true],
 | |
|         'bill_is'                                 => ['alias' => false, 'needs_context' => true],
 | |
|         'bill_contains'                           => ['alias' => false, 'needs_context' => true],
 | |
|         'bill'                                    => ['alias' => true, 'alias_for' => 'bill_contains', 'needs_context' => true],
 | |
|         'bill_ends'                               => ['alias' => false, 'needs_context' => true],
 | |
|         'bill_starts'                             => ['alias' => false, 'needs_context' => true],
 | |
|         'external_id_is'                          => ['alias' => false, 'needs_context' => true],
 | |
|         'external_id_contains'                    => ['alias' => false, 'needs_context' => true],
 | |
|         'external_id'                             => ['alias' => true, 'alias_for' => 'external_id_contains', 'needs_context' => true],
 | |
|         'external_id_ends'                        => ['alias' => false, 'needs_context' => true],
 | |
|         'external_id_starts'                      => ['alias' => false, 'needs_context' => true],
 | |
|         'internal_reference_is'                   => ['alias' => false, 'needs_context' => true],
 | |
|         'internal_reference_contains'             => ['alias' => false, 'needs_context' => true],
 | |
|         'internal_reference'                      => ['alias' => true, 'alias_for' => 'internal_reference_contains', 'needs_context' => true],
 | |
|         'internal_reference_ends'                 => ['alias' => false, 'needs_context' => true],
 | |
|         'internal_reference_starts'               => ['alias' => false, 'needs_context' => true],
 | |
|         'external_url_is'                         => ['alias' => false, 'needs_context' => true],
 | |
|         'external_url_contains'                   => ['alias' => false, 'needs_context' => true],
 | |
|         'external_url'                            => ['alias' => true, 'alias_for' => 'external_url_contains', 'needs_context' => true],
 | |
|         'external_url_ends'                       => ['alias' => false, 'needs_context' => true],
 | |
|         'external_url_starts'                     => ['alias' => false, 'needs_context' => true],
 | |
|         'has_attachments'                         => ['alias' => false, 'needs_context' => false],
 | |
|         'has_any_category'                        => ['alias' => false, 'needs_context' => false],
 | |
|         'has_any_budget'                          => ['alias' => false, 'needs_context' => false],
 | |
|         'has_any_bill'                            => ['alias' => false, 'needs_context' => false],
 | |
|         'has_any_tag'                             => ['alias' => false, 'needs_context' => false],
 | |
|         'any_notes'                               => ['alias' => false, 'needs_context' => false],
 | |
|         'has_any_notes'                           => ['alias' => true, 'alias_for' => 'any_notes', 'needs_context' => false],
 | |
|         'has_notes'                               => ['alias' => true, 'alias_for' => 'any_notes', 'needs_context' => false],
 | |
|         'any_external_url'                        => ['alias' => false, 'needs_context' => false],
 | |
|         'has_any_external_url'                    => ['alias' => true, 'alias_for' => 'any_external_url', 'needs_context' => false],
 | |
|         'has_no_attachments'                      => ['alias' => false, 'needs_context' => false],
 | |
|         'has_no_category'                         => ['alias' => false, 'needs_context' => false],
 | |
|         'has_no_budget'                           => ['alias' => false, 'needs_context' => false],
 | |
|         'has_no_bill'                             => ['alias' => false, 'needs_context' => false],
 | |
|         'has_no_tag'                              => ['alias' => false, 'needs_context' => false],
 | |
|         'no_notes'                                => ['alias' => false, 'needs_context' => false],
 | |
|         'no_external_url'                         => ['alias' => false, 'needs_context' => false],
 | |
|         'source_is_cash'                          => ['alias' => false, 'needs_context' => false],
 | |
|         'destination_is_cash'                     => ['alias' => false, 'needs_context' => false],
 | |
|         'account_is_cash'                         => ['alias' => false, 'needs_context' => false],
 | |
|         'currency_is'                             => ['alias' => false, 'needs_context' => true],
 | |
|         'foreign_currency_is'                     => ['alias' => false, 'needs_context' => true],
 | |
|         'id'                                      => ['alias' => false, 'trigger_class' => '', 'needs_context' => true],
 | |
|         'journal_id'                              => ['alias' => false, 'trigger_class' => '', 'needs_context' => true],
 | |
|         'recurrence_id'                           => ['alias' => false, 'trigger_class' => '', 'needs_context' => true],
 | |
|         'date_on'                                 => ['alias' => false, 'needs_context' => true],
 | |
|         'date'                                    => ['alias' => true, 'alias_for' => 'date_on', 'needs_context' => true],
 | |
|         'date_is'                                 => ['alias' => true, 'alias_for' => 'date_on', 'needs_context' => true],
 | |
|         'on'                                      => ['alias' => true, 'alias_for' => 'date_on', 'needs_context' => true],
 | |
|         'date_before'                             => ['alias' => false, 'needs_context' => true],
 | |
|         'before'                                  => ['alias' => true, 'alias_for' => 'date_before', 'needs_context' => true],
 | |
|         'date_after'                              => ['alias' => false, 'needs_context' => true],
 | |
|         'after'                                   => ['alias' => true, 'alias_for' => 'date_after', 'needs_context' => true],
 | |
|         'interest_date_on'                        => ['alias' => false, 'needs_context' => true],
 | |
|         'interest_date'                           => ['alias' => true, 'alias_for' => 'interest_date_on', 'needs_context' => true],
 | |
|         'interest_date_is'                        => ['alias' => true, 'alias_for' => 'interest_date_on', 'needs_context' => true],
 | |
|         'interest_date_before'                    => ['alias' => false, 'needs_context' => true],
 | |
|         'interest_date_after'                     => ['alias' => false, 'needs_context' => true],
 | |
|         'book_date_on'                            => ['alias' => false, 'needs_context' => true],
 | |
|         'book_date'                               => ['alias' => true, 'alias_for' => 'book_date_on', 'needs_context' => true],
 | |
|         'book_date_is'                            => ['alias' => true, 'alias_for' => 'book_date_on', 'needs_context' => true],
 | |
|         'book_date_before'                        => ['alias' => false, 'needs_context' => true],
 | |
|         'book_date_after'                         => ['alias' => false, 'needs_context' => true],
 | |
|         'process_date_on'                         => ['alias' => false, 'needs_context' => true],
 | |
|         'process_date'                            => ['alias' => true, 'alias_for' => 'process_date_on', 'needs_context' => true],
 | |
|         'process_date_is'                         => ['alias' => true, 'alias_for' => 'process_date_on', 'needs_context' => true],
 | |
|         'process_date_before'                     => ['alias' => false, 'needs_context' => true],
 | |
|         'process_date_after'                      => ['alias' => false, 'needs_context' => true],
 | |
|         'due_date_on'                             => ['alias' => false, 'needs_context' => true],
 | |
|         'due_date'                                => ['alias' => true, 'alias_for' => 'due_date_on', 'needs_context' => true],
 | |
|         'due_date_is'                             => ['alias' => true, 'alias_for' => 'due_date_on', 'needs_context' => true],
 | |
|         'due_date_before'                         => ['alias' => false, 'needs_context' => true],
 | |
|         'due_date_after'                          => ['alias' => false, 'needs_context' => true],
 | |
|         'payment_date_on'                         => ['alias' => false, 'needs_context' => true],
 | |
|         'payment_date'                            => ['alias' => true, 'alias_for' => 'payment_date_on', 'needs_context' => true],
 | |
|         'payment_date_is'                         => ['alias' => true, 'alias_for' => 'payment_date_on', 'needs_context' => true],
 | |
|         'payment_date_before'                     => ['alias' => false, 'needs_context' => true],
 | |
|         'payment_date_after'                      => ['alias' => false, 'needs_context' => true],
 | |
|         'invoice_date_on'                         => ['alias' => false, 'needs_context' => true],
 | |
|         'invoice_date'                            => ['alias' => true, 'alias_for' => 'invoice_date_on', 'needs_context' => true],
 | |
|         'invoice_date_is'                         => ['alias' => true, 'alias_for' => 'invoice_date_on', 'needs_context' => true],
 | |
|         'invoice_date_before'                     => ['alias' => false, 'needs_context' => true],
 | |
|         'invoice_date_after'                      => ['alias' => false, 'needs_context' => true],
 | |
|         'created_at_on'                           => ['alias' => false, 'needs_context' => true],
 | |
|         'created_at'                              => ['alias' => true, 'alias_for' => 'created_at_on', 'needs_context' => true],
 | |
|         'created_at_is'                           => ['alias' => true, 'alias_for' => 'created_at_on', 'needs_context' => true],
 | |
|         'created_at_before'                       => ['alias' => false, 'needs_context' => true],
 | |
|         'created_at_after'                        => ['alias' => false, 'needs_context' => true],
 | |
|         'updated_at_on'                           => ['alias' => false, 'needs_context' => true],
 | |
|         'updated_at'                              => ['alias' => true, 'alias_for' => 'updated_at_on', 'needs_context' => true],
 | |
|         'updated_at_is'                           => ['alias' => true, 'alias_for' => 'updated_at_on', 'needs_context' => true],
 | |
|         'updated_at_before'                       => ['alias' => false, 'needs_context' => true],
 | |
|         'updated_at_after'                        => ['alias' => false, 'needs_context' => true],
 | |
|         'created_on_on'                           => ['alias' => true, 'alias_for' => 'created_at_on', 'needs_context' => true],
 | |
|         'created_on'                              => ['alias' => true, 'alias_for' => 'created_at', 'needs_context' => true],
 | |
|         'created_on_before'                       => ['alias' => true, 'alias_for' => 'created_at_before', 'needs_context' => true],
 | |
|         'created_on_after'                        => ['alias' => true, 'alias_for' => 'created_at_after', 'needs_context' => true],
 | |
|         'updated_on_on'                           => ['alias' => true, 'alias_for' => 'updated_at_on', 'needs_context' => true],
 | |
|         'updated_on'                              => ['alias' => true, 'alias_for' => 'updated_at', 'needs_context' => true],
 | |
|         'updated_on_before'                       => ['alias' => true, 'alias_for' => 'updated_at_before', 'needs_context' => true],
 | |
|         'updated_on_after'                        => ['alias' => true, 'alias_for' => 'updated_at_after', 'needs_context' => true],
 | |
|         'amount_is'                               => ['alias' => false, 'needs_context' => true],
 | |
|         'amount'                                  => ['alias' => true, 'alias_for' => 'amount_is', 'needs_context' => true],
 | |
|         'amount_exactly'                          => ['alias' => true, 'alias_for' => 'amount_is', 'needs_context' => true],
 | |
|         'amount_less'                             => ['alias' => false, 'needs_context' => true],
 | |
|         'amount_max'                              => ['alias' => true, 'alias_for' => 'amount_less', 'needs_context' => true],
 | |
|         'less'                                    => ['alias' => true, 'alias_for' => 'amount_less', 'needs_context' => true],
 | |
|         'amount_more'                             => ['alias' => false, 'needs_context' => true],
 | |
|         'amount_min'                              => ['alias' => true, 'alias_for' => 'amount_more', 'needs_context' => true],
 | |
|         'more'                                    => ['alias' => true, 'alias_for' => 'amount_more', 'needs_context' => true],
 | |
|         'foreign_amount_is'                       => ['alias' => false, 'needs_context' => true],
 | |
|         'foreign_amount'                          => ['alias' => true, 'alias_for' => 'foreign_amount_is', 'needs_context' => true],
 | |
|         'foreign_amount_less'                     => ['alias' => false, 'needs_context' => true],
 | |
|         'foreign_amount_max'                      => ['alias' => true, 'alias_for' => 'foreign_amount_less', 'needs_context' => true],
 | |
|         'foreign_amount_more'                     => ['alias' => false, 'needs_context' => true],
 | |
|         'foreign_amount_min'                      => ['alias' => true, 'alias_for' => 'foreign_amount_more', 'needs_context' => true],
 | |
|         'attachment_name_is'                      => ['alias' => false, 'needs_context' => true],
 | |
|         'attachment'                              => ['alias' => true, 'alias_for' => 'attachment_name_is', 'needs_context' => true],
 | |
|         'attachment_is'                           => ['alias' => true, 'alias_for' => 'attachment_name_is', 'needs_context' => true],
 | |
|         'attachment_name'                         => ['alias' => true, 'alias_for' => 'attachment_name_is', 'needs_context' => true],
 | |
|         'attachment_name_contains'                => ['alias' => false, 'needs_context' => true],
 | |
|         'attachment_name_starts'                  => ['alias' => false, 'needs_context' => true],
 | |
|         'attachment_name_ends'                    => ['alias' => false, 'needs_context' => true],
 | |
|         'attachment_notes'                        => ['alias' => true, 'alias_for' => 'attachment_notes_are', 'needs_context' => true],
 | |
|         'attachment_notes_are'                    => ['alias' => false, 'needs_context' => true],
 | |
|         'attachment_notes_contains'               => ['alias' => false, 'needs_context' => true],
 | |
|         'attachment_notes_contain'                => ['alias' => true, 'alias_for' => 'attachment_notes_contains', 'needs_context' => true],
 | |
|         'attachment_notes_starts'                 => ['alias' => false, 'needs_context' => true],
 | |
|         'attachment_notes_start'                  => ['alias' => true, 'alias_for' => 'attachment_notes_starts', 'needs_context' => true],
 | |
|         'attachment_notes_ends'                   => ['alias' => false, 'needs_context' => true],
 | |
|         'attachment_notes_end'                    => ['alias' => true, 'alias_for' => 'attachment_notes_ends', 'needs_context' => true],
 | |
|         'exists'                                  => ['alias' => false, 'needs_context' => false],
 | |
|         'sepa_ct_is'                              => ['alias' => false, 'needs_context' => true],
 | |
|         'no_external_id'                          => ['alias' => false, 'needs_context' => false],
 | |
|         'any_external_id'                         => ['alias' => false, 'needs_context' => false],
 | |
| 
 | |
|         // based on source or destination balance. Very heavy search.
 | |
|         'source_balance_gte'                      => ['alias' => false, 'needs_context' => true],
 | |
|         'source_balance_gt'                       => ['alias' => false, 'needs_context' => true],
 | |
|         'source_balance_lte'                      => ['alias' => false, 'needs_context' => true],
 | |
|         'source_balance_lt'                       => ['alias' => false, 'needs_context' => true],
 | |
|         'source_balance_is'                       => ['alias' => false, 'needs_context' => true],
 | |
|         'destination_balance_gte'                 => ['alias' => false, 'needs_context' => true],
 | |
|         'destination_balance_gt'                  => ['alias' => false, 'needs_context' => true],
 | |
|         'destination_balance_lte'                 => ['alias' => false, 'needs_context' => true],
 | |
|         'destination_balance_lt'                  => ['alias' => false, 'needs_context' => true],
 | |
|         'destination_balance_is'                  => ['alias' => false, 'needs_context' => true],
 | |
|     ],
 | |
|     /**
 | |
|      * Which query parser to use - 'new' or 'legacy'
 | |
|      */
 | |
|     'query_parser'     => env('QUERY_PARSER_IMPLEMENTATION', 'legacy'),
 | |
| ];
 |