ConvertTZ::parse()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 15
ccs 10
cts 10
cp 1
rs 9.4285
cc 1
eloc 9
nc 1
nop 1
crap 1
1
<?php
2
3
namespace Luxifer\DQL\Datetime;
4
5
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
6
use Doctrine\ORM\Query\Lexer;
7
use Doctrine\ORM\Query\Parser;
8
use Doctrine\ORM\Query\SqlWalker;
9
10
/**
11
 * DateFunction ::= "CONVERT_TZ" "(" ArithmeticPrimary "," StringPrimary "," StringPrimary ")"
12
 */
13
class ConvertTZ extends FunctionNode
14
{
15
    public $dateExpression;
16
    public $fromTZ;
17
    public $toTZ;
18
19 1
    public function parse(Parser $parser)
20
    {
21 1
        $parser->match(Lexer::T_IDENTIFIER);
22 1
        $parser->match(Lexer::T_OPEN_PARENTHESIS);
23
24 1
        $this->dateExpression = $parser->ArithmeticPrimary();
25 1
        $parser->match(Lexer::T_COMMA);
26
27 1
        $this->fromTZ = $parser->StringPrimary();
28 1
        $parser->match(Lexer::T_COMMA);
29
30 1
        $this->toTZ = $parser->StringPrimary();
31
32 1
        $parser->match(Lexer::T_CLOSE_PARENTHESIS);
33 1
    }
34
35 1
    public function getSql(SqlWalker $sqlWalker)
36
    {
37
        $parts = array(
38 1
            $sqlWalker->walkArithmeticPrimary($this->dateExpression),
39 1
            $sqlWalker->walkStringPrimary($this->fromTZ),
40 1
            $sqlWalker->walkStringPrimary($this->toTZ)
41
        );
42
43 1
        return sprintf('CONVERT_TZ(%s)', implode(', ', $parts));
44
    }
45
}
46