Completed
Push — master ( 51e924...41672a )
by Iurii
01:25
created

Base::replaceTemplates()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 3
nc 2
nop 1
1
<?php
2
3
/**
4
 * @package Base
5
 * @author Iurii Makukh <[email protected]>
6
 * @copyright Copyright (c) 2017, Iurii Makukh <[email protected]>
7
 * @license https://www.gnu.org/licenses/gpl-3.0.en.html GPL-3.0+
8
 */
9
10
namespace gplcart\modules\base;
11
12
use gplcart\core\Module,
13
    gplcart\core\Config;
14
15
/**
16
 * Main class for Base module
17
 */
18
class Base extends Module
19
{
20
21
    /**
22
     * @param Config $config
23
     */
24
    public function __construct(Config $config)
25
    {
26
        parent::__construct($config);
27
    }
28
29
    /* ---------------------- Hooks ---------------------- */
30
31
    /**
32
     * Implements hook "route.list"
33
     * @param array $routes
34
     */
35
    public function hookRouteList(array &$routes)
36
    {
37
        $routes['install/(\d+)'] = array(
38
            'handlers' => array(
39
                'controller' => array('gplcart\\modules\\base\\controllers\\Install', 'stepInstall')
40
            )
41
        );
42
    }
43
44
    /**
45
     * Implements hook "install.handlers"
46
     * @param array $handlers
47
     */
48
    public function hookInstallHandlers(array &$handlers)
49
    {
50
        $this->setInstallHandlers($handlers);
51
    }
52
53
    /**
54
     * Implements hook "install.before"
55
     * @param array $data
56
     * @param mixed $result
57
     */
58
    public function hookInstallBefore(array $data, &$result)
59
    {
60
        $this->checkRequiredModules($data, $result);
61
    }
62
63
    /**
64
     * Implements hook "template.render"
65
     * @param array $templates
66
     */
67
    public function hookTemplateRender(array &$templates)
68
    {
69
        $this->replaceTemplates($templates);
70
    }
71
72
    /* ---------------------- Helpers ---------------------- */
73
74
    /**
75
     * Adds installation handlers
76
     * @param array $handlers
77
     */
78
    protected function setInstallHandlers(array &$handlers)
79
    {
80
        $language = $this->getLanguage();
81
82
        $handlers['base'] = array(
83
            'module' => 'base',
84
            'title' => $language->text('Base'),
85
            'steps' => array(
86
                1 => array('title' => $language->text('Configure modules')),
87
                2 => array('title' => $language->text('Create demo')),
88
                3 => array('title' => $language->text('Finish installation'))
89
            ),
90
            'handlers' => array(
91
                'install' => array('gplcart\\modules\\base\\handlers\\Installer', 'install'),
92
                'install_1' => array('gplcart\\modules\\base\\handlers\\Installer', 'installModules'),
93
                'install_2' => array('gplcart\\modules\\base\\handlers\\Installer', 'installDemo'),
94
                'install_3' => array('gplcart\\modules\\base\\handlers\\Installer', 'installFinish')
95
            )
96
        );
97
    }
98
99
    /**
100
     * Check if all required modules in place
101
     * @param array $data
102
     * @param array $result
103
     */
104
    protected function checkRequiredModules(array $data, &$result)
105
    {
106
        /* @var $model \gplcart\modules\base\models\Installer */
107
        $model = $this->getModel('Installer', 'base');
108
109
        if ($data['installer'] === 'base' && empty($data['step']) && !$model->hasAllRequiredModules()) {
110
            $result = array(
111
                'redirect' => '',
112
                'severity' => 'warning',
113
                'message' => $this->getLanguage()->text('You cannot use this installer because some modules are missed in your distribution')
114
            );
115
        }
116
    }
117
118
    /**
119
     * Replace system templates
120
     * @param array $templates
121
     */
122
    protected function replaceTemplates(array &$templates)
123
    {
124
        if (substr($templates[0], -15) === 'dashboard/intro' && $this->config->get('installer') === 'base') {
125
            $templates[0] = $this->getTemplate('base', 'intro');
126
        }
127
    }
128
129
}
130