Passed
Push — master ( 5379a4...a2888f )
by Joao
04:49
created

src/Database/DBMysqlFunctions.php (1 issue)

Check for correct position of switch default body

Coding Style Informational

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace ByJG\AnyDataset\Database;
4
5
use ByJG\AnyDataset\Repository\DBDataset;
6
7
class DBMySQLFunctions extends DBBaseFunctions
8
{
9
10
    function concat($s1, $s2 = null)
11
    {
12
        return "concat(" . implode(func_get_args(), ', ') . ")";
13
    }
14
15
    /**
16
     * Given a SQL returns it with the proper LIMIT or equivalent method included
17
     * @param string $sql
18
     * @param int $start
19
     * @param int $qty
20
     * @return string
21
     */
22 View Code Duplication
    function limit($sql, $start, $qty)
23
    {
24
        if (strpos($sql, ' LIMIT ') === false) {
25
            return $sql . " LIMIT $start, $qty ";
26
        }
27
28
        return $sql;
29
    }
30
31
    /**
32
     * Given a SQL returns it with the proper TOP or equivalent method included
33
     * @param string $sql
34
     * @param int $qty
35
     * @return string
36
     */
37
    function top($sql, $qty)
38
    {
39
        return $this->limit($sql, 0, $qty);
40
    }
41
42
    /**
43
     * Return if the database provider have a top or similar function
44
     * @return bool
45
     */
46
    function hasTop()
47
    {
48
        return true;
49
    }
50
51
    /**
52
     * Return if the database provider have a limit function
53
     * @return bool
54
     */
55
    function hasLimit()
56
    {
57
        return true;
58
    }
59
60
    /**
61
     * Format date column in sql string given an input format that understands Y M D
62
     * @param string $fmt
63
     * @param string|bool $col
64
     * @return string
65
     * @example $db->getDbFunctions()->SQLDate("d/m/Y H:i", "dtcriacao")
66
     */
67
    function sqlDate($fmt, $col = false)
68
    {
69
        if (!$col) $col = 'now()';
70
        $s = 'DATE_FORMAT(' . $col . ",'";
71
        $concat = false;
72
        $len = strlen($fmt);
73
        for ($i = 0; $i < $len; $i++) {
74
            $ch = $fmt[$i];
75
            switch ($ch) {
76
                case 'Y':
77
                case 'y':
78
                    $s .= '%Y';
79
                    break;
80
                case 'Q':
81
                case 'q':
82
                    $s .= "'),Quarter($col)";
83
84
                    if ($len > $i + 1) $s .= ",DATE_FORMAT($col,'";
85
                    else $s .= ",('";
86
                    $concat = true;
87
                    break;
88
                case 'M':
89
                    $s .= '%b';
90
                    break;
91
92
                case 'm':
93
                    $s .= '%m';
94
                    break;
95
                case 'D':
96
                case 'd':
97
                    $s .= '%d';
98
                    break;
99
100
                case 'H':
101
                    $s .= '%H';
102
                    break;
103
104
                case 'h':
105
                    $s .= '%I';
106
                    break;
107
108
                case 'i':
109
                    $s .= '%i';
110
                    break;
111
112
                case 's':
113
                    $s .= '%s';
114
                    break;
115
116
                case 'a':
117
                case 'A':
118
                    $s .= '%p';
119
                    break;
120
121 View Code Duplication
                default:
0 ignored issues
show
The default body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a default statement must start on the line immediately following the statement.

switch ($expr) {
    default:
        doSomething(); //right
        break;
}


switch ($expr) {
    default:

        doSomething(); //wrong
        break;
}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
122
123
                    if ($ch == '\\') {
124
                        $i++;
125
                        $ch = substr($fmt, $i, 1);
126
                    }
127
                    $s .= $ch;
128
                    break;
129
            }
130
        }
131
        $s.="')";
132
        if ($concat) $s = "CONCAT($s)";
133
        return $s;
134
    }
135
136
    /**
137
     * Format a string date to a string database readable format.
138
     *
139
     * @param string $date
140
     * @param string $dateFormat
141
     * @return string
142
     */
143
    function toDate($date, $dateFormat)
144
    {
145
        return parent::toDate($date, $dateFormat);
146
    }
147
148
    /**
149
     * Format a string database readable format to a string date in a free format.
150
     *
151
     * @param string $date
152
     * @param string $dateFormat
153
     * @return string
154
     */
155
    function fromDate($date, $dateFormat)
156
    {
157
        return parent::fromDate($date, $dateFormat);
158
    }
159
160
    /**
161
     *
162
     * @param DBDataset $dbdataset
163
     * @param string $sql
164
     * @param array $param
165
     * @return int
166
     */
167 View Code Duplication
    function executeAndGetInsertedId($dbdataset, $sql, $param)
168
    {
169
        $id = parent::executeAndGetInsertedId($dbdataset, $sql, $param);
170
        $it = $dbdataset->getIterator("select LAST_INSERT_ID() id");
171
        if ($it->hasNext()) {
172
            $sr = $it->moveNext();
173
            $id = $sr->getField("id");
174
        }
175
176
        return $id;
177
    }
178
}
179