Passed
Push — master ( faedb3...dd9457 )
by Fran
02:57
created

ConfigController::getConfigParams()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 7
nc 2
nop 0
dl 0
loc 10
ccs 8
cts 8
cp 1
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
namespace PSFS\controller;
3
4
use PSFS\base\config\Config;
5
use PSFS\base\config\ConfigForm;
6
use PSFS\base\Logger;
7
use PSFS\base\Router;
8
use PSFS\base\Security;
9
use PSFS\base\types\helpers\GeneratorHelper;
10
use PSFS\controller\base\Admin;
11
12
/**
13
 * Class ConfigController
14
 * @package PSFS\controller
15
 */
16
class ConfigController extends Admin
17
{
18
19
    /**
20
     * Servicio que devuelve los parámetros disponibles
21
     * @GET
22
     * @route /admin/config/params
23
     * @label Parámetros de configuración de PSFS
24
     * @visible false
25
     * @return mixed
26
     */
27 1
    public function getConfigParams()
28
    {
29 1
        $response = array_merge(Config::$required, Config::$optional);
30 1
        $domains = Router::getInstance()->getDomains();
31 1
        foreach ($domains as $domain => $routes) {
32 1
            $pDomain = str_replace('@', '', $domain);
33 1
            $pDomain = str_replace('/', '', $pDomain);
34 1
            $response[] = strtolower($pDomain) . '.api.secret';
35
        }
36 1
        return $this->json($response);
37
    }
38
39
    /**
40
     * Método que gestiona la configuración de las variables
41
     * @GET
42
     * @Route /admin/config
43
     * @return string|null
44
     * @throws \HttpException
45
     */
46
    public function config()
47
    {
48
        Logger::log("Config loaded executed by " . $this->getRequest()->getRequestUri());
49
        /* @var $form \PSFS\base\config\ConfigForm */
50
        $form = new ConfigForm(Router::getInstance()->getRoute('admin-config'), Config::$required, Config::$optional, Config::getInstance()->dumpConfig());
51
        $form->build();
52
        return $this->render('welcome.html.twig', array(
53
            'text' => t("Bienvenido a PSFS"),
54
            'config' => $form,
55
            'typeahead_data' => array_merge(Config::$required, Config::$optional),
56
        ));
57
    }
58
59
    /**
60
     * Servicio que guarda la configuración de la plataforma
61
     * @POST
62
     * @route /admin/config
63
     * @visible false
64
     * @return string
65
     * @throws \HttpException
66
     */
67
    public function saveConfig()
68
    {
69
        Logger::log(t("Guardando configuración"), LOG_INFO);
70
        /* @var $form \PSFS\base\config\ConfigForm */
71
        $form = new ConfigForm(Router::getInstance()->getRoute('admin-config'), Config::$required, Config::$optional, Config::getInstance()->dumpConfig());
72
        $form->build();
73
        $form->hydrate();
74
        if ($form->isValid()) {
75
            $debug = Config::getInstance()->getDebugMode();
76
            $newDebug = $form->getFieldValue("debug");
77
            if (Config::save($form->getData(), $form->getExtraData())) {
78
                Logger::log(t('Configuración guardada correctamente'));
79
                //Verificamos si tenemos que limpiar la cache del DocumentRoot
80
                if (boolval($debug) !== boolval($newDebug)) {
81
                    GeneratorHelper::clearDocumentRoot();
82
                }
83
                Security::getInstance()->setFlash("callback_message", t("Configuración actualizada correctamente"));
84
                Security::getInstance()->setFlash("callback_route", $this->getRoute("admin-config", true));
85
            } else {
86
                throw new \HttpException(t('Error al guardar la configuración, prueba a cambiar los permisos'), 403);
87
            }
88
        }
89
        return $this->render('welcome.html.twig', array(
90
            'text' => t("Bienvenido a PSFS"),
91
            'config' => $form,
92
            'typeahead_data' => array_merge(Config::$required, Config::$optional),
93
        ));
94
    }
95
}