PluginProbe
Packeta / 2.3.2
Packeta v2.3.2
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
← All changes | src/Packetery/Module/Carrier/Repository.php +28 -57 1.5.32.3.2 View file →
@@ -18,10 +18,8 @@
18 18 * @package Packetery
19 19 */
20 20 class Repository {
21 21
22 - public const INTERNAL_PICKUP_POINTS_ID = 'packeta';
23 -
24 22 private const COLUMN_NAMES = [
25 23 'id',
26 24 'name',
27 25 'is_pickup_points',
@@ -35,8 +33,9 @@
35 33 'country',
36 34 'currency',
37 35 'max_weight',
38 36 'deleted',
37 + 'available',
39 38 ];
40 39
41 40 /**
42 41 * WpdbAdapter object from global
@@ -45,26 +44,16 @@
45 44 */
46 45 private $wpdbAdapter;
47 46
48 47 /**
49 - * Internal pickup points config.
50 - *
51 - * @var PacketaPickupPointsConfig
52 - */
53 - private $pickupPointsConfig;
54 -
55 - /**
56 48 * Repository constructor.
57 49 *
58 - * @param WpdbAdapter $wpdbAdapter WpdbAdapter.
59 - * @param PacketaPickupPointsConfig $pickupPointsConfig Internal pickup points config.
50 + * @param WpdbAdapter $wpdbAdapter WpdbAdapter.
60 51 */
61 52 public function __construct(
62 - WpdbAdapter $wpdbAdapter,
63 - PacketaPickupPointsConfig $pickupPointsConfig
53 + WpdbAdapter $wpdbAdapter
64 54 ) {
65 - $this->wpdbAdapter = $wpdbAdapter;
66 - $this->pickupPointsConfig = $pickupPointsConfig;
55 + $this->wpdbAdapter = $wpdbAdapter;
67 56 }
68 57
69 58 /**
70 59 * Create table to store carriers.
@@ -71,9 +60,9 @@
71 60 *
72 61 * @return bool
73 62 */
74 63 public function createOrAlterTable(): bool {
75 - $createTableQuery = 'CREATE TABLE ' . $this->wpdbAdapter->packetery_carrier . ' (
64 + $createTableQuery = 'CREATE TABLE ' . $this->wpdbAdapter->packeteryCarrier . ' (
76 65 `id` int(11) NOT NULL,
77 66 `name` varchar(255) NOT NULL,
78 67 `is_pickup_points` tinyint(1) NOT NULL,
79 68 `has_carrier_direct_label` tinyint(1) NOT NULL,
@@ -85,23 +74,17 @@
85 74 `disallows_cod` tinyint(1) NOT NULL,
86 75 `country` varchar(255) NOT NULL,
87 76 `currency` varchar(255) NOT NULL,
88 77 `max_weight` float NOT NULL,
78 + `available` tinyint(1) NOT NULL DEFAULT 1,
89 79 `deleted` tinyint(1) NOT NULL,
90 80 PRIMARY KEY (`id`)
91 81 ) ' . $this->wpdbAdapter->get_charset_collate();
92 82
93 - return $this->wpdbAdapter->dbDelta( $createTableQuery, $this->wpdbAdapter->packetery_carrier );
83 + return $this->wpdbAdapter->dbDelta( $createTableQuery, $this->wpdbAdapter->packeteryCarrier );
94 84 }
95 85
96 86 /**
97 - * Drop table used to store carriers.
98 - */
99 - public function drop(): void {
100 - $this->wpdbAdapter->query( 'DROP TABLE IF EXISTS `' . $this->wpdbAdapter->packetery_carrier . '`' );
101 - }
102 -
103 - /**
104 87 * Gets is_pickup_point attribute of a carrier.
105 88 *
106 89 * @param int $carrierId Carrier id.
107 90 *
@@ -108,9 +91,9 @@
108 91 * @return bool
109 92 */
110 93 public function hasPickupPoints( int $carrierId ): bool {
111 94 return (bool) $this->wpdbAdapter->get_var(
112 - $this->wpdbAdapter->prepare( 'SELECT `is_pickup_points` FROM `' . $this->wpdbAdapter->packetery_carrier . '` WHERE `id` = %d', $carrierId )
95 + $this->wpdbAdapter->prepare( 'SELECT `is_pickup_points` FROM `' . $this->wpdbAdapter->packeteryCarrier . '` WHERE `id` = %d', $carrierId )
113 96 );
114 97 }
115 98
116 99 /**
@@ -117,15 +100,15 @@
117 100 * Gets Carrier value object by id.
118 101 *
119 102 * @param int $carrierId Carrier id.
120 103 *
121 - * @return array|null
104 + * @return array<string, string>|null
122 105 */
123 106 public function getById( int $carrierId ): ?array {
124 107 return $this->wpdbAdapter->get_row(
125 108 $this->wpdbAdapter->prepare(
126 109 'SELECT `' . implode( '`, `', self::COLUMN_NAMES ) . '`
127 - FROM `' . $this->wpdbAdapter->packetery_carrier . '` WHERE `id` = %s',
110 + FROM `' . $this->wpdbAdapter->packeteryCarrier . '` WHERE `id` = %s',
128 111 $carrierId
129 112 ),
130 113 ARRAY_A
131 114 );
@@ -134,16 +117,18 @@
134 117 /**
135 118 * Gets all active carriers for a country.
136 119 *
137 120 * @param string $country ISO code.
121 + * @param bool $includeUnavailable Include unavailable carriers.
138 122 *
139 123 * @return array|null
140 124 */
141 - public function getByCountry( string $country ): ?array {
125 + public function getByCountry( string $country, bool $includeUnavailable ): ?array {
142 126 return $this->wpdbAdapter->get_results(
143 127 $this->wpdbAdapter->prepare(
144 128 'SELECT `' . implode( '`, `', self::COLUMN_NAMES ) . '`
145 - FROM `' . $this->wpdbAdapter->packetery_carrier . '` WHERE `country` = %s AND `deleted` = false',
129 + FROM `' . $this->wpdbAdapter->packeteryCarrier . '` WHERE `country` = %s AND `deleted` = false' .
130 + ( $includeUnavailable ? '' : ' AND `available` = true' ),
146 131 $country
147 132 ),
148 133 ARRAY_A
149 134 );
@@ -156,9 +141,9 @@
156 141 */
157 142 public function getActiveCarriers(): ?array {
158 143 return $this->wpdbAdapter->get_results(
159 144 'SELECT `' . implode( '`, `', self::COLUMN_NAMES ) . '`
160 - FROM `' . $this->wpdbAdapter->packetery_carrier . '` WHERE `deleted` = false',
145 + FROM `' . $this->wpdbAdapter->packeteryCarrier . '` WHERE `deleted` = false AND `available` = true',
161 146 ARRAY_A
162 147 );
163 148 }
164 149
@@ -164,14 +149,14 @@
164 149
165 150 /**
166 151 * Gets all carriers.
167 152 *
168 - * @return array[]
153 + * @return array<int, array<string, string|float|bool>>
169 154 */
170 155 public function getAllRawIndexed(): array {
171 156 $unIndexedResult = $this->wpdbAdapter->get_results(
172 157 'SELECT `' . implode( '`, `', self::COLUMN_NAMES ) . '`
173 - FROM `' . $this->wpdbAdapter->packetery_carrier . '`',
158 + FROM `' . $this->wpdbAdapter->packeteryCarrier . '`',
174 159 ARRAY_A
175 160 );
176 161
177 162 return array_combine( array_column( $unIndexedResult, 'id' ), $unIndexedResult );
@@ -182,9 +167,9 @@
182 167 *
183 168 * @return bool
184 169 */
185 170 public function hasAnyActiveFeedCarrier(): bool {
186 - return (bool) $this->wpdbAdapter->get_var( 'SELECT 1 FROM `' . $this->wpdbAdapter->packetery_carrier . '` WHERE `deleted` = false LIMIT 1' );
171 + return (bool) $this->wpdbAdapter->get_var( 'SELECT 1 FROM `' . $this->wpdbAdapter->packeteryCarrier . '` WHERE `deleted` = false AND `available` = true LIMIT 1' );
187 172 }
188 173
189 174 /**
190 175 * Gets all active countries.
@@ -190,10 +175,10 @@
190 175 * Gets all active countries.
191 176 *
192 177 * @return array
193 178 */
194 - public function getCountries(): array {
195 - return $this->wpdbAdapter->get_col( 'SELECT `country` FROM `' . $this->wpdbAdapter->packetery_carrier . '` WHERE `deleted` = false GROUP BY `country` ORDER BY `country`' );
179 + public function getCountriesWithUnavailable(): array {
180 + return $this->wpdbAdapter->get_col( 'SELECT `country` FROM `' . $this->wpdbAdapter->packeteryCarrier . '` WHERE `deleted` = false GROUP BY `country` ORDER BY `country`' );
196 181 }
197 182
198 183 /**
199 184 * Set carriers specified by ids as deleted.
@@ -201,9 +186,9 @@
201 186 * @param array $carrierIdsNotInFeed Carriers not in feed.
202 187 */
203 188 public function set_as_deleted( array $carrierIdsNotInFeed ): void {
204 189 $this->wpdbAdapter->query(
205 - 'UPDATE `' . $this->wpdbAdapter->packetery_carrier . '`
190 + 'UPDATE `' . $this->wpdbAdapter->packeteryCarrier . '`
206 191 SET `deleted` = 1 WHERE `id` IN (' . implode( ',', $carrierIdsNotInFeed ) . ')'
207 192 );
208 193 }
209 194
@@ -210,11 +195,12 @@
210 195 /**
211 196 * Inserts carrier data to db.
212 197 *
213 198 * @param array $data Carrier data.
199 + * @return int|false The number of rows inserted, or false on error.
214 200 */
215 - public function insert( array $data ): void {
216 - $this->wpdbAdapter->insert( $this->wpdbAdapter->packetery_carrier, $data );
201 + public function insert( array $data ) {
202 + return $this->wpdbAdapter->insert( $this->wpdbAdapter->packeteryCarrier, $data );
217 203 }
218 204
219 205 /**
220 206 * Updates carrier data in db.
@@ -219,26 +205,11 @@
219 205 /**
220 206 * Updates carrier data in db.
221 207 *
222 208 * @param array $data Carrier data.
223 - * @param int $carrier_id Carrier id.
209 + * @param int $carrierId Carrier id.
210 + * @return int|false The number of rows updated, or false on error.
224 211 */
225 - public function update( array $data, int $carrier_id ): void {
226 - $this->wpdbAdapter->update( $this->wpdbAdapter->packetery_carrier, $data, [ 'id' => $carrier_id ] );
212 + public function update( array $data, int $carrierId ) {
213 + return $this->wpdbAdapter->update( $this->wpdbAdapter->packeteryCarrier, $data, [ 'id' => $carrierId ] );
227 214 }
228 -
229 - /**
230 - * Checks if carrier is home delivery carrier.
231 - *
232 - * @param string $carrierId Carrier ID.
233 - *
234 - * @return bool
235 - */
236 - public function isHomeDeliveryCarrier( string $carrierId ): bool {
237 - if ( self::INTERNAL_PICKUP_POINTS_ID === $carrierId ) {
238 - return false;
239 - }
240 -
241 - return false === $this->hasPickupPoints( (int) $carrierId );
242 - }
243 -
244 215 }