Passed
Push — master ( 19e3b7...6548a2 )
by Andreas
23:32
created

_prepare_toolbar()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 25
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 24
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 16
nc 1
nop 0
dl 0
loc 25
ccs 24
cts 24
cp 1
crap 1
rs 9.7333
c 0
b 0
f 0
1
<?php
2
/**
3
 * @package midgard.admin.asgard
4
 * @author CONTENT CONTROL http://www.contentcontrol-berlin.de/
5
 * @copyright CONTENT CONTROL http://www.contentcontrol-berlin.de/
6
 * @license http://www.gnu.org/licenses/gpl.html GNU General Public License
7
 */
8
9
use midcom\datamanager\datamanager;
10
use Symfony\Component\HttpFoundation\Request;
11
12
/**
13
 * Shell interface
14
 *
15
 * @package midgard.admin.asgard
16
 */
17
class midgard_admin_asgard_handler_shell extends midcom_baseclasses_components_handler
18
{
19
    use midgard_admin_asgard_handler;
20
21 1
    public function _handler_shell(Request $request, array &$data)
22
    {
23 1
        midcom::get()->auth->require_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin');
24
25 1
        $controller = datamanager::from_schemadb($this->_config->get('schemadb_shell'))
0 ignored issues
show
Bug introduced by
It seems like $this->_config->get('schemadb_shell') can also be of type false; however, parameter $path of midcom\datamanager\datamanager::from_schemadb() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

25
        $controller = datamanager::from_schemadb(/** @scrutinizer ignore-type */ $this->_config->get('schemadb_shell'))
Loading history...
26 1
            ->get_controller();
27
28 1
        switch ($controller->handle($request)) {
29 1
            case 'save':
30
                $data['code'] = $controller->get_form_values()['code'];
31
                break;
32
33 1
            case 'edit':
34 1
                foreach ($controller->get_errors() as $error) {
35
                    midcom::get()->uimessages->add($this->_l10n->get($this->_component), $error, 'error');
36
                }
37
        }
38
39 1
        $data['controller'] = $controller;
40 1
        $data['view_title'] = $this->_l10n->get('shell');
41
42 1
        midcom::get()->head->add_jsfile(MIDCOM_STATIC_URL . '/midgard.admin.asgard/shell.js');
43
44 1
        $data['asgard_toolbar'] = $this->_prepare_toolbar();
45
46
        // Set the breadcrumb data
47 1
        $this->add_breadcrumb($this->router->generate('welcome'), $this->_l10n->get($this->_component));
48 1
        $this->add_breadcrumb($this->router->generate('shell'), $data['view_title']);
49 1
        return $this->get_response();
50
    }
51
52 1
    private function _prepare_toolbar() : midgard_admin_asgard_toolbar
53
    {
54 1
        $toolbar = new midgard_admin_asgard_toolbar();
55 1
        $buttons = [
56 1
            [
57 1
                MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('save in browser'),
58 1
                MIDCOM_TOOLBAR_GLYPHICON => 'floppy-o',
59 1
                MIDCOM_TOOLBAR_ACCESSKEY => 's',
60 1
                MIDCOM_TOOLBAR_OPTIONS => ['id' => 'save-script']
61 1
            ],
62 1
            [
63 1
                MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('restore from browser'),
64 1
                MIDCOM_TOOLBAR_GLYPHICON => 'recycle',
65 1
                MIDCOM_TOOLBAR_ACCESSKEY => 'r',
66 1
                MIDCOM_TOOLBAR_OPTIONS => ['id' => 'restore-script']
67 1
            ],
68 1
            [
69 1
                MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('clear all'),
70 1
                MIDCOM_TOOLBAR_GLYPHICON => 'trash',
71 1
                MIDCOM_TOOLBAR_ACCESSKEY => 'r',
72 1
                MIDCOM_TOOLBAR_OPTIONS => ['id' => 'clear-script']
73 1
            ]
74 1
        ];
75 1
        $toolbar->add_items($buttons);
76 1
        return $toolbar;
77
    }
78
79 1
    public function _show_shell(string $handler_id, array &$data)
80
    {
81 1
        if (!isset($_GET['ajax'])) {
82 1
            midcom_show_style('midgard_admin_asgard_shell');
83
        } else {
84
            midcom::get()->cache->content->enable_live_mode();
85
            ob_implicit_flush();
86
            midcom_show_style('midgard_admin_asgard_shell_runner');
87
            ob_implicit_flush(false);
88
        }
89
    }
90
}
91