Welcome to mirror list, hosted at ThFree Co, Russian Federation.

DbAdapterCheck.php « Diagnostic « Diagnostics « plugins - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 3f398c478378c953e1654390c185febaa605da25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
/**
 * Piwik - free/libre analytics platform
 *
 * @link https://matomo.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 *
 */
namespace Piwik\Plugins\Diagnostics\Diagnostic;

use Piwik\Db\Adapter;
use Piwik\SettingsServer;
use Piwik\Translation\Translator;

/**
 * Check supported DB adapters are available.
 */
class DbAdapterCheck implements Diagnostic
{
    /**
     * @var Translator
     */
    private $translator;

    public function __construct(Translator $translator)
    {
        $this->translator = $translator;
    }

    public function execute()
    {
        $results = array();
        $results[] = $this->checkPdo();
        $results = array_merge($results, $this->checkDbAdapters());

        return $results;
    }

    private function checkPdo()
    {
        $label = 'PDO ' . $this->translator->translate('Installation_Extension');

        if (extension_loaded('PDO')) {
            $status = DiagnosticResult::STATUS_OK;
        } else {
            $status = DiagnosticResult::STATUS_WARNING;
        }

        return DiagnosticResult::singleResult($label, $status);
    }

    private function checkDbAdapters()
    {
        $results = array();
        $adapters = Adapter::getAdapters();

        foreach ($adapters as $adapter => $port) {
            $label = $adapter . ' ' . $this->translator->translate('Installation_Extension');

            $results[] = DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_OK);
        }

        if (empty($adapters)) {
            $label = $this->translator->translate('Installation_SystemCheckDatabaseExtensions');
            $comment = $this->translator->translate('Installation_SystemCheckDatabaseHelp');

            $result = DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_ERROR, $comment);
            $result->setLongErrorMessage($this->getLongErrorMessage());

            $results[] = $result;
        }

        return $results;
    }

    private function getLongErrorMessage()
    {
        $message = '<p>';

        if (SettingsServer::isWindows()) {
            $message .= $this->translator->translate(
                'Installation_SystemCheckWinPdoAndMysqliHelp',
                array('<br /><br /><code>extension=php_mysqli.dll</code><br /><code>extension=php_pdo.dll</code><br /><code>extension=php_pdo_mysql.dll</code><br />')
            );
        } else {
            $message .= $this->translator->translate(
                'Installation_SystemCheckPdoAndMysqliHelp',
                array(
                    '<br /><br /><code>--with-mysqli</code><br /><code>--with-pdo-mysql</code><br /><br />',
                    '<br /><br /><code>extension=mysqli.so</code><br /><code>extension=pdo.so</code><br /><code>extension=pdo_mysql.so</code><br />'
                )
            );
        }

        $message .= $this->translator->translate('Installation_RestartWebServer') . '<br/><br/>';
        $message .= $this->translator->translate('Installation_SystemCheckPhpPdoAndMysqli', array(
            '<a style="color:red" href="http://php.net/pdo">',
            '</a>',
            '<a style="color:red" href="http://php.net/mysqli">',
            '</a>',
        ));
        $message .= '</p>';

        return $message;
    }
}