Completed
Push — master ( 82664b...176635 )
by Julito
88:10 queued 58:03
created

SettingsController::getSettingsManager()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
/* For licensing terms, see /license.txt */
3
4
namespace Chamilo\CourseBundle\Controller;
5
6
use Sylius\Bundle\SettingsBundle\Form\Factory\SettingsFormFactoryInterface;
7
use Sylius\Bundle\SettingsBundle\Manager\SettingsManagerInterface;
8
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
9
use Symfony\Component\HttpFoundation\Request;
10
use Symfony\Component\HttpFoundation\Response;
11
use Symfony\Component\Translation\TranslatorInterface;
12
use Symfony\Component\Validator\Exception\ValidatorException;
13
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
14
15
/**
16
 * Settings controller.
17
 *
18
 * @author Paweł Jędrzejewski <[email protected]>
19
 */
20
class SettingsController extends Controller
21
{
22
    /**
23
     * Edit configuration with given namespace.
24
     *
25
     * @param Request $request
26
     * @param string $namespace
27
     * @ParamConverter("course", class="ChamiloCoreBundle:Course", options={"repository_method" = "findOneByCode"})
28
     *
29
     * @return Response
30
     */
31
    public function updateAction(Request $request, $namespace, $course)
32
    {
33
        $manager = $this->getSettingsManager();
34
        $settings = $manager->load($namespace);
35
36
        $form = $this
37
            ->getSettingsFormFactory()
38
            ->create($namespace);
39
40
        $form->setData($settings);
41
42
        if ($form->handleRequest($request)->isValid()) {
43
            $messageType = 'success';
44
            try {
45
                $manager->setCourse($course);
46
                $manager->saveSettings($namespace, $form->getData());
47
                $message = $this->getTranslator()->trans(
48
                    'sylius.settings.update',
49
                    array(),
50
                    'flashes'
51
                );
52
            } catch (ValidatorException $exception) {
53
                $message = $this->getTranslator()->trans(
54
                    $exception->getMessage(),
55
                    array(),
56
                    'validators'
57
                );
58
                $messageType = 'error';
59
            }
60
            $request->getSession()->getBag('flashes')->add(
61
                $messageType,
62
                $message
63
            );
64
65
            if ($request->headers->has('referer')) {
66
                return $this->redirect($request->headers->get('referer'));
67
            }
68
        }
69
70
        return $this->render(
71
            $request->attributes->get(
72
                'template',
73
                'ChamiloCourseBundle:Settings:update.html.twig'
74
            ),
75
            array(
76
                'settings' => $settings,
77
                'form' => $form->createView(),
78
            )
79
        );
80
    }
81
82
    /**
83
     * Get settings manager.
84
     *
85
     * @return SettingsManagerInterface
86
     */
87
    protected function getSettingsManager()
88
    {
89
        return $this->get('chamilo_course.settings.manager');
90
    }
91
92
    /**
93
     * Get settings form factory.
94
     *
95
     * @return SettingsFormFactoryInterface
96
     */
97
    protected function getSettingsFormFactory()
98
    {
99
        return $this->get('chamilo_course.settings.form_factory');
100
    }
101
102
    /**
103
     * Get translator.
104
     *
105
     * @return TranslatorInterface
106
     */
107
    protected function getTranslator()
108
    {
109
        return $this->get('translator');
110
    }
111
}
112