Passed
Pull Request — master (#17)
by
unknown
03:33
created

Mailcode_Factory_CommandSets_Set_Show::dateNow()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 3
1
<?php
2
/**
3
 * File containing the {@see Mailcode_Factory_CommandSets_Set_Show} class.
4
 *
5
 * @package Mailcode
6
 * @subpackage Factory
7
 * @see Mailcode_Factory_CommandSets_Set_Show
8
 */
9
10
declare(strict_types=1);
11
12
namespace Mailcode;
13
14
use Mailcode\Factory\CommandSets\Set\Show\Date;
15
use Mailcode\Factory\CommandSets\Set\Show\Encoded;
16
use Mailcode\Factory\CommandSets\Set\Show\Number;
17
use Mailcode\Factory\CommandSets\Set\Show\Phone;
18
use Mailcode\Factory\CommandSets\Set\Show\Snippet;
19
use Mailcode\Factory\CommandSets\Set\Show\URL;
20
21
/**
22
 * Command set used to create showxxx commands.
23
 *
24
 * @package Mailcode
25
 * @subpackage Factory
26
 * @author Sebastian Mordziol <[email protected]>
27
 */
28
class Mailcode_Factory_CommandSets_Set_Show extends Mailcode_Factory_CommandSets_Set
29
{
30
    public function var(string $variableName): Mailcode_Commands_Command_ShowVariable
31
    {
32
        $variableName = $this->instantiator->filterVariableName($variableName);
33
34
        $cmd = $this->commands->createCommand(
35
            'ShowVariable',
36
            '',
37
            $variableName,
38
            sprintf(
39
                '{showvar: %s}',
40
                $variableName
41
            )
42
        );
43
44
        $this->instantiator->checkCommand($cmd);
45
46
        if ($cmd instanceof Mailcode_Commands_Command_ShowVariable) {
47
            return $cmd;
48
        }
49
50
        throw $this->instantiator->exceptionUnexpectedType('ShowVariable', $cmd);
51
    }
52
53
    public function date(string $variableName, string $formatString = "", string $timezoneString = null, string $timezoneVariable = null): Mailcode_Commands_Command_ShowDate
54
    {
55
        return (new Date())->create($variableName, $formatString, $timezoneString, $timezoneVariable);
56
    }
57
58
    public function dateNow(string $formatString = "", string $timezoneString = null, string $timezoneVariable = null): Mailcode_Commands_Command_ShowDate
59
    {
60
        return (new Date())->now($formatString, $timezoneString, $timezoneVariable);
61
    }
62
63
    public function number(string $variableName, string $formatString = "", bool $absolute = false): Mailcode_Commands_Command_ShowNumber
64
    {
65
        return (new Number())->create($variableName, $formatString, $absolute);
66
    }
67
68
    /**
69
     * Creates a `showphone` command.
70
     *
71
     * @param string $variableName The name of the variable, with or without $ sign.
72
     * @param string $sourceFormat Two-letter country code, case-insensitive.
73
     * @param string $urlEncoding The URL encoding mode, if any.
74
     * @return Mailcode_Commands_Command_ShowPhone
75
     * @throws Mailcode_Factory_Exception
76
     */
77
    public function phone(string $variableName, string $sourceFormat, string $urlEncoding = Mailcode_Factory::URL_ENCODING_NONE): Mailcode_Commands_Command_ShowPhone
78
    {
79
        return (new Phone())->create($variableName, $sourceFormat, $urlEncoding);
80
    }
81
82
    /**
83
     * @param string $snippetName The name of the snippet to show.
84
     * @return Mailcode_Commands_Command_ShowSnippet
85
     * @throws Mailcode_Factory_Exception
86
     */
87
    public function snippet(string $snippetName): Mailcode_Commands_Command_ShowSnippet
88
    {
89
        return (new Snippet())->create($snippetName);
90
    }
91
92
    /**
93
     * @param string $url The target URL. Can contain Mailcode.
94
     * @param string|null $trackingID If not set, an auto-generated tracking ID will be used.
95
     * @param array<string,string> $queryParams
96
     * @return Mailcode_Commands_Command_ShowURL
97
     * @throws Mailcode_Factory_Exception
98
     */
99
    public function url(string $url, ?string $trackingID = null, array $queryParams = array()): Mailcode_Commands_Command_ShowURL
100
    {
101
        return (new URL())->create($url, $trackingID, $queryParams);
102
    }
103
104
    /**
105
     * @param string $subject The string to encode
106
     * @param string[] $encodings The encodings (keywords) to enable
107
     * @return Mailcode_Commands_Command_ShowEncoded
108
     * @throws Mailcode_Factory_Exception
109
     */
110
    public function encoded(string $subject, array $encodings): Mailcode_Commands_Command_ShowEncoded
111
    {
112
        return (new Encoded())->create($subject, $encodings);
113
    }
114
}
115