Episodes   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 56
Duplicated Lines 30.36 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 11
c 2
b 0
f 0
lcom 0
cbo 0
dl 17
loc 56
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
B index_onDelete() 0 16 6
A listExtendQuery() 17 17 4

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php namespace CosmicRadioTV\Podcast\Controllers;
2
use Flash;
3
use BackendMenu;
4
use BackendAuth;
5
use Backend\Classes\Controller;
6
use CosmicRadioTV\Podcast\Models\Episode;
7
use CosmicRadioTV\Podcast\Models\Show;
8
/**
9
 * Episodes Back-end Controller
10
 */
11
class Episodes extends Controller
12
{
13
    public $implement = [
14
        'Backend.Behaviors.FormController',
15
        'Backend.Behaviors.ListController',
16
        'Backend.Behaviors.RelationController',
17
    ];
18
19
    public $formConfig = 'config_form.yaml';
20
    public $listConfig = 'config_list.yaml';
21
    public $relationConfig = 'config_relation.yaml';
22
23
    public $requiredPermissions = ['cosmicradiotv.podcast.access_episode*'];
24
25
    public function __construct()
26
    {
27
        parent::__construct();
28
29
        BackendMenu::setContext('CosmicRadioTV.Podcast', 'podcast', 'episodes');
30
    }
31
32
    public function index_onDelete()
33
    {
34
        if (($checkedIds = post('checked')) && is_array($checkedIds) && count($checkedIds)) {
35
36
            foreach ($checkedIds as $episodeId) {
37
                if (!$episode = Episode::find($episodeId))
38
                    continue;
39
40
                $episode->delete();
41
            }
42
43
            Flash::success(e(trans('cosmicradiotv.podcast::lang.episode.delete_success_multiple')));
44
        }
45
46
        return $this->listRefresh();
47
    }
48
49 View Code Duplication
    public function listExtendQuery($query, $definition = null) {
50
        $user = BackendAuth::getUser();
51
52
        if (!$user->hasAccess(['cosmicradiotv.podcast.access_episodes_all'])) {
53
            $shows = Show::all();
54
            $show_ids_allowed = [];
55
56
            foreach ($shows as $show) {
57
                if ($user->hasAccess(['cosmicradiotv.podcast.access_show_'.$show->slug])) {
58
                    $show_ids_allowed[] = $show->id;
59
                }
60
            }
61
62
            $query->whereIn('show_id',$show_ids_allowed);
63
        }
64
65
    }
66
}