Completed
Push — master ( 667dde...0fb228 )
by Julito
13:48
created

SettingsController::getTranslator()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

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