Passed
Push — master ( 6f2886...1a9dc4 )
by Thomas
14:42
created

DebugBarUtils::formatSql()   A

Complexity

Conditions 5
Paths 5

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 9
c 1
b 0
f 0
nc 5
nop 1
dl 0
loc 14
rs 9.6111
1
<?php
2
3
namespace LeKoala\DebugBar;
4
5
class DebugBarUtils
6
{
7
8
    /**
9
     * Format a sql query string using available formatters.
10
     * If no formatters are available, simply return the string as is.
11
     * Highlighting is used if not in cli context
12
     */
13
    public static function formatSql(string $query): string
14
    {
15
        if (class_exists(\Doctrine\SqlFormatter\SqlFormatter::class)) {
16
            return (new \Doctrine\SqlFormatter\SqlFormatter())->format($query);
17
        }
18
        if (class_exists(\SqlFormatter::class)) {
19
            return \SqlFormatter::format($query, !self::isCli());
20
        }
21
        if (class_exists(\SilverStripe\View\Parsers\SQLFormatter::class)) {
22
            $method = self::isCli() ? 'formatPlain' : 'formatHTML';
23
            $formatter = new \SilverStripe\View\Parsers\SQLFormatter;
24
            return $formatter->$method($query);
25
        }
26
        return $query;
27
    }
28
29
    public static function isCli(): bool
30
    {
31
        return in_array(PHP_SAPI ?: '', ['cli', 'phpdbg']) || !http_response_code();
32
    }
33
}
34