Passed
Push — develop ( 91c1d2...446210 )
by Schlaefer
41s
created

Plugin::onSetupCheck()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 0
1
<?php
2
/**
3
 * Plugin class
4
 */
5
namespace Phile\Plugin\Phile\SetupCheck;
6
7
use Phile\Core\Utility;
8
use Phile\Model\Page;
9
use Phile\Phile;
10
use Phile\Plugin\AbstractPlugin;
11
12
/**
13
 * Phile Setup Plugin Class
14
 *
15
 * @author  PhileCMS
16
 * @link    https://philecms.com
17
 * @license http://opensource.org/licenses/MIT
18
 * @package Phile\Plugin\Phile\PhileSetup
19
 */
20
class Plugin extends AbstractPlugin
21
{
22
    protected $needsSetup;
23
24
    /**
25
 * @var array event subscription
26
*/
27
    protected $events = [
28
        'config_loaded' => 'onConfigLoaded',
29
        'after_render_template' => 'onAfterRenderTemplate'
30
    ];
31
32 26
    protected function onConfigLoaded($eventData)
33
    {
34 26
        $this->needsSetup = empty($eventData['class']->get('encryptionKey'));
35 26
    }
36
37
    /**
38
     * render setup message
39
     *
40
     * @param array $eventData
41
     */
42 2
    protected function onAfterRenderTemplate(array $eventData)
43
    {
44 2
        if (!$this->needsSetup) {
45 1
            return;
46
        }
47
48 1
        $engine = $eventData['templateEngine'];
49
50 1
        $page = new Page($this->getPluginPath('setup.md'));
51 1
        $vars = ['encryption_key' => $this->generateToken()];
52 1
        $this->insertVars($page, $vars);
53
54 1
        $engine->setCurrentPage($page);
55 1
        $eventData['output'] = $engine->render();
56 1
    }
57
58
    /**
59
     * replace twig like variables in page content
60
     *
61
     * @param Page  $page
62
     * @param array $vars
63
     */
64 1
    protected function insertVars(Page $page, array $vars)
65
    {
66 1
        $content = $page->getRawContent();
67 1
        foreach ($vars as $key => $value) {
68 1
            $regex = '/\{\{(\s*?)' . $key . '(\s*?)\}\}/';
69 1
            $content = preg_replace($regex, $value, $content);
70
        }
71 1
        $page->setContent($content);
72 1
    }
73
74
    /**
75
     * generate encryption key
76
     *
77
     * @return string
78
     */
79 1
    protected function generateToken()
80
    {
81 1
        return Utility::generateSecureToken(64);
82
    }
83
}
84