DateHelper::getDayHours()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 7
nc 3
nop 0
dl 0
loc 13
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
/*
4
 * This file is part of Jitamin.
5
 *
6
 * Copyright (C) Jitamin Team
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Jitamin\Helper;
13
14
use DateTime;
15
use Jitamin\Foundation\Base;
16
17
/**
18
 * DateTime helpers.
19
 */
20
class DateHelper extends Base
21
{
22
    /**
23
     * Get formatted time.
24
     *
25
     * @param int $value
26
     *
27
     * @return string
28
     */
29
    public function time($value)
30
    {
31
        return date($this->settingModel->get('application_time_format', 'H:i'), $value);
0 ignored issues
show
Documentation introduced by
The property settingModel does not exist on object<Jitamin\Helper\DateHelper>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
32
    }
33
34
    /**
35
     * Get formatted date.
36
     *
37
     * @param int $value
38
     *
39
     * @return string
40
     */
41
    public function date($value)
42
    {
43
        if (empty($value)) {
44
            return '';
45
        }
46
47
        if (!ctype_digit($value)) {
48
            $value = strtotime($value);
49
        }
50
51
        return date($this->settingModel->get('application_date_format', 'm/d/Y'), $value);
0 ignored issues
show
Documentation introduced by
The property settingModel does not exist on object<Jitamin\Helper\DateHelper>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
52
    }
53
54
    /**
55
     * Get formatted  datetime.
56
     *
57
     * @param int $value
58
     *
59
     * @return string
60
     */
61
    public function datetime($value)
62
    {
63
        return date($this->settingModel->get('application_datetime_format', 'm/d/Y H:i'), $value);
0 ignored issues
show
Documentation introduced by
The property settingModel does not exist on object<Jitamin\Helper\DateHelper>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
64
    }
65
66
    /**
67
     * Get duration in seconds into human format.
68
     *
69
     * @param int $seconds
70
     *
71
     * @return string
72
     */
73
    public function duration($seconds)
74
    {
75
        if ($seconds == 0) {
76
            return 0;
77
        }
78
79
        $dtF = new DateTime('@0');
80
        $dtT = new DateTime("@$seconds");
81
82
        return $dtF->diff($dtT)->format('%a days, %h hours, %i minutes and %s seconds');
83
    }
84
85
    /**
86
     * Get the age of an item in quasi human readable format.
87
     * It's in this format: <1h , NNh, NNd.
88
     *
89
     * @param int $timestamp Unix timestamp of the artifact for which age will be calculated
90
     * @param int $now       Compare with this timestamp (Default value is the current unix timestamp)
91
     *
92
     * @return string
93
     */
94
    public function age($timestamp, $now = null)
95
    {
96
        if ($now === null) {
97
            $now = time();
98
        }
99
100
        $diff = $now - $timestamp;
101
102
        if ($diff < 900) {
103
            return t('<15m');
104
        }
105
        if ($diff < 1200) {
106
            return t('<30m');
107
        } elseif ($diff < 3600) {
108
            return t('<1h');
109
        } elseif ($diff < 86400) {
110
            return '~'.t('%dh', $diff / 3600);
111
        }
112
113
        return t('%dd', ($now - $timestamp) / 86400);
114
    }
115
116
    /**
117
     * Get all hours for day.
118
     *
119
     * @return array
120
     */
121
    public function getDayHours()
122
    {
123
        $values = [];
124
125
        foreach (range(0, 23) as $hour) {
126
            foreach ([0, 30] as $minute) {
127
                $time = sprintf('%02d:%02d', $hour, $minute);
128
                $values[$time] = $time;
129
            }
130
        }
131
132
        return $values;
133
    }
134
135
    /**
136
     * Get all days of a week.
137
     *
138
     * @return array
139
     */
140
    public function getWeekDays()
141
    {
142
        $values = [];
143
144
        foreach (range(1, 7) as $day) {
145
            $values[$day] = $this->getWeekDay($day);
146
        }
147
148
        return $values;
149
    }
150
151
    /**
152
     * Get the localized day name from the day number.
153
     *
154
     * @param int $day Day number
155
     *
156
     * @return string
157
     */
158
    public function getWeekDay($day)
159
    {
160
        return date('l', strtotime('next Monday +'.($day - 1).' days'));
161
    }
162
}
163