Skip to content

Commit 5978e60

Browse files
committed
Add filterjust route to allow setting many filters by url
1 parent 88e1b73 commit 5978e60

2 files changed

Lines changed: 66 additions & 0 deletions

File tree

src/Controllers/FiltersController.php

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,66 @@ public function only(Request $request, $filter, $value, $list)
6969
return \Redirect::back();
7070
}
7171

72+
/*
73+
* Delete all previous filters and apply just the valid ones from the requested
74+
* You may specify a ticket list as a final parameter (like URL/complete) o as key/value (like URL/list/complete)
75+
*/
76+
public function just(Request $request, $parameters)
77+
{
78+
// Get URL parameters and replace a_current array with them
79+
$a_temp = explode('/', $parameters);
80+
$a_valid = [];
81+
$list = false;
82+
83+
$i = 0;
84+
$filter = "";
85+
foreach($a_temp as $param){
86+
$i++;
87+
if ($filter == ""){
88+
if (!$list and $i == count($a_temp) and array_key_exists($param, $this->a_lists)){
89+
// Allow ticket list as a last parameter if not set as list/list_key in previous parameters
90+
$list = $param;
91+
}else
92+
$filter = $param;
93+
}else{
94+
if(in_array($filter, $this->a_filters)){
95+
// Add filter to validate
96+
$a_valid[$filter] = $param;
97+
}elseif($filter == 'list' and array_key_exists($param, $this->a_lists)){
98+
// Select ticket list
99+
$list = $param;
100+
}
101+
$filter = "";
102+
}
103+
}
104+
105+
// Delete each filter from session
106+
foreach ($this->a_filters as $delete){
107+
$request->session()->forget('panichd_filter_'.$delete);
108+
}
109+
110+
if ($a_valid){
111+
foreach ($a_valid as $filter => $value){
112+
// Add filter
113+
$request->session()->put('panichd_filter_'.$filter, $value);
114+
}
115+
116+
// Check all filters
117+
list($request, $filters_count) = $this->validateFilters($request);
118+
119+
if ($filters_count > 0) {
120+
// General filter check
121+
$request->session()->put('panichd_filters','yes');
122+
}
123+
}
124+
125+
if ($list){
126+
// Redirect to specified list
127+
return redirect()->route(Setting::grab('main_route') . $this->a_lists[$list]);
128+
}else
129+
return redirect()->route(Setting::grab('main_route') . '.index');
130+
}
131+
72132
/*
73133
* Add a filter and validate it
74134
*

src/routes.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,14 @@
116116
Route::get("$main_route_path/filter/{filter}/{value}", 'PanicHD\PanicHD\Controllers\FiltersController@manage');
117117

118118
// Use single filter in specified list
119+
// TODO: Delete this route and controller method. Use filterjust instead
119120
Route::get("$main_route_path/filteronly/{filter}/{value}/{list}", 'PanicHD\PanicHD\Controllers\FiltersController@only')
120121
->name("$main_route-filteronly");
122+
123+
// Use just the specified filters (one or many)
124+
Route::get("$main_route_path/filterjust/{parameters?}", 'PanicHD\PanicHD\Controllers\FiltersController@just')
125+
->where('parameters', '(.*)')
126+
->name("$main_route-filterjust");
121127
});
122128

123129
Route::group(['middleware' => 'PanicHD\PanicHD\Middleware\IsAdminMiddleware'], function () use ($admin_route, $admin_route_path) {

0 commit comments

Comments
 (0)