Completed
Push — master ( 7ceac0...7f8a05 )
by Paras
17s
created

PermissionSearchTranslationTrait   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 7
eloc 15
dl 0
loc 40
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A title() 0 3 1
A applySearch() 0 21 6
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: work
5
 * Date: 2018/12/15
6
 * Time: 10:26
7
 */
8
9
namespace Insenseanalytics\LaravelNovaPermission;
10
11
12
trait PermissionSearchTranslationTrait {
13
14
	use TranslationHandelTrait;
15
16
	/**
17
	 * Override the applyFilters method,title field translation
18
	 */
19
	public function title() {
20
21
		return __('laravel-nova-permission::permissions.display_names.'.$this->name);
0 ignored issues
show
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

21
		return /** @scrutinizer ignore-call */ __('laravel-nova-permission::permissions.display_names.'.$this->name);
Loading history...
22
	}
23
24
	/**
25
	 * Rewrite the applySearch method to apply translation field search
26
	 *
27
	 * @param  \Illuminate\Database\Eloquent\Builder  $query
28
	 * @param  string  $search
29
	 * @return \Illuminate\Database\Eloquent\Builder
30
	 */
31
	protected static function applySearch($query, $search)
32
	{
33
		return $query->where(function ($query) use ($search) {
34
			if (is_numeric($search) && in_array($query->getModel()->getKeyType(), ['int', 'integer'])) {
35
				$query->orWhere($query->getModel()->getQualifiedKeyName(), $search);
36
			}
37
38
			$model = $query->getModel();
39
40
			$connectionType = $query->getModel()->getConnection()->getDriverName();
41
42
			$likeOperator = $connectionType == 'pgsql' ? 'ilike' : 'like';
43
44
			$trans_search = array_keys(preg_grep("/$search/",array_dot(__('laravel-nova-permission::permissions.display_names'))));
0 ignored issues
show
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

44
			$trans_search = array_keys(preg_grep("/$search/",array_dot(/** @scrutinizer ignore-call */ __('laravel-nova-permission::permissions.display_names'))));
Loading history...
45
46
			foreach (static::searchableColumns() as $column) {
47
				$qualify_column = $model->qualifyColumn($column);
48
				foreach ($trans_search as $t_search){
49
					$query->orWhere($qualify_column, $likeOperator, '%'.$t_search.'%');
50
				}
51
				$query->orWhere($qualify_column, $likeOperator, '%'.$search.'%');
52
			}
53
		});
54
	}
55
}