Bristol SU Support Package
FilterServiceProvider.php
Go to the documentation of this file.
1 <?php
2 
4 
5 use BristolSU\Support\Filters\Contracts\FilterFactory as FilterFactoryContract;
8 use BristolSU\Support\Filters\Contracts\FilterManager as FilterManagerContract;
21 
25 class FilterServiceProvider extends ServiceProvider
26 {
34  public function register()
35  {
36  $this->app->bind(FilterRepositoryContract::class, FilterRepository::class);
37  $this->app->bind(FilterFactoryContract::class, FilterFactory::class);
38  $this->app->bind(FilterTesterContract::class, FilterTester::class);
39 
40  $this->app->bind(FilterInstanceContract::class, FilterInstance::class);
41  $this->app->bind(FilterInstanceRepositoryContract::class, FilterInstanceRepository::class);
42  $this->app->singleton(FilterManagerContract::class, FilterManager::class);
43 
44  }
45 
52  public function boot()
53  {
54  if($this->app['config']->get('support.caching.filters.enabled', true)) {
55  $this->app->extend(FilterTesterContract::class, function(FilterTesterContract $filterTester) {
56  return new CachedFilterTesterDecorator($filterTester, $this->app->make(Cache::class));
57  });
58  }
59 
60  $this->app->call([$this, 'registerFilters']);
61  $this->commands([CacheFilters::class]);
62  }
63 
71  public function registerFilters(FilterManagerContract $filterManager)
72  {
73  // User Filters
74  $filterManager->register('user_email_is', UserEmailIs::class);
75  $filterManager->register('user_tagged', UserTagged::class);
76 
77  // Group Filters
78  $filterManager->register('group_name_is', GroupNameIs::class);
79  $filterManager->register('group_tagged', GroupTagged::class);
80 
81  // Role Filters
82  $filterManager->register('role_has_position', RoleHasPosition::class);
83  $filterManager->register('role_tagged', RoleTagged::class);
84  }
85 }
registerFilters(FilterManagerContract $filterManager)