SubresourceController::deleteSub()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 4
1
<?php
2
3
namespace KI\CoreBundle\Controller;
4
5
use Symfony\Component\HttpFoundation\Response;
6
7
// Fonctions générales pour servir une sous ressource de type REST (exemple: Serie -> Episode)
8
class SubresourceController extends ResourceController
9
{
10
    /**
11
     * Renvoie toutes les sous ressources associées à un objet
12
     * @param  string  $slug   Le slug de l'entité parente
13
     * @param  string  $name   Le nom de la classe fille
14
     * @param  boolean $simple Si vrai, considère une relation ManyToMany normale,
15
     *                         Sinon considère qu'il y a des attributs et donc
16
     *                         qu'il y a une entité intermédiaire
17
     * @param  boolean $auth   Un override éventuel pour le check des permissions
18
     */
19
    protected function getAllSub($slug, $name, $simple = true, $auth = false)
20
    {
21
        $this->trust(!$this->is('EXTERIEUR') || $auth);
22
        $item = $this->findBySlug($slug);
23
24
        if ($simple) {
25
            $method = 'get'.ucfirst($name).'s';
26
            return $item->$method();
27
        } else {
28
            // Récupère le repository de l'entité intermédiaire
29
            $repository = $this->manager->getRepository('KI'.$this->bundle.'Bundle:'.$this->className.$name);
30
            return $repository->findBy([strtolower($this->className) => $item]);
31
        }
32
    }
33
34
    /**
35
     * Route GET générique pour une sous ressource
36
     * @param  string  $slug Le slug de l'entité parente
37
     * @param  string  $name Le nom de la classe fille
38
     * @param  string  $id   L'identifiant de l'entité fille
39
     * @param  boolean $auth Un override éventuel pour le check des permissions
40
     * @return object
41
     */
42 View Code Duplication
    protected function getOneSub($slug, $name, $id, $auth = false)
43
    {
44
        $this->findBySlug($slug);
45
46
        $this->switchClass($name);
47
        $out = $this->getOne($id, $auth);
48
        $this->switchClass();
49
50
        return $out;
51
    }
52
53
    /**
54
     * Route PATCH générique pour une sous ressource
55
     * @param  string  $slug Le slug de l'entité parente
56
     * @param  string  $name Le nom de la classe fille
57
     * @param  string  $id   L'identifiant de l'entité fille
58
     * @param  boolean $auth Un override éventuel pour le check des permissions
59
     * @return array
60
     */
61 View Code Duplication
    protected function patchSub($slug, $name, $id, $auth = false)
62
    {
63
        $this->findBySlug($slug);
64
65
        $this->switchClass($name);
66
        $out = $this->patch($id, $auth);
67
        $this->switchClass();
68
69
        return $out;
70
    }
71
72
    /**
73
     * Route DELETE générique pour une sous ressource
74
     * @param  string  $slug Le slug de l'entité parente
75
     * @param  string  $name Le nom de la classe fille
76
     * @param  string  $id   L'identifiant de l'entité fille
77
     * @param  boolean $auth Un override éventuel pour le check des permissions
78
     */
79
    protected function deleteSub($slug, $name, $id, $auth = false)
80
    {
81
        $this->findBySlug($slug);
82
83
        $this->switchClass($name);
84
        $this->delete($id, $auth);
85
        $this->switchClass();
86
    }
87
}
88