Skip to content

Commit 15bf09d

Browse files
committed
Merge branch 'filterjust' into dev
2 parents 8d2216f + 2e8acf9 commit 15bf09d

2 files changed

Lines changed: 84 additions & 21 deletions

File tree

src/Controllers/FiltersController.php

Lines changed: 78 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,14 @@ class FiltersController extends Controller
1515
use CacheVars, TicketFilters;
1616

1717
// $a_filters is in TicketFilters trait
18-
19-
// Filters that can be called via /filteronly/
20-
private $a_only_filters = ['category', 'owner', 'agent'];
21-
18+
2219
// Ticket list names and related route name
2320
private $a_lists = [
2421
'newest' => '-newest',
2522
'active' => '.index',
2623
'complete' => '-complete'
2724
];
28-
25+
2926
/*
3027
* Update a single filter
3128
*/
@@ -37,10 +34,10 @@ public function manage(Request $request, $filter, $value)
3734
if ($value == 'remove') {
3835
// Delete filter
3936
$request->session()->forget('panichd_filter_'.$filter);
40-
37+
4138
// Check all filters
4239
$this->validateFilters($request);
43-
40+
4441
} else {
4542
// Validate and add a filter
4643
$this->addAFilter($request, $filter, $value);
@@ -49,29 +46,89 @@ public function manage(Request $request, $filter, $value)
4946

5047
return \Redirect::back();
5148
}
52-
49+
5350
/*
5451
* Delete all filters and apply only the selected one
5552
*/
5653
public function only(Request $request, $filter, $value, $list)
5754
{
58-
if (in_array($filter, $this->a_only_filters) and in_array($list, array_keys($this->a_lists))){
59-
55+
if (in_array($list, array_keys($this->a_lists))){
56+
6057
// Delete each filter from session
6158
foreach ($this->a_filters as $delete){
6259
$request->session()->forget('panichd_filter_'.$delete);
6360
}
64-
61+
6562
// Validate and add a filter
6663
if ($this->addAFilter($request, $filter, $value)){
6764
// Redirect to specified route
6865
return redirect()->route(Setting::grab('main_route').$this->a_lists[$list]);
6966
}
7067
}
71-
68+
7269
return \Redirect::back();
7370
}
74-
71+
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+
75132
/*
76133
* Add a filter and validate it
77134
*
@@ -81,18 +138,18 @@ public function addAFilter($request, $filter, $value)
81138
{
82139
// Add filter
83140
$request->session()->put('panichd_filter_'.$filter, $value);
84-
141+
85142
// Check all filters
86143
list($request, $filters_count) = $this->validateFilters($request);
87-
144+
88145
if ($filters_count > 0) {
89146
// General filter check
90147
$request->session()->put('panichd_filters','yes');
91148
}
92-
149+
93150
return $request->session()->exists('panichd_filter_'.$filter);
94151
}
95-
152+
96153
/*
97154
* Remove all filters
98155
*/
@@ -102,15 +159,15 @@ public function removeall(Request $request, $list = null)
102159
foreach ($this->a_filters as $filter){
103160
$request->session()->forget('panichd_filter_'.$filter);
104161
}
105-
162+
106163
// General filter uncheck
107164
$request->session()->forget('panichd_filters');
108-
165+
109166
if ($list != "" and array_key_exists($list, $this->a_lists)){
110167
// Redirect to specified route
111168
return redirect()->route(Setting::grab('main_route').$this->a_lists[$list]);
112169
}
113-
170+
114171
return \Redirect::back();
115172
}
116-
}
173+
}

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)