MenuMiddleware::handle()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 20
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 0
Metric Value
dl 0
loc 20
ccs 0
cts 15
cp 0
rs 9.2
c 0
b 0
f 0
cc 4
eloc 10
nc 4
nop 3
crap 20
1
<?php namespace NukaCode\Menu\Middleware;
2
3
use Closure;
4
5
/**
6
 * Class MenuMiddleware
7
 *
8
 * @package NukaCode\Menu\Middleware
9
 */
10
class MenuMiddleware {
11
    /**
12
     * Run the request filter.
13
     *
14
     * This middleware supports laravel 5.0 and 5.1.
15
     * In laravel 5.0 you must specify an additional array option
16
     * with the slug you wish to active. In 5.1 you can just add
17
     * the slug to the middleware after menu:.
18
     *
19
     * @param  \Illuminate\Http\Request $request
20
     * @param  \Closure                 $next
21
     * @param  string|null              $active
22
     *
23
     * @return mixed
24
     */
25
    public function handle($request, Closure $next, $active = null)
26
    {
27
        if ($active !== null) {
28
            // Laravel 5.1 [middleware => menu:slug]
29
            \Menu::setActive($active);
30
        } else {
31
            // Laravel 5.0 [middleware => menu, active => slug]
32
            $route = $request->route();
33
34
            if ($route) {
35
                $actions = $route->getAction();
36
37
                if (array_key_exists('active', $actions)) {
38
                    \Menu::setActive($actions['active']);
39
                }
40
            }
41
        }
42
43
        return $next($request);
44
    }
45
46
}