PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 4.17.0
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v4.17.0
4.17.2 4.17.1 4.17.0 4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / third-party / vendor / nesbot / carbon / src / Carbon / Traits / Rounding.php
wp-user-avatar / third-party / vendor / nesbot / carbon / src / Carbon / Traits Last commit date
Boundaries.php 2 months ago Cast.php 2 months ago Comparison.php 2 months ago Converter.php 2 months ago Creator.php 2 months ago Date.php 2 months ago DeprecatedProperties.php 2 months ago Difference.php 2 months ago IntervalRounding.php 2 months ago IntervalStep.php 2 months ago Localization.php 2 months ago Macro.php 2 months ago MagicParameter.php 2 months ago Mixin.php 2 months ago Modifiers.php 2 months ago Mutability.php 2 months ago ObjectInitialisation.php 2 months ago Options.php 2 months ago Rounding.php 2 months ago Serialization.php 2 months ago Test.php 2 months ago Timestamp.php 2 months ago ToStringFormat.php 2 months ago Units.php 2 months ago Week.php 2 months ago
Rounding.php
214 lines
1 <?php
2
3 /**
4 * This file is part of the Carbon package.
5 *
6 * (c) Brian Nesbitt <brian@nesbot.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 namespace ProfilePressVendor\Carbon\Traits;
12
13 use ProfilePressVendor\Carbon\CarbonInterface;
14 use ProfilePressVendor\Carbon\Exceptions\UnknownUnitException;
15 /**
16 * Trait Rounding.
17 *
18 * Round, ceil, floor units.
19 *
20 * Depends on the following methods:
21 *
22 * @method static copy()
23 * @method static startOfWeek(int $weekStartsAt = null)
24 */
25 trait Rounding
26 {
27 use IntervalRounding;
28 /**
29 * Round the current instance at the given unit with given precision if specified and the given function.
30 *
31 * @param string $unit
32 * @param float|int $precision
33 * @param string $function
34 *
35 * @return CarbonInterface
36 */
37 public function roundUnit($unit, $precision = 1, $function = 'round')
38 {
39 $metaUnits = [
40 // @call roundUnit
41 'millennium' => [static::YEARS_PER_MILLENNIUM, 'year'],
42 // @call roundUnit
43 'century' => [static::YEARS_PER_CENTURY, 'year'],
44 // @call roundUnit
45 'decade' => [static::YEARS_PER_DECADE, 'year'],
46 // @call roundUnit
47 'quarter' => [static::MONTHS_PER_QUARTER, 'month'],
48 // @call roundUnit
49 'millisecond' => [1000, 'microsecond'],
50 ];
51 $normalizedUnit = static::singularUnit($unit);
52 $ranges = array_merge(static::getRangesByUnit($this->daysInMonth), [
53 // @call roundUnit
54 'microsecond' => [0, 999999],
55 ]);
56 $factor = 1;
57 if ($normalizedUnit === 'week') {
58 $normalizedUnit = 'day';
59 $precision *= static::DAYS_PER_WEEK;
60 }
61 if (isset($metaUnits[$normalizedUnit])) {
62 [$factor, $normalizedUnit] = $metaUnits[$normalizedUnit];
63 }
64 $precision *= $factor;
65 if (!isset($ranges[$normalizedUnit])) {
66 throw new UnknownUnitException($unit);
67 }
68 $found = \false;
69 $fraction = 0;
70 $arguments = null;
71 $initialValue = null;
72 $factor = $this->year < 0 ? -1 : 1;
73 $changes = [];
74 $minimumInc = null;
75 foreach ($ranges as $unit => [$minimum, $maximum]) {
76 if ($normalizedUnit === $unit) {
77 $arguments = [$this->{$unit}, $minimum];
78 $initialValue = $this->{$unit};
79 $fraction = $precision - floor($precision);
80 $found = \true;
81 continue;
82 }
83 if ($found) {
84 $delta = $maximum + 1 - $minimum;
85 $factor /= $delta;
86 $fraction *= $delta;
87 $inc = ($this->{$unit} - $minimum) * $factor;
88 if ($inc !== 0.0) {
89 $minimumInc = $minimumInc ?? $arguments[0] / pow(2, 52);
90 // If value is still the same when adding a non-zero increment/decrement,
91 // it means precision got lost in the addition
92 if (abs($inc) < $minimumInc) {
93 $inc = $minimumInc * ($inc < 0 ? -1 : 1);
94 }
95 // If greater than $precision, assume precision loss caused an overflow
96 if ($function !== 'floor' || abs($arguments[0] + $inc - $initialValue) >= $precision) {
97 $arguments[0] += $inc;
98 }
99 }
100 $changes[$unit] = round($minimum + ($fraction ? $fraction * $function(($this->{$unit} - $minimum) / $fraction) : 0));
101 // Cannot use modulo as it lose double precision
102 while ($changes[$unit] >= $delta) {
103 $changes[$unit] -= $delta;
104 }
105 $fraction -= floor($fraction);
106 }
107 }
108 [$value, $minimum] = $arguments;
109 $normalizedValue = floor($function(($value - $minimum) / $precision) * $precision + $minimum);
110 /** @var CarbonInterface $result */
111 $result = $this;
112 foreach ($changes as $unit => $value) {
113 $result = $result->{$unit}($value);
114 }
115 return $result->{$normalizedUnit}($normalizedValue);
116 }
117 /**
118 * Truncate the current instance at the given unit with given precision if specified.
119 *
120 * @param string $unit
121 * @param float|int $precision
122 *
123 * @return CarbonInterface
124 */
125 public function floorUnit($unit, $precision = 1)
126 {
127 return $this->roundUnit($unit, $precision, 'floor');
128 }
129 /**
130 * Ceil the current instance at the given unit with given precision if specified.
131 *
132 * @param string $unit
133 * @param float|int $precision
134 *
135 * @return CarbonInterface
136 */
137 public function ceilUnit($unit, $precision = 1)
138 {
139 return $this->roundUnit($unit, $precision, 'ceil');
140 }
141 /**
142 * Round the current instance second with given precision if specified.
143 *
144 * @param float|int|string|\DateInterval|null $precision
145 * @param string $function
146 *
147 * @return CarbonInterface
148 */
149 public function round($precision = 1, $function = 'round')
150 {
151 return $this->roundWith($precision, $function);
152 }
153 /**
154 * Round the current instance second with given precision if specified.
155 *
156 * @param float|int|string|\DateInterval|null $precision
157 *
158 * @return CarbonInterface
159 */
160 public function floor($precision = 1)
161 {
162 return $this->round($precision, 'floor');
163 }
164 /**
165 * Ceil the current instance second with given precision if specified.
166 *
167 * @param float|int|string|\DateInterval|null $precision
168 *
169 * @return CarbonInterface
170 */
171 public function ceil($precision = 1)
172 {
173 return $this->round($precision, 'ceil');
174 }
175 /**
176 * Round the current instance week.
177 *
178 * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
179 *
180 * @return CarbonInterface
181 */
182 public function roundWeek($weekStartsAt = null)
183 {
184 return $this->closest($this->avoidMutation()->floorWeek($weekStartsAt), $this->avoidMutation()->ceilWeek($weekStartsAt));
185 }
186 /**
187 * Truncate the current instance week.
188 *
189 * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
190 *
191 * @return CarbonInterface
192 */
193 public function floorWeek($weekStartsAt = null)
194 {
195 return $this->startOfWeek($weekStartsAt);
196 }
197 /**
198 * Ceil the current instance week.
199 *
200 * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
201 *
202 * @return CarbonInterface
203 */
204 public function ceilWeek($weekStartsAt = null)
205 {
206 if ($this->isMutable()) {
207 $startOfWeek = $this->avoidMutation()->startOfWeek($weekStartsAt);
208 return $startOfWeek != $this ? $this->startOfWeek($weekStartsAt)->addWeek() : $this;
209 }
210 $startOfWeek = $this->startOfWeek($weekStartsAt);
211 return $startOfWeek != $this ? $startOfWeek->addWeek() : $this->avoidMutation();
212 }
213 }
214