PluginProbe
Packeta / 1.4.3
Packeta v1.4.3
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.4.3, at src/Packetery/Module/Carrier/Options.php

165 lines 2.7 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\Module\Checkout;
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 = Checkout::CARRIER_PREFIX . $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 * Gets default COD surcharge.
140 *
141 * @return float|null
142 */
143 public function getDefaultCODSurcharge(): ?float {
144 $value = $this->options['default_COD_surcharge'] ?? null;
145 if ( is_numeric( $value ) ) {
146 return (float) $value;
147 }
148
149 return null;
150 }
151
152 /**
153 * Tells if any COD surcharge was configured.
154 *
155 * @return bool
156 */
157 public function hasAnyCodSurchargeSetting(): bool {
158 if ( null !== $this->getDefaultCODSurcharge() ) {
159 return true;
160 }
161
162 return ! empty( $this->options['surcharge_limits'] );
163 }
164 }
165