Completed
Push — fm-support ( 0de470...22a3ee )
by Konstantinos
04:53
created

BanController   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 8
c 1
b 0
f 0
lcom 1
cbo 8
dl 0
loc 57
ccs 3
cts 3
cp 1
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A showAction() 0 4 1
A createAction() 0 6 1
A editAction() 0 4 1
A deleteAction() 0 4 1
A unbanAction() 0 17 3
A listAction() 0 14 1
1
<?php
2
3
use Symfony\Component\HttpFoundation\RedirectResponse;
4
use Symfony\Component\HttpFoundation\Request;
5
6
class BanController extends CRUDController
7
{
8
    public function showAction(Ban $ban)
9
    {
10
        return array("ban" => $ban);
11
    }
12
13
    public function listAction(Request $request)
14
    {
15
        $currentPage = $request->query->get('page', 1);
16
17
        $qb = $this->getQueryBuilder()
18
            ->sortBy('updated')->reverse()
19
            ->limit(15)->fromPage($currentPage);
20
21
        return array(
22
            "bans"        => $qb->getModels(),
23
            "currentPage" => $currentPage,
24
            "totalPages"  => $qb->countPages()
25
        );
26
    }
27
28 1
    public function createAction(Player $me, Player $player = null)
29
    {
30 1
        $this->data->set('player', $player);
31
32 1
        return $this->create($me);
33
    }
34
35
    public function editAction(Player $me, Ban $ban)
36
    {
37
        return $this->edit($ban, $me, "ban");
38
    }
39
40
    public function deleteAction(Player $me, Ban $ban)
41
    {
42
        return $this->delete($ban, $me);
43
    }
44
45
    public function unbanAction(Player $me, Ban $ban)
46
    {
47
        if (!$this->canEdit($me, $ban)) {
48
            throw new ForbiddenException("You are not allowed to unban a player.");
49
        } elseif ($ban->isExpired()) {
50
            throw new ForbiddenException("Sorry, this ban has already expired.");
51
        }
52
53
        $victim = $ban->getVictim();
54
55
        return $this->showConfirmationForm(function () use ($ban) {
56
            $ban->expire();
57
58
            return new RedirectResponse($ban->getUrl());
59
        }, "Are you sure you want to unban <strong>{$victim->getEscapedUsername()}</strong>?",
60
            "{$victim->getUsername()}'s ban has been deactivated successfully", "Unban");
61
    }
62
}
63