PluginProbe
Packeta / 1.5.1
Packeta v1.5.1
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
packeta / src / Packetery / Module / Carrier / Options.php

Options.php in Packeta 1.5.1, at src/Packetery/Module/Carrier/Options.php

192 lines 3.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Options class.
4 *
5 * @package Packetery
6 */
7
8 declare( strict_types=1 );
9
10
11 namespace Packetery\Module\Carrier;
12
13 use Packetery\Core\Rounder;
14
15 /**
16 * Options class.
17 */
18 class Options {
19
20 /**
21 * Option ID.
22 *
23 * @var string
24 */
25 private $optionId;
26
27 /**
28 * Options.
29 *
30 * @var array
31 */
32 private $options;
33
34 /**
35 * Constructor.
36 *
37 * @param string $optionId Option ID.
38 * @param array $options Options.
39 */
40 public function __construct( string $optionId, array $options ) {
41 $this->optionId = $optionId;
42 $this->options = $options;
43 }
44
45 /**
46 * Creates instance by option ID.
47 *
48 * @param string $optionId Option ID.
49 *
50 * @return static
51 */
52 public static function createByOptionId( string $optionId ): self {
53 $options = get_option( $optionId );
54 if ( empty( $options ) ) {
55 $options = [];
56 }
57
58 return new self( $optionId, $options );
59 }
60
61 /**
62 * Option ID.
63 *
64 * @return string
65 */
66 public function getOptionId(): string {
67 return $this->optionId;
68 }
69
70 /**
71 * Creates instance by carrier ID.
72 *
73 * @param string $carrierId Carrier ID.
74 *
75 * @return static
76 */
77 public static function createByCarrierId( string $carrierId ): self {
78 $optionId = OptionPrefixer::getOptionId( $carrierId );
79 return self::createByOptionId( $optionId );
80 }
81
82 /**
83 * Returns all options as assoc array.
84 *
85 * @return array
86 */
87 public function toArray(): array {
88 return $this->options;
89 }
90
91 /**
92 * Age verification fee.
93 *
94 * @return float|null
95 */
96 public function getAgeVerificationFee(): ?float {
97 $value = $this->options['age_verification_fee'] ?? null;
98 if ( is_numeric( $value ) ) {
99 return (float) $value;
100 }
101
102 return null;
103 }
104
105 /**
106 * Gets type of address validation. One of ['required', 'optional', 'none'].
107 *
108 * @return string
109 */
110 public function getAddressValidation(): string {
111 $none = 'none';
112 $value = $this->options['address_validation'] ?? $none;
113 if ( $value ) {
114 return $value;
115 }
116
117 return $none;
118 }
119
120 /**
121 * Gets custom carrier name.
122 *
123 * @return string|null
124 */
125 public function getName(): ?string {
126 return ( $this->options['name'] ?? null );
127 }
128
129 /**
130 * Tells if carrier is active.
131 *
132 * @return bool
133 */
134 public function isActive(): bool {
135 return $this->options['active'] ?? false;
136 }
137
138 /**
139 * Tells if carrier has coupon free shipping active.
140 *
141 * @return bool
142 */
143 public function hasCouponFreeShippingActive(): bool {
144 return $this->options['coupon_free_shipping']['active'] ?? false;
145 }
146
147 /**
148 * Tells if carrier has coupon free shipping for fees allowed.
149 *
150 * @return bool
151 */
152 public function hasCouponFreeShippingForFeesAllowed(): bool {
153 return $this->hasCouponFreeShippingActive() && ( $this->options['coupon_free_shipping']['allow_for_fees'] ?? false );
154 }
155
156 /**
157 * Gets default COD surcharge.
158 *
159 * @return float|null
160 */
161 public function getDefaultCODSurcharge(): ?float {
162 $value = $this->options['default_COD_surcharge'] ?? null;
163 if ( is_numeric( $value ) ) {
164 return (float) $value;
165 }
166
167 return null;
168 }
169
170 /**
171 * Tells if any COD surcharge was configured.
172 *
173 * @return bool
174 */
175 public function hasAnyCodSurchargeSetting(): bool {
176 if ( null !== $this->getDefaultCODSurcharge() ) {
177 return true;
178 }
179
180 return ! empty( $this->options['surcharge_limits'] );
181 }
182
183 /**
184 * Tells COD rounding type.
185 *
186 * @return int
187 */
188 public function getCodRoundingType(): int {
189 return $this->options['cod_rounding'] ?? Rounder::DONT_ROUND;
190 }
191 }
192