46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Traits;
 | |
| 
 | |
| trait SearchString
 | |
| {
 | |
|     /**
 | |
|      * Get the value of a name in search string
 | |
|      * Example: search=type:customer year:2020 account_id:20
 | |
|      * Example: issued_at>=2021-02-01 issued_at<=2021-02-10 account_id:49
 | |
|      */
 | |
|     public function getSearchStringValue(string $name, string $default = '', string $input = ''): string|array
 | |
|     {
 | |
|         $value = $default;
 | |
| 
 | |
|         $input = $input ?: request('search', '');
 | |
| 
 | |
|         // $manager = $this->getSearchStringManager();
 | |
|         // $parsed = $manager->parse($input);
 | |
| 
 | |
|         $columns = explode(' ', $input);
 | |
| 
 | |
|         foreach ($columns as $column) {
 | |
|             $variable = preg_split('/:|>?<?=/', $column);
 | |
| 
 | |
|             if (empty($variable[0]) || ($variable[0] != $name) || empty($variable[1])) {
 | |
|                 continue;
 | |
|             }
 | |
| 
 | |
|             if (strpos($column, ':')) {
 | |
|                 $value = $variable[1];
 | |
| 
 | |
|                 break;
 | |
|             }
 | |
| 
 | |
|             if (! is_array($value)) {
 | |
|                 $value = [];
 | |
|             }
 | |
| 
 | |
|             $value[] = $variable[1];
 | |
|         }
 | |
| 
 | |
|         return $value;
 | |
|     }
 | |
| }
 |