Issues (459)

src/graph/DateScale.php (16 issues)

1
<?php
2
3
/**
4
 * JPGraph v4.0.3
5
 */
6
7
namespace Amenadiel\JpGraph\Graph;
8
9
use Amenadiel\JpGraph\Util;
10
11
/**
12
 * File:        JPGRAPH_DATE.PHP
13
 * // Description: Classes to handle Date scaling
14
 * // Created:     2005-05-02
15
 * // Ver:         $Id: jpgraph_date.php 1106 2009-02-22 20:16:35Z ljp $
16
 * //
17
 * // Copyright (c) Asial Corporation. All rights reserved.
18
 */
19
class DateScale extends LinearScale
20
{
21
    private $date_format     = '';
22
    private $iStartAlign     = false;
23
    private $iEndAlign       = false;
24
    private $iStartTimeAlign = false;
25
    private $iEndTimeAlign   = false;
26
27
    /**
28
     * CONSTRUCTOR.
29
     *
30
     * @param mixed $aMin
31
     * @param mixed $aMax
32
     * @param mixed $aType
33
     */
34 1
    public function __construct($aMin = 0, $aMax = 0, $aType = 'x')
35
    {
36 1
        assert($aType == 'x');
37 1
        assert($aMin <= $aMax);
38
39 1
        $this->type       = $aType;
40 1
        $this->scale      = [$aMin, $aMax];
41 1
        $this->world_size = $aMax - $aMin;
42 1
        $this->ticks      = new LinearTicks();
43 1
        $this->intscale   = true;
44 1
    }
45
46
    /**
47
     * Utility Function AdjDate()
48
     * // Description: Will round a given time stamp to an even year, month or day
49
     * // argument.
50
     *
51
     * @param mixed $aTime
52
     * @param mixed $aRound
53
     * @param mixed $aYearType
54
     * @param mixed $aMonthType
55
     * @param mixed $aDayType
56
     */
57 1
    public function AdjDate($aTime, $aRound = 0, $aYearType = false, $aMonthType = false, $aDayType = false)
58
    {
59 1
        $y = (int) date('Y', $aTime);
60 1
        $m = (int) date('m', $aTime);
61 1
        $d = (int) date('d', $aTime);
62 1
        $h = 0;
63 1
        $i = 0;
64 1
        $s = 0;
65 1
        if ($aYearType !== false) {
66 1
            $yearAdj = [0 => 1, 1 => 2, 2 => 5];
67 1
            if ($aRound == 0) {
68 1
                $y = floor($y / $yearAdj[$aYearType]) * $yearAdj[$aYearType];
69
            } else {
70 1
                ++$y;
71 1
                $y = ceil($y / $yearAdj[$aYearType]) * $yearAdj[$aYearType];
72
            }
73 1
            $m = 1;
74 1
            $d = 1;
75
        } elseif ($aMonthType !== false) {
76
            $monthAdj = [0 => 1, 1 => 6];
77
            if ($aRound == 0) {
78
                $m = floor($m / $monthAdj[$aMonthType]) * $monthAdj[$aMonthType];
79
                $d = 1;
80
            } else {
81
                ++$m;
82
                $m = ceil($m / $monthAdj[$aMonthType]) * $monthAdj[$aMonthType];
83
                $d = 1;
84
            }
85
        } elseif ($aDayType !== false) {
86
            if ($aDayType == 0) {
87
                if ($aRound == 1) {
88
                    //++$d;
89
                    $h = 23;
90
                    $i = 59;
91
                    $s = 59;
92
                }
93
            } else {
94
                // Adjust to an even week boundary.
95
                $w = (int) date('w', $aTime); // Day of week 0=Sun, 6=Sat
96
97
                // Adjust to start on Mon
98
                if ($w == 0) {
99
                    $w = 6;
100
                } else {
101
                    --$w;
102
                }
103
104
                if ($aRound == 0) {
105
                    $d -= $w;
106
                } else {
107
                    $d += (7 - $w);
108
                    $h = 23;
109
                    $i = 59;
110
                    $s = 59;
111
                }
112
            }
113
        }
114
115 1
        return mktime($h, $i, $s, $m, $d, $y);
0 ignored issues
show
It seems like $y can also be of type double; however, parameter $year of mktime() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

115
        return mktime($h, $i, $s, $m, $d, /** @scrutinizer ignore-type */ $y);
Loading history...
It seems like $m can also be of type double; however, parameter $month of mktime() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

115
        return mktime($h, $i, $s, /** @scrutinizer ignore-type */ $m, $d, $y);
Loading history...
116
    }
117
118
    /**
119
     * Wrapper for AdjDate that will round a timestamp to an even date rounding
120
     * // it downwards.
121
     *
122
     * @param mixed $aTime
123
     * @param mixed $aYearType
124
     * @param mixed $aMonthType
125
     * @param mixed $aDayType
126
     */
127 1
    public function AdjStartDate($aTime, $aYearType = false, $aMonthType = false, $aDayType = false)
128
    {
129 1
        return $this->AdjDate($aTime, 0, $aYearType, $aMonthType, $aDayType);
130
    }
131
132
    /**
133
     * Wrapper for AdjDate that will round a timestamp to an even date rounding
134
     * // it upwards.
135
     *
136
     * @param mixed $aTime
137
     * @param mixed $aYearType
138
     * @param mixed $aMonthType
139
     * @param mixed $aDayType
140
     */
141 1
    public function AdjEndDate($aTime, $aYearType = false, $aMonthType = false, $aDayType = false)
142
    {
143 1
        return $this->AdjDate($aTime, 1, $aYearType, $aMonthType, $aDayType);
144
    }
145
146
    /**
147
     * Utility Function AdjTime()
148
     * // Description: Will round a given time stamp to an even time according to
149
     * // argument.
150
     *
151
     * @param mixed $aTime
152
     * @param mixed $aRound
153
     * @param mixed $aHourType
154
     * @param mixed $aMinType
155
     * @param mixed $aSecType
156
     */
157
    public function AdjTime($aTime, $aRound = 0, $aHourType = false, $aMinType = false, $aSecType = false)
158
    {
159
        $y = (int) date('Y', $aTime);
160
        $m = (int) date('m', $aTime);
161
        $d = (int) date('d', $aTime);
162
        $h = (int) date('H', $aTime);
163
        $i = (int) date('i', $aTime);
164
        $s = (int) date('s', $aTime);
165
        if ($aHourType !== false) {
166
            $aHourType %= 6;
167
            $hourAdj = [0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 6, 5 => 12];
168
            if ($aRound == 0) {
169
                $h = floor($h / $hourAdj[$aHourType]) * $hourAdj[$aHourType];
170
            } else {
171
                if (($h % $hourAdj[$aHourType] == 0) && ($i > 0 || $s > 0)) {
172
                    ++$h;
173
                }
174
                $h = ceil($h / $hourAdj[$aHourType]) * $hourAdj[$aHourType];
175
                if ($h >= 24) {
176
                    $aTime += 86400;
177
                    $y = (int) date('Y', $aTime);
178
                    $m = (int) date('m', $aTime);
179
                    $d = (int) date('d', $aTime);
180
                    $h -= 24;
181
                }
182
            }
183
            $i = 0;
184
            $s = 0;
185
        } elseif ($aMinType !== false) {
186
            $aMinType %= 5;
187
            $minAdj = [0 => 1, 1 => 5, 2 => 10, 3 => 15, 4 => 30];
188
            if ($aRound == 0) {
189
                $i = floor($i / $minAdj[$aMinType]) * $minAdj[$aMinType];
190
            } else {
191
                if (($i % $minAdj[$aMinType] == 0) && $s > 0) {
192
                    ++$i;
193
                }
194
                $i = ceil($i / $minAdj[$aMinType]) * $minAdj[$aMinType];
195
                if ($i >= 60) {
196
                    $aTime += 3600;
197
                    $y = (int) date('Y', $aTime);
198
                    $m = (int) date('m', $aTime);
199
                    $d = (int) date('d', $aTime);
200
                    $h = (int) date('H', $aTime);
201
                    $i = 0;
202
                }
203
            }
204
            $s = 0;
205
        } elseif ($aSecType !== false) {
206
            $aSecType %= 5;
207
            $secAdj = [0 => 1, 1 => 5, 2 => 10, 3 => 15, 4 => 30];
208
            if ($aRound == 0) {
209
                $s = floor($s / $secAdj[$aSecType]) * $secAdj[$aSecType];
210
            } else {
211
                $s = ceil($s / $secAdj[$aSecType] * 1.0) * $secAdj[$aSecType];
212
                if ($s >= 60) {
213
                    $s = 0;
214
                    $aTime += 60;
215
                    $y = (int) date('Y', $aTime);
216
                    $m = (int) date('m', $aTime);
217
                    $d = (int) date('d', $aTime);
218
                    $h = (int) date('H', $aTime);
219
                    $i = (int) date('i', $aTime);
220
                }
221
            }
222
        }
223
224
        return mktime($h, $i, $s, $m, $d, $y);
0 ignored issues
show
It seems like $s can also be of type double; however, parameter $second of mktime() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

224
        return mktime($h, $i, /** @scrutinizer ignore-type */ $s, $m, $d, $y);
Loading history...
It seems like $h can also be of type double; however, parameter $hour of mktime() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

224
        return mktime(/** @scrutinizer ignore-type */ $h, $i, $s, $m, $d, $y);
Loading history...
It seems like $i can also be of type double; however, parameter $minute of mktime() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

224
        return mktime($h, /** @scrutinizer ignore-type */ $i, $s, $m, $d, $y);
Loading history...
225
    }
226
227
    /**
228
     * Wrapper for AdjTime that will round a timestamp to an even time rounding
229
     * // it downwards.
230
     * // Example: AdjStartTime(mktime(18,27,13,2,22,2005),false,2) => 18:20.
231
     *
232
     * @param mixed $aTime
233
     * @param mixed $aHourType
234
     * @param mixed $aMinType
235
     * @param mixed $aSecType
236
     */
237
    public function AdjStartTime($aTime, $aHourType = false, $aMinType = false, $aSecType = false)
238
    {
239
        return $this->AdjTime($aTime, 0, $aHourType, $aMinType, $aSecType);
240
    }
241
242
    /**
243
     * Wrapper for AdjTime that will round a timestamp to an even time rounding
244
     * // it upwards
245
     * // Example: AdjEndTime(mktime(18,27,13,2,22,2005),false,2) => 18:30.
246
     *
247
     * @param mixed $aTime
248
     * @param mixed $aHourType
249
     * @param mixed $aMinType
250
     * @param mixed $aSecType
251
     */
252
    public function AdjEndTime($aTime, $aHourType = false, $aMinType = false, $aSecType = false)
253
    {
254
        return $this->AdjTime($aTime, 1, $aHourType, $aMinType, $aSecType);
255
    }
256
257
    /**
258
     * DateAutoScale
259
     * // Autoscale a date axis given start and end time
260
     * // Returns an array ($start,$end,$major,$minor,$format).
261
     *
262
     * @param mixed $aStartTime
263
     * @param mixed $aEndTime
264
     * @param mixed $aDensity
265
     * @param mixed $aAdjust
266
     */
267 1
    public function DoDateAutoScale($aStartTime, $aEndTime, $aDensity = 0, $aAdjust = true)
268
    {
269
        // Format of array
270
        // array ( Decision point,  array( array( Major-scale-step-array ),
271
        //       array( Minor-scale-step-array ),
272
        //       array( 0=date-adjust, 1=time-adjust, adjustment-alignment) )
273
        //
274
        $scalePoints =
275
            [
276
            /* Intervall larger than 10 years */
277 1
            SECPERYEAR * 10, [[SECPERYEAR * 5, SECPERYEAR * 2],
278 1
                [SECPERYEAR],
279 1
                [0, YEARADJ_1, 0, YEARADJ_1], ],
280
281
            /* Intervall larger than 2 years */
282 1
            SECPERYEAR * 2, [[SECPERYEAR], [SECPERYEAR],
283 1
                [0, YEARADJ_1], ],
284
285
            /* Intervall larger than 90 days (approx 3 month) */
286 1
            SECPERDAY * 90, [[SECPERDAY * 30, SECPERDAY * 14, SECPERDAY * 7, SECPERDAY],
287 1
                [SECPERDAY * 5, SECPERDAY * 7, SECPERDAY, SECPERDAY],
288 1
                [0, MONTHADJ_1, 0, DAYADJ_WEEK, 0, DAYADJ_1, 0, DAYADJ_1], ],
289
290
            /* Intervall larger than 30 days (approx 1 month) */
291 1
            SECPERDAY * 30, [[SECPERDAY * 14, SECPERDAY * 7, SECPERDAY * 2, SECPERDAY],
292 1
                [SECPERDAY, SECPERDAY, SECPERDAY, SECPERDAY],
293 1
                [0, DAYADJ_WEEK, 0, DAYADJ_1, 0, DAYADJ_1, 0, DAYADJ_1], ],
294
295
            /* Intervall larger than 7 days */
296 1
            SECPERDAY * 7, [[SECPERDAY, SECPERHOUR * 12, SECPERHOUR * 6, SECPERHOUR * 2],
297 1
                [SECPERHOUR * 6, SECPERHOUR * 3, SECPERHOUR, SECPERHOUR],
298 1
                [0, DAYADJ_1, 1, HOURADJ_12, 1, HOURADJ_6, 1, HOURADJ_1], ],
299
300
            /* Intervall larger than 1 day */
301 1
            SECPERDAY, [[SECPERDAY, SECPERHOUR * 12, SECPERHOUR * 6, SECPERHOUR * 2, SECPERHOUR],
302 1
                [SECPERHOUR * 6, SECPERHOUR * 2, SECPERHOUR, SECPERHOUR, SECPERHOUR],
303 1
                [1, HOURADJ_12, 1, HOURADJ_6, 1, HOURADJ_1, 1, HOURADJ_1], ],
304
305
            /* Intervall larger than 12 hours */
306 1
            SECPERHOUR * 12, [[SECPERHOUR * 2, SECPERHOUR, SECPERMIN * 30, 900, 600],
307
                [1800, 1800, 900, 300, 300],
308 1
                [1, HOURADJ_1, 1, MINADJ_30, 1, MINADJ_15, 1, MINADJ_10, 1, MINADJ_5], ],
309
310
            /* Intervall larger than 2 hours */
311 1
            SECPERHOUR * 2, [[SECPERHOUR, SECPERMIN * 30, 900, 600, 300],
312
                [1800, 900, 300, 120, 60],
313 1
                [1, HOURADJ_1, 1, MINADJ_30, 1, MINADJ_15, 1, MINADJ_10, 1, MINADJ_5], ],
314
315
            /* Intervall larger than 1 hours */
316 1
            SECPERHOUR, [[SECPERMIN * 30, 900, 600, 300], [900, 300, 120, 60],
317 1
                [1, MINADJ_30, 1, MINADJ_15, 1, MINADJ_10, 1, MINADJ_5], ],
318
319
            /* Intervall larger than 30 min */
320 1
            SECPERMIN * 30, [[SECPERMIN * 15, SECPERMIN * 10, SECPERMIN * 5, SECPERMIN],
321
                [300, 300, 60, 10],
322 1
                [1, MINADJ_15, 1, MINADJ_10, 1, MINADJ_5, 1, MINADJ_1], ],
323
324
            /* Intervall larger than 1 min */
325 1
            SECPERMIN, [[SECPERMIN, 15, 10, 5],
326
                [15, 5, 2, 1],
327 1
                [1, MINADJ_1, 1, SECADJ_15, 1, SECADJ_10, 1, SECADJ_5], ],
328
329
            /* Intervall larger than 10 sec */
330 1
            10, [[5, 2],
331
                [1, 1],
332 1
                [1, SECADJ_5, 1, SECADJ_1], ],
333
334
            /* Intervall larger than 1 sec */
335 1
            1, [[1],
336
                [1],
337 1
                [1, SECADJ_1], ],
338
        ];
339
340 1
        $ns = safe_count($scalePoints);
0 ignored issues
show
The assignment to $ns is dead and can be removed.
Loading history...
341
        // Establish major and minor scale units for the date scale
342 1
        $diff = $aEndTime - $aStartTime;
343 1
        if ($diff < 1) {
344
            return false;
345
        }
346
347 1
        $done = false;
348 1
        $i    = 0;
349 1
        while (!$done) {
350 1
            if ($diff > $scalePoints[2 * $i]) {
351
                // Get major and minor scale for this intervall
352 1
                $scaleSteps = $scalePoints[2 * $i + 1];
353 1
                $major      = $scaleSteps[0][min($aDensity, safe_count($scaleSteps[0]) - 1)];
354
                // Try to find out which minor step looks best
355 1
                $minor = $scaleSteps[1][min($aDensity, safe_count($scaleSteps[1]) - 1)];
356 1
                if ($aAdjust) {
357
                    // Find out how we should align the start and end timestamps
358 1
                    $idx = 2 * min($aDensity, floor(safe_count($scaleSteps[2]) / 2) - 1);
359 1
                    if ($scaleSteps[2][$idx] === 0) {
360
                        // Use date adjustment
361 1
                        $adj = $scaleSteps[2][$idx + 1];
362 1
                        if ($adj >= 30) {
363 1
                            $start = $this->AdjStartDate($aStartTime, $adj - 30);
364 1
                            $end   = $this->AdjEndDate($aEndTime, $adj - 30);
365
                        } elseif ($adj >= 20) {
366
                            $start = $this->AdjStartDate($aStartTime, false, $adj - 20);
367
                            $end   = $this->AdjEndDate($aEndTime, false, $adj - 20);
368
                        } else {
369
                            $start = $this->AdjStartDate($aStartTime, false, false, $adj);
370
                            $end   = $this->AdjEndDate($aEndTime, false, false, $adj);
371
                            // We add 1 second for date adjustment to make sure we end on 00:00 the following day
372
                            // This makes the final major tick be srawn when we step day-by-day instead of ending
373
                            // on xx:59:59 which would not draw the final major tick
374 1
                            ++$end;
375
                        }
376
                    } else {
377
                        // Use time adjustment
378
                        $adj = $scaleSteps[2][$idx + 1];
379
                        if ($adj >= 30) {
380
                            $start = $this->AdjStartTime($aStartTime, $adj - 30);
381
                            $end   = $this->AdjEndTime($aEndTime, $adj - 30);
382
                        } elseif ($adj >= 20) {
383
                            $start = $this->AdjStartTime($aStartTime, false, $adj - 20);
384
                            $end   = $this->AdjEndTime($aEndTime, false, $adj - 20);
385
                        } else {
386
                            $start = $this->AdjStartTime($aStartTime, false, false, $adj);
387
                            $end   = $this->AdjEndTime($aEndTime, false, false, $adj);
388
                        }
389
                    }
390
                }
391
                // If the overall date span is larger than 1 day ten we show date
392 1
                $format = '';
393 1
                if (($end - $start) > SECPERDAY) {
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $start does not seem to be defined for all execution paths leading up to this point.
Loading history...
Comprehensibility Best Practice introduced by
The variable $end does not seem to be defined for all execution paths leading up to this point.
Loading history...
394 1
                    $format = 'Y-m-d ';
395
                }
396
                // If the major step is less than 1 day we need to whow hours + min
397 1
                if ($major < SECPERDAY) {
398
                    $format .= 'H:i';
399
                }
400
                // If the major step is less than 1 min we need to show sec
401 1
                if ($major < 60) {
402
                    $format .= ':s';
403
                }
404 1
                $done = true;
405
            }
406 1
            ++$i;
407
        }
408
409 1
        return [$start, $end, $major, $minor, $format];
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $format does not seem to be defined for all execution paths leading up to this point.
Loading history...
Comprehensibility Best Practice introduced by
The variable $major does not seem to be defined for all execution paths leading up to this point.
Loading history...
Comprehensibility Best Practice introduced by
The variable $minor does not seem to be defined for all execution paths leading up to this point.
Loading history...
410
    }
411
412
    // Overrides the automatic determined date format. Must be a valid date() format string
413
    public function SetDateFormat($aFormat)
414
    {
415
        $this->date_format = $aFormat;
416
        $this->ticks->SetLabelDateFormat($this->date_format);
417
    }
418
419
    public function AdjustForDST($aFlg = true)
420
    {
421
        $this->ticks->AdjustForDST($aFlg);
422
    }
423
424
    public function SetDateAlign($aStartAlign, $aEndAlign = false)
425
    {
426
        if ($aEndAlign === false) {
427
            $aEndAlign = $aStartAlign;
428
        }
429
        $this->iStartAlign = $aStartAlign;
430
        $this->iEndAlign   = $aEndAlign;
431
    }
432
433
    public function SetTimeAlign($aStartAlign, $aEndAlign = false)
434
    {
435
        if ($aEndAlign === false) {
436
            $aEndAlign = $aStartAlign;
437
        }
438
        $this->iStartTimeAlign = $aStartAlign;
439
        $this->iEndTimeAlign   = $aEndAlign;
440
    }
441
442 1
    public function AutoScale($img, $aStartTime, $aEndTime, $aNumSteps, $_adummy = false)
443
    {
444
        // We need to have one dummy argument to make the signature of AutoScale()
445
        // identical to LinearScale::AutoScale
446 1
        if ($aStartTime == $aEndTime) {
447
            // Special case when we only have one data point.
448
            // Create a small artifical intervall to do the autoscaling
449
            $aStartTime -= 10;
450
            $aEndTime += 10;
451
        }
452 1
        $done = false;
453 1
        $i    = 0;
454 1
        while (!$done && $i < 5) {
455 1
            list($adjstart, $adjend, $maj, $min, $format) = $this->DoDateAutoScale($aStartTime, $aEndTime, $i);
456 1
            $n                                            = floor(($adjend - $adjstart) / $maj);
457 1
            if ($n * 1.7 > $aNumSteps) {
458 1
                $done = true;
459
            }
460 1
            ++$i;
461
        }
462
463
        /*
464
        if( 0 ) { // DEBUG
465
        echo "    Start =".date("Y-m-d H:i:s",$aStartTime)."<br>";
466
        echo "    End   =".date("Y-m-d H:i:s",$aEndTime)."<br>";
467
        echo "Adj Start =".date("Y-m-d H:i:s",$adjstart)."<br>";
468
        echo "Adj End   =".date("Y-m-d H:i:s",$adjend)."<p>";
469
        echo "Major = $maj s, ".floor($maj/60)."min, ".floor($maj/3600)."h, ".floor($maj/86400)."day<br>";
470
        echo "Min = $min s, ".floor($min/60)."min, ".floor($min/3600)."h, ".floor($min/86400)."day<br>";
471
        echo "Format=$format<p>";
472
        }
473
         */
474
475 1
        if ($this->iStartTimeAlign !== false && $this->iStartAlign !== false) {
476
            Util\JpGraphError::RaiseL(3001);
477
            //('It is only possible to use either SetDateAlign() or SetTimeAlign() but not both');
478
        }
479
480 1
        if ($this->iStartTimeAlign !== false) {
481
            if ($this->iStartTimeAlign >= 30) {
482
                $adjstart = $this->AdjStartTime($aStartTime, $this->iStartTimeAlign - 30);
483
            } elseif ($this->iStartTimeAlign >= 20) {
484
                $adjstart = $this->AdjStartTime($aStartTime, false, $this->iStartTimeAlign - 20);
485
            } else {
486
                $adjstart = $this->AdjStartTime($aStartTime, false, false, $this->iStartTimeAlign);
487
            }
488
        }
489 1
        if ($this->iEndTimeAlign !== false) {
490
            if ($this->iEndTimeAlign >= 30) {
491
                $adjend = $this->AdjEndTime($aEndTime, $this->iEndTimeAlign - 30);
492
            } elseif ($this->iEndTimeAlign >= 20) {
493
                $adjend = $this->AdjEndTime($aEndTime, false, $this->iEndTimeAlign - 20);
494
            } else {
495
                $adjend = $this->AdjEndTime($aEndTime, false, false, $this->iEndTimeAlign);
496
            }
497
        }
498
499 1
        if ($this->iStartAlign !== false) {
500
            if ($this->iStartAlign >= 30) {
501
                $adjstart = $this->AdjStartDate($aStartTime, $this->iStartAlign - 30);
502
            } elseif ($this->iStartAlign >= 20) {
503
                $adjstart = $this->AdjStartDate($aStartTime, false, $this->iStartAlign - 20);
504
            } else {
505
                $adjstart = $this->AdjStartDate($aStartTime, false, false, $this->iStartAlign);
506
            }
507
        }
508 1
        if ($this->iEndAlign !== false) {
509
            if ($this->iEndAlign >= 30) {
510
                $adjend = $this->AdjEndDate($aEndTime, $this->iEndAlign - 30);
511
            } elseif ($this->iEndAlign >= 20) {
512
                $adjend = $this->AdjEndDate($aEndTime, false, $this->iEndAlign - 20);
513
            } else {
514
                $adjend = $this->AdjEndDate($aEndTime, false, false, $this->iEndAlign);
515
            }
516
        }
517 1
        $this->Update($img, $adjstart, $adjend);
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $adjstart does not seem to be defined for all execution paths leading up to this point.
Loading history...
Comprehensibility Best Practice introduced by
The variable $adjend does not seem to be defined for all execution paths leading up to this point.
Loading history...
518 1
        if (!$this->ticks->IsSpecified()) {
519 1
            $this->ticks->Set($maj, $min);
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $min does not seem to be defined for all execution paths leading up to this point.
Loading history...
Comprehensibility Best Practice introduced by
The variable $maj does not seem to be defined for all execution paths leading up to this point.
Loading history...
520
        }
521
522 1
        if ($this->date_format == '') {
523 1
            $this->ticks->SetLabelDateFormat($format);
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $format does not seem to be defined for all execution paths leading up to this point.
Loading history...
524
        } else {
525
            $this->ticks->SetLabelDateFormat($this->date_format);
526
        }
527 1
    }
528
}
529